4.3.3 SAMLレスポンスの生成
4.3.3 SAMLレスポンスの生成
社内ポータル(Identity Provider)は、下記のようなSAMLレスポンスを生成します。
| ポイント(6) | SAMLでは、Identity Providerが、認証情報(ユーザーはどのような方法で認証されたかなど)をアサーション(Assertion)と呼ばれるXMLで作成します。 SAMLでは、アサーションを相手サイトに渡す場合、認証レスポンス(Response)と呼ばれるXMLでさらに包みます。 各電文のXML形式は、SAMLの「Core」仕様書に記述されています。 |
|---|
次に、Identity Providerは、認証レスポンスが改ざんされないように認証レスポンスに、XML署名と呼ばれる方法で署名を付けます。この署名には最初に作成した秘密鍵を使用します。
| ポイント(7) | SAMLでは、社内ポータル(Identity Provider)からsalesforce(Service Provider)へ送る認証レスポンスには、XML署名を必ず付けます。 XML署名を付けることで、悪意のあるユーザーが認証レスポンスを改ざんすることを防ぎます。 |
|---|
4.3.4 SAMLレスポンスの送信
社内ポータル(Identity Provider)は、上記で作成した認証レスポンス(XML)をBASE64でエンコード後、下記のようなHTMLを使用し、ブラウザ経由で、salesforce(Service Provider)へ認証レスポンス(XML)転送します。
| ポイント(8) | SAMLでは、社内ポータル(Identity Provider)からsalesforce(Service Provider)へ、ブラウザを経由して認証レスポンスを送信します。 電文を送信する方法は、SAMLの「Bindings」仕様書に記述されています。 |
|---|
| ポイント(9) | 認証レスポンスの送信にJavaScriptを使用することで、ユーザーは、ブラウザが認証レスポンスを送信していることを意識する必要はありません。 |
|---|
4.3.5 認証連携の完了
salesforce(Service Provider)は、社内ポータル(Identity Provider)からの認証レスポンスを、ブラウザを経由して受信します。salesforceは、認証レスポンスの署名を検証し、次に、SAMLレスポンス内の認証情報を確認します。認証情報に問題なければ、以降からユーザーがsalesforceのコンテンツにアクセスすることを許可します。
5. Google Appsとの認証連携
次に、Google Apps(Service Provider)との認証連携について説明します。基本的にはsalesforceと同じです。Google Appsの場合は、下記のようにSAMLリクエストを送信する点だけが異なります。
| 図7:Google Appsへ認証連携するシーケンス(クリックで拡大) |
Google Appsが送信するSAMLリクエストは、以下のような電文です。
上記の電文はDEFLATE圧縮アルゴリズムとBASE64でエンコードされています。デコードすると以下のXMLになります。
| ポイント(10) | SAMLでは、認証連携を開始する方法として、「SP-Initiated SSO」と「IdP-Initiated SSO」の2種類があります。これは、SAMLの電文がどちらから始まるかで区別されます*2。 salesforceでは社内ポータル(Identity Provider)からSAMLの電文が始まっているため「IdP-Initiated SSO」です*3。Google Appsでは、Google Apps(Service Provider)からSAMLの電文が始まっているので「SP-Initiated SSO」です。 |
|---|
- [*2] ブラウザがIdentity Provider、Service Providerのどちらに「最初にアクセスしたか」ではない点にご注意ください。あくまでも、SAMLの電文を最初に発行した(=SAMLとして認証連携のトリガーを引いた)点が基準になります。
- [*3] salesforceは部分的にSP-Initiated SSOにも対応しています。
6. まとめ
この記事では、以下を説明しました。
- クラウドとの認証連携について
- クラウドとの認証連携に使用される技術
- SAMLの動作とポイント
この記事が、クラウドとの認証連携とSAMLの理解にお役に立てれば幸いです。
7. HP IceWall Federationのご紹介
この記事によりSAMLの具体的な動作は理解していただけたと思います。とはいえ、詳細を理解するにはSAMLの仕様書を読む必要があります。そこで、筆者の所属する日本HPでは、salesforceやGoogle Appsなど、それぞれのサービスとの認証連携に特化したアプリケーションとして、HP IceWallを開発しました。これにより、SAMLを意識せずに社内(学内)システムから認証連携ができます。ご興味にある方はこちらをご覧いただければと思います。
| 図8:HP HP IceWall Federationの導入例(クリックで拡大) |
次回はクラウドの活用事例についてご紹介します
- この記事のキーワード


