Oracle® Fusion Middleware Oracle Access Management管理者ガイド 11g リリース2 (11.1.2.3) for All Platforms E61950-08 |
|
![]() 前 |
![]() 次 |
次の各トピックでは、Webサービス・セキュリティのOn Behalf Ofユーザー名トークンについて説明します。
ここでは、ユーザー名トークンを使用してユーザーのアイデンティティが伝播される場合に、コンポーネントがどのように相互作用するかのプロセス概要を示します。
ユーザーが保護されたリソースにアクセスを試みます。
ユーザーが認証されます。
WebLogicコンテナでは、ユーザーのアイデンティティがこのセッションのサブジェクトに設定されます。
最終的にリソースにアクセスした時点で、Webサービス・クライアントは現在のユーザー・サブジェクトからユーザーのアイデンティティを取得し、そのアイデンティティを使用してOnBehalfOf (OBO)トークンを生成した後、リクエスト・セキュリティ・トークン(RST)を作成してSecurity Token Serviceに送信します。
Security Token Serviceでは、Webサービス・クライアントをリクエスタ・パートナとして認証します。
Security Token ServiceではOBOトークン内にユーザー名トークンが表示され、ユーザーのアイデンティティがLDAP内のユーザー・レコードにマップされます。
その後、Security Token Serviceではリクエスト・セキュリティ・トークン・レスポンスが生成されます。
Security Token Serviceでは、クライアントにリクエスト・セキュリティ・トークン・レスポンスが送信されます。クライアントはリクエスト・セキュリティ・トークン・レスポンス(RSTR)内のトークンを使用して、リライイング・パーティがホストするサービスにアクセスするためのWebサービス・リクエストを作成できます。
着信リクエスト・セキュリティ・トークン(RST)の場合、リクエストを処理し、トークンを発行するようにOracle Security Token Serviceを構成する必要があります。
次の各トピックでは、ユーザー名トークンを使用したアイデンティティ伝播のRST属性および処理について説明します。
ユーザー名トークンを使用してID伝播のRST属性を適用できます。
SOAPヘッダーには、WSリクエスタを参照するユーザー名トークンが含まれています。ユーザー名トークンには、少なくとも1つのユーザー名とパスワードが含まれています。
SOAP本体にはWS-Trust RSTメッセージが含まれています。
RSTには、LDAP内のユーザーを参照するOnBehalfOfフィールドにユーザー名トークンが含まれています。
RSTには、リライイング・パーティWebサービスのエンドポイントを示すURLを保持するAppliesToフィールドが含まれている可能性があります。
RSTには、返す必要があるトークンのタイプを保持するTokenTypeフィールドが含まれている可能性があります。
RSTには、SAMLアサーションに対称証明キーが必要な場合にSecretKeyを作成するときに使用されるランダム・データを保持するEntropyフィールドが含まれている可能性があります。
RSTには、SAMLアサーションの非対称証明キーとして使用される証明書または公開キーを保持するUseKeyフィールドが含まれている可能性がありますが、このフィールドはSecurity Token Serviceでは無視されます。
クライアントでは、セキュリティ・トークン・サービスへのリクエストを準備して送信します。クライアントへのレスポンスを作成する前に、セキュリティ・トークン・サービスでは、トークンを検証し、必要に応じてトークンを作成します。
クライアントは次の方法でリクエストを準備します。
SOAPメッセージを作成します。
クライアントを参照し、SOAPヘッダー内にそのクライアントを含むユーザー名トークンを作成します。
WS-Trust RSTメッセージを作成します。
ユーザーを参照し、そのユーザーをRSTのOnBehalfOfフィールドに含むユーザー名トークンを作成します。
SOAP本体にRSTメッセージを含めます。
クライアントはSecurity Token Service、WS-Securityユーザー名トークン(UNT)ポリシーで保護されたエンドポイントにメッセージを送信し、そのエンドポイントをSecurity Token Service WSS検証テンプレートにマップします。
Security Token Serviceでは着信リクエストが処理されます。
Security Token Serviceは、WS-Security検証テンプレートに含まれる設定を使用してSOAPヘッダー内のトークンを検証します。
ユーザー名トークンのフォーマットを検証します。
ユーザー名トークンに含まれる資格証明とSecurity Token Serviceパートナ・ストアを比較することで、このトークンをリクエスタ・パートナにマップします。
リクエスタ・パートナを確認した後、Security Token Serviceはこのリクエスタに関連付けられたリクエスタ・パートナ・プロファイルを取得します。
Security Token Serviceでは、OnBehalfOfフィールドに存在するトークンが検証されます。
OnBehalfOfフィールドに存在するトークンのタイプを判断します。
ユーザー名トークン・タイプに使用されるWS-Trust検証テンプレートをリクエスタ・パートナ・プロファイルから取得します。
ユーザー名トークンを検証し、トークンをユーザーにマップします。
Security Token ServiceではAppliesToフィールドが検査されます。
存在する場合、Security Token Serviceはリライイング・パーティ・パートナのWSエンドポイント・マッピングを使用して、リライイング・パーティ・パートナへのAppliesTo URLへのマップを試行します。マッピングに成功した場合、AppliesToフィールドはリライイング・パーティ・パートナにマップされ、Security Token Serviceはこのパートナからリライイング・パーティ・パートナ・プロファイルを取得します。マッピングに失敗した場合、AppliesToフィールドはリライイング・パーティ・パートナにマップされず、Security Token Serviceはこのリクエスタ・パートナ・プロファイルからデフォルト・リライイング・パーティ・パートナ・プロファイルを取得します。
存在しない場合、Security Token Serviceはリクエスタ・パートナ・プロファイルからデフォルト・リライイング・パーティ・パートナ・プロファイルを取得します。
Security Token ServiceではTokenTypeフィールドが検査されます。
存在する場合、Security Token Serviceはリクエスタ・パートナ・プロファイルを使用してTokenType文字列をローカル・トークン・タイプ値にマップし、リライイング・パーティ・パートナ・プロファイルを使用して、送信トークンの作成に使用される発行テンプレートを取得します。
存在しない場合、Security Token Serviceはリライイング・パーティ・パートナ・プロファイルからデフォルト・トークン・タイプを取得し、リライイング・パーティ・パートナ・プロファイルを使用して、送信トークンの作成に使用される発行テンプレートを取得します。
Security Token Serviceでは認証評価が行われ、リクエスタ・パートナが、フローで参照されるリライイング・パーティのトークンのリクエストを許可されていることが確認されます(詳細は「認可信頼ポリシー」を参照)。
Security Token Serviceではトークンが作成されます。
発行されるトークンがSAMLタイプの場合、発行テンプレートには名前IDの移入方法がリストされ、リライイング・パーティ・パートナ・プロファイルにはトークンで送信する必要がある属性がリストされます。発行テンプレートは、属性の名前および値を変換する必要があるかどうかを示します。発行テンプレートは、トークンの署名/暗号化を実行するかどうかを示します。
発行されるトークンがSAMLタイプの場合、Security Token ServiceサーバーはKeyTypeを調べて、アサーションのサブジェクト確認メソッドを判断します。存在しない場合は、発行テンプレートからデフォルトの確認メソッドが使用されます。
Security Token Serviceでは、クライアントが処理するレスポンスが作成されます。
WS-Trust RSTRCを作成します。
返されたトークンを追加します。
必要に応じて証明キーを追加します。
次の各トピックでは、アイデンティティ伝播シナリオの構成要件について説明します。
ユーザー名トークンを使用してアイデンティティ伝播の環境を構成できます。
アイデンティティ伝播の環境と実装タスクの概要を次に示します。
ユーザーがリクエストするWebアプリケーション。このWebアプリケーションはユーザーを認証した後、リモートWebサービス・プロバイダへのSOAPメッセージの送信を試行します。そのSOAP交換の一部として、WS-SecurityクライアントはWebサービス・プロバイダのWS-Securityポリシーをダウンロードし、Security Token Serviceに接続してWebサービス・プロバイダがリクエストしたトークンを取得し、Webサービス・プロバイダにSOAPメッセージを含むセキュリティ・トークンを送信します。
セキュリティ・トークン・サービスURL: http://myhost.domain.com:14100/sts/<endpoint>
ノート:
<endpoint>を「STSエンドポイント」の項で構成したパスに置換します。
アイデンティティ伝播のトークン処理を実装するには、次のSecurity Token Service構成が必要です。
1つのリクエスタ・パートナ・プロファイル
1つのリライイング・パーティ・パートナ・プロファイル
1つの発行テンプレート
1つのWS-Trust検証テンプレート
Security Token Serviceのエンドポイント
ユーザーを参照するユーザー名トークンをLDAPユーザー・レコードにマップし、そのレコードを使用して送信トークンを移入するために、Security Token ServiceにはLDAPサーバーが必要です。
目的のLDAPサーバーが、Access Managerのデフォルト・アイデンティティ・ストアとして構成されていることを確認します。
IAM Suiteアプリケーション・ドメイン内にリソースURLのトークン発行ポリシーを作成する必要があります。
IAMSuiteアプリケーション・ドメイン内にリソースURLのトークン発行ポリシーを作成します。
図42-13は、「トークン発行ポリシー」ページのスクリーンショットです。
/wss11userエンドポイントが必要です。
これは、RSTをポストするためにWebアプリケーションで使用できるエンドポイントです。
図42-14に、エンドポイントを示します。このエンドポイントは、RSTをポストするためにWebアプリケーションで使用されるデフォルトのWS-Security検証テンプレートで保護されます。
発行テンプレートには、トークン・タイプや署名キーIDなどのアイデンティティ伝播用の構成パラメータが必要です。
必要な構成は次のとおりです。
名前: saml-issuance-template
説明: SAML発行テンプレート
トークン・タイプ: SAML 2.0
署名キーID: osts_signing
OAMトークンを使用してアイデンティティ伝播用の新しいリクエスタ・パートナ構成を作成できます。
作成するには、次のようにします。
パートナ名: requester-partner
パートナ・タイプ: リクエスタ
パートナ・プロファイル: requester-profile
説明: リクエスタ
信頼
ユーザー名トークン認証
ユーザー名 <Webサービス・クライアントで使用されるユーザー名を入力>
パスワード <Webサービス・クライアントで使用されるパスワードを入力>
パスワードの確認 <Webサービス・クライアントで使用されるパスワードを入力>
アイデンティティ属性の値:
httpbasicusername
sslclientcertdn
アイデンティティ伝播用の新しいリライイング・パーティ・プロファイルを作成できます。
新しいリライイング・パーティ・パートナ・プロファイルを作成するには、次のようにします。
プロファイルID: relying-party-profile
説明: リライイング・パーティ・プロファイル
デフォルト・トークン・タイプ: SAML 2.0
発行テンプレート: SAML 2.0のiap-issuance-template
アイデンティティ伝播用の新しいリクエスタ・プロファイルを作成できます。
次のように、新しいリクエスタ・パートナ・プロファイルを作成します。
プロファイルID: requester-profile
説明: リクエスタ・パートナ・プロファイル
デフォルト・リライイング・パーティ・プロファイル: relying-party-profile
WS-TRUSTの検証テンプレートには、トークン・タイプや資格証明検証の有効化などのアイデンティティ伝播用の構成パラメータが必要です。
必要な構成パラメータは次のとおりです。
検証テンプレート名: username_wstrust_validation_template
説明: ユーザー名WS-Trustテンプレート
トークン・プロトコル: WS-Trust
トークン・タイプ: ユーザー名
タイムスタンプの存続期間: 600
資格証明検証の有効化: 選択解除
トークン・マッピング:
トークンの宛先ユーザーのマップ: 選択
簡易ユーザー・マッピングの有効化: 選択
データストア属性: uid
交換のサンプル: クライアントによって送信されるリクエスト・セキュリティ・トークン
これは、クライアントによって送信されるセキュリティ・トークンのリクエストです。
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"> <SOAP-ENV:Header><wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> <wsse:UsernameToken><wsse:Username>requester-test</wsse:Username><wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">welcome1</wsse:Password></wsse:UsernameToken></wsse:Security> <wsa:Action xmlns:wsa="http://www.w3.org/2005/08/addressing">http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/Issue</wsa:Action></SOAP-ENV:Header> <SOAP-ENV:Body><wst:RequestSecurityToken xmlns:wst="http://docs.oasis-open.org/ws-sx/ws-trust/200512"><wst:RequestType>http://docs.oasis-open.org/ws-sx/ws-trust/200512/Issue</wst:RequestType> <wst:TokenType>http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV1.1</wst:TokenType><wst:OnBehalfOf> <wsse:UsernameToken xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"><wsse:Username>user-alice</wsse:Username> </wsse:UsernameToken></wst:OnBehalfOf></wst:RequestSecurityToken></SOAP-ENV:Body></SOAP-ENV:Envelope>
これで、ユーザー名トークンのシナリオを使用したアイデンティティ伝播の構成要件は完了です。
セキュリティ・トークン・サービスによって送信されるリクエスト・セキュリティ・トークン・レスポンス
セキュリティ・トークン・サービスによって送信されるRSTへのレスポンスを次に示します。
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"><env:Header><Action xmlns="http://www.w3.org/2005/08/addressing">http://docs.oasis-open.org/ws-sx/ws-trust/200512/RSTRC/IssueFinal</Action> </env:Header><env:Body><wst:RequestSecurityTokenResponseCollection xmlns:ns6="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsa="http://www.w3.org/2005/08/addressing" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wst="http://docs.oasis-open.org/ws-sx/ws-trust/200512" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> <wst:RequestSecurityTokenResponse><wst:TokenType>http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV1.1</wst:TokenType><wst:RequestedSecurityToken><saml:Assertion AssertionID="id-1LNkSUVcpbH7O0oQwbHJ5JOd5fs-" IssueInstant="2011-04-22T18:48:05Z" Issuer="myhost.uk.example.com" MajorVersion="1" MinorVersion="1" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:enc="http://www.w3.org/2001/04/xmlenc#" xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <saml:Conditions NotBefore="2011-04-22T18:48:05Z" NotOnOrAfter="2011-04-22T19:48:05Z"/><saml:AttributeStatement><saml:Subject><saml:NameIdentifier Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress">user-alice@example.com</saml:NameIdentifier><saml:SubjectConfirmation> <saml:ConfirmationMethod>urn:oasis:names:tc:SAML:1.0:cm:sender-vouches</saml:ConfirmationMethod></saml:SubjectConfirmation> </saml:Subject><saml:Attribute AttributeName="sn" AttributeNamespace="urn:oracle:security:fed:attrnamespace"><saml:AttributeValue xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">user-alice-last</saml:AttributeValue></saml:Attribute> </saml:AttributeStatement><dsig:Signature><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> <dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><dsig:Reference URI="#id-1LNkSUVcpbH7O0oQwbHJ5JOd5fs-"><dsig:Transforms><dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <dsig:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> <dsig:DigestValue>1GF2ZT9h+gs8sxyO+/yG/N6jxk8=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo> <dsig:SignatureValue>InZVb5aRM5+KKI1VqXg9HiIgLjKyGm0VkD6sMJ/8SIbFbbxuNm7Mnky5W35p2P0c5bCPRx02uzLEE4KhLkyM2GsLsVaDNkRztGMphQW/Mcg7DprJIEyR2OYMYDOQSipa/k2K98C4zO/RNivo1KvyJsd6a3h6CBHwoO1RKip039w=</dsig:SignatureValue> <dsig:KeyInfo><dsig:X509Data><dsig:X509Certificate>MIIB/DCCAWWgAwIBAgIBCjANBgkqhkiG9w0BAQQFADAjMSEwHwYDVQQDExhhZGMyMTEwNjE4LnVzLm9yYWNsZS5jb20wHhcNMTEwNDE5MTUxNTI2WhcNMjEwNDE2MTUxNTI2WjAjMSEwHwYDVQQDExhhZGMyMTEwNjE4LnVzLm9yYWNsZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAJnSxVc86TGcwewieaueIVG33C3Qouve6HuJxHsoM8cRRkJcmv+0auyvDLJfYAEOfHo5OsF4+za11iNPln9ZFaOjUy/Y8JC0kSVxatgU36RveIrpOJvp978Oa6IlMNUtdFf8q3TrsizspE2hnbLY+0SMofgnAPcJEKPxkd6b0b0ZAgMBAAGjQDA+MAwGA1UdEwEB/wQCMAAwDwYDVR0PAQH/BAUDAwfYADAdBgNVHQ4EFgQU47ZqWHgTOmZO67uw4YzsbrRMNOswDQYJKoZIhvcNAQEEBQADgYEAH0QIHaLMN/7hD2VP0SLOCtNdEmY5IqLY1CDW+GpUZZ9e+MCgE/rvr34566D9Q8lvET6T9u+sg3h+hSkb3gE4a4wgShH/V7nfHzx8ZntlxccvCZK6ePVDMt0Lfj2iVnE7IJxou4bO0w0m9DrvyKop7ncnSEzaVpxIZgCDo7+8Zdw=</dsig:X509Certificate> </dsig:X509Data></dsig:KeyInfo></dsig:Signature></saml:Assertion></wst:RequestedSecurityToken><wst:RequestedAttachedReference><wsse:SecurityTokenReference><wsse:KeyIdentifier ValueType="http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.0#SAMLAssertionID">id-1LNkSUVcpbH7O0oQwbHJ5JOd5fs-</wsse:KeyIdentifier></wsse:SecurityTokenReference></wst:RequestedAttachedReference> <wst:RequestedUnattachedReference><wsse:SecurityTokenReference><wsse:KeyIdentifier ValueType="http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.0#SAMLAssertionID">id-1LNkSUVcpbH7O0oQwbHJ5JOd5fs-</wsse:KeyIdentifier></wsse:SecurityTokenReference></wst:RequestedUnattachedReference> <wst:Lifetime><wsu:Created>2011-04-22T18:48:05Z</wsu:Created><wsu:Expires>2011-04-22T19:48:05Z</wsu:Expires></wst:Lifetime></wst:RequestSecurityTokenResponse></wst:RequestSecurityTokenResponseCollection></env:Body></env:Envelope>