pikesaku’s blog

個人的な勉強メモです。記載内容について一切の責任は持ちません。

SAML2.0について

メモ

連携に必要な情報

注: このプロセスが開始される前に、パートナーは GoogleSSO サービスの URL とともに Google SAML レスポンスを確認するのに使う公開鍵を提供しなければなりません。

図(引用)

f:id:pikesaku:20200518003602p:plain


★認証リクエスト・結果はブラウザ経由でSP、IdPへ送られる★
★SPはブラウザが提供するIdP認証結果をデジタル署名で検証する→SPにIdPの公開鍵の事前登録が要★
★SPに設定する情報は以下★
 IdPの公開鍵
 IdPのURL
★IdPに設定する情報は以下★
 ACS(SAMLレスポンスを認証するSPのURL)
 鍵ペア、デジタル署名設定
★Assertionは、認証情報等をXMLで表現したもので、SAMLレスポンスに含まれる。

図説明(引用 & コメント追加)

2. GoogleSAML 認証リクエストを生成します。SAML リクエストはエンコードされ、パートナーの SSO サービスの URL に埋め込まれます。SSO URL には RelayState パラメータも埋め込まれます。このパラメータは、ユーザーがアクセスしようとしている Google アプリケーションのエンコードされた URLを含み、変更や検査なしで送り返される不透明な識別子です。

IdPへのリダイレクトURLに以下情報が含まれる。(エンコードはされる)
SAML認証リクエス
・SPのURL

4. パートナーは SAML リクエストをデコードし、GoogleACS(Assertion Consumer Service)とユーザーの宛先 URL(RelayState パラメータ)のために URL を抽出してから、ユーザーを認証します。パートナーは、有効なログイン認証情報を要求するか、有効なセッション クッキーを確認してユーザーを認証します。

ACSとは?SAMLレスポンスの送信先
セッションクッキー?どんな使い方?→IdPにログイン済みか判断

5. パートナーは、認証されたユーザーのユーザー名が含まれる SAML レスポンスを生成します。このレスポンスは、SAML 2.0 の仕様に従ってパートナーの DSA または RSA の公開鍵と秘密鍵でデジタル署名されます。

SAMLレスポンスがIdPの秘密鍵でデジタル署名される。

6. パートナーは SAML レスポンスと RelayState パラメータをエンコードして、その情報をユーザーのブラウザに返します。パートナーが提供するメカニズによって、ブラウザはその情報を GoogleACS に転送できます。たとえば、パートナーは SAML レスポンスと宛先 URL をフォームに埋め込み、クリックすると Google にフォームが送信されるボタンを表示することができます。また、自動的にフォームを Google に送信する JavaScript をページに含めることも可能です。

ブラウザに以下情報が渡される(エンコードはされる)
SAMLレスポンス
 ※ACSは通常SAMLレスポンスに含まれる。
・SPのURL

7. GoogleACS は、パートナーの公開鍵を使用して SAML レスポンスを確認します。レスポンスが正常に確認されると、ACS は宛先 URL にユーザーをリダイレクトします。

ACSが"SPのURL"に最終的にリダイレクトさせる。