SAML の SP-initiated SSO
SAML 2.0 の SP-initiated SSO を導入しており,認証要求は HTTP Redirect バインディングで,応答は HTTP POST バインディングで送る。利用者は SP-A の利用時に IdP で認証済みであり,IdP とのセッションは有効である。この利用者が初めて SP-B にアクセスしたときの処理として,適切なものはどれか。ここで,認証要求に ForceAuthn は指定しない。
- アSP-B は,ブラウザが保持している IdP のセッション Cookie を受け取り,その値を IdP に照会して利用者をログインさせる。
- イSP-B は認証要求をブラウザ経由で IdP に送り,IdP は既存のセッションで利用者を識別して,SP-B 向けのアサーションを含む応答をブラウザ経由で SP-B に送る。
- ウSP-B は SP-A に利用者の認証状態を問い合わせ,SP-A が IdP から受け取ったアサーションの転送を受けて,その署名を検証してログインさせる。
- エIdP は利用者にパスワードの再入力を求め,入力されたパスワードをアサーションに含めて SP-B に送り,SP-B がそのパスワードを照合する。
正解と解説を見る
正解 イ
この問題の基礎知識
- SAML では,利用者を認証して認証結果などを記述したアサーションを発行する IdP と,アサーションを検証してサービスを提供する SP が役割を分担する。
- HTTP Redirect バインディングや HTTP POST バインディングでは,SP の認証要求も IdP の応答もブラウザを経由して送られ,SP と IdP は直接通信しない。
- Cookie はブラウザが発行元のドメインにだけ送るので,ドメインの異なるサイト間で認証結果を伝えるには,IdP が発行するアサーションを用いる。
- アサーションの Audience には宛先の SP の識別子が入り,SP は署名や Audience を検証して受け入れる。ForceAuthn は,既存のセッションによらず改めて認証することを IdP に求める指定である。
ブラウザは Cookie を発行元のドメインに対してだけ送るので,ドメインの異なる SP-B は IdP のセッション Cookie を受け取れない。ドメインをまたいで認証結果を伝えるために,IdP が発行するアサーションが用いられる。
ForceAuthn が指定されていなければ,IdP は既存の認証済みセッションを再利用して利用者を識別できる。HTTP POST バインディングでは応答又はアサーションへの署名が必須で,アサーションの Audience には SP-B が指定される。SP-B は署名を検証してログインさせるので,パスワードの再入力は不要である。
SP 同士でアサーションを受け渡す手順はない。SP-A 向けのアサーションは Audience に SP-A が指定されているので,SP-B はこれを受け入れてはならず,自身を Audience とするアサーションを IdP から受け取る必要がある。
SAML では利用者のパスワードは SP に渡されず,SP は IdP の認証結果を記述したアサーションを検証する。また,ForceAuthn が指定されていなければ,IdP は既存のセッションを再利用でき,再入力を求める必要はない。
照合の根拠(6 件)
- イ(正解)・エ(誤り): ForceAuthn が true でなければ IdP は既存のセッションに依拠でき,再入力は必須でない(次行は "rather than relying on an existing session it may have with the principal")
attribute, if present with a value of true, obligates the identity provider to freshly establish this identity,
SAML V2.0 Profiles · Section 4.1.3.4(新しいタブで開きます) - イ(正解): HTTP POST バインディングでは応答又はアサーションへの署名が必須(原版 4.1.3.5 のアサーション署名必須を errata が緩和)
<Response> or the <Assertion> element(s) in the <Response> MUST be signed, if the HTTP POST
SAML V2.0 Approved Errata · E93(Profiles 4.1.3.5 の変更)(新しいタブで開きます) - イ(正解)・ウ(誤り): アサーションの Audience には宛先の SP(SP-B)の識別子が入る
<AudienceRestriction> including the service provider's unique identifier as an <Audience>.
SAML V2.0 Profiles · Section 4.1.4.2(新しいタブで開きます) - ウ(誤り): SP-A を Audience とするアサーションは SP-B にとって有効にならないので,SP-A から転送を受けて使うことはできない
The audience restriction condition evaluates to Valid if and only if the SAML relying party is a member of
SAML V2.0 Core · Section 2.5.1.4(新しいタブで開きます) - エ(誤り): アサーションが伝えるのは IdP による認証の事実(認証の方法と時刻)であり,SP が照合するパスワードではない
The <AuthnStatement> element describes a statement by the SAML authority asserting that the
SAML V2.0 Core · Section 2.7.2(新しいタブで開きます) - ア(誤り): Cookie は発行元(又は Domain 属性の範囲)にだけ送られ,別ドメインの SP-B は IdP の Cookie を受け取れない
If the server omits the Domain attribute, the user agent will return the cookie only to the origin server.
RFC 6265 · Section 4.1.2.3(新しいタブで開きます)
SP-initiated SSO の流れは Profiles 4.1.3(SP-B の AuthnRequest → IdP が利用者を識別 → Response を POST で SP-B へ)。原版 4.1.3.5 はアサーションへの署名を必須としていたが,承認済み errata で「Response 又はアサーションのどちらかに署名」に変わったため,イの選択肢文から「署名付きアサーション」の限定を外し,解説を errata に合わせた。