SAML EnterpriseのID プロバイダー

このトピックでは、 SAML Enterprise IDプロバイダーを設定するために必要な、 SAML のメタデータおよびユーザー属性のマッピングに関する情報を説明します。

SAML これは、ユーザーの身元を保証する IDプロバイダー と、その身元情報を利用するサービスプロバイダー との間で、シングルサインオン情報を交換するためのXML標準です。 クラウドディレクトリのIDプロバイダーと比較すると、 SAML EnterpriseのIDプロバイダーの設定はより複雑です。

サービスプロバイダー として、 SAML Enterprise IDプロバイダーは:
  1. IBM® Verify 認証を、ユーザー認証を行う外部 ID プロバイダーに委任します。 例えば、Microsoft ADFS または Microsoft Azure AD です。
  2. 返されたユーザー識別情報を、ユーザー認証トークンに Verify 設定します。
サービス・プロバイダーアイデンティティー・プロバイダー との間の通信は、メタデータ・ファイルに含まれている値に依存します。 SAML Enterprise IDプロバイダー外部IDプロバイダー の間で SAML のシングルサインオンを有効にするには、 IDプロバイダー は以下の要件を満たす必要があります:
  1. SAML 」 2.0 のIDプロバイダー メタデータファイルを、「 SAML Enterprise」 IDプロバイダー に提供してください。
  2. SAML Enterprise IDプロバイダー から、 SAML 2.0 のサービスプロバイダー メタデータファイルを取得します。

SAML メタデータの要件

  • サービス・プロバイダーアイデンティティー・プロバイダー の両方のメタデータ・ファイルの内容が SAML 2.0 仕様に準拠している必要があります。
  • SAML Enterprise ID プロバイダーがデジタル署名を検証できるようにするには、IDプロバイダーのメタデータファイルにIDプロバイダーの公開鍵が含まれている必要があります。 <KeyDescriptor>SAML のメタデータには、要素が含まれている必要があります。 署名鍵の <KeyDescriptor> 要素の例を以下に示します。
    <md:KeyDescriptor use="signing">
          <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
            <X509Data>
              <X509Certificate>idp.example.com SSO key</X509Certificate>
            </X509Data>
          </KeyInfo>
    </md:KeyDescriptor>
    
  • サービス・プロバイダー のメタデータ・ファイルには、少なくとも <md:KeyDescriptor use="signing"> 要素が含まれている必要があります。 例:
    <md:KeyDescriptor use="signing">
          <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
            <X509Data>
              <X509Certificate>(...signing certificate...)</X509Certificate>
            </X509Data>
          </KeyInfo>
    </md:KeyDescriptor>
    
  • SAML Enterprise IDプロバイダーが内部のルートCA証明書または中間CA証明書を使用している場合、証明書チェーン内の各証明書には stanza <X509Certificate> が必要です。 例:
    <KeyDescriptor use="signing">    
         <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
            <X509Data>
              <X509Certificate>...root CA base64 encoded public certificate...</X509Certificate>
              <X509Certificate>...intermediate CA base64 encoded public certificate...</X509Certificate>
              <X509Certificate>...signer base64 encoded public certificate ...</X509Certificate>
            </X509Data> 
         </KeyInfo> 
    </KeyDescriptor>
    
    SAML のメタデータ内の および <md:KeyDescriptor use="encryption"> の両 <md:KeyDescriptor use="signing"> 方の要素を更新してください。
    Verify注: サービスプロバイダーのメタデータファイル内の `element` にある <md:KeyDescriptor use="encryption"> 証明書は、外部の SAML2.0 IDプロバイダーが、 SAML2 アサーション要素を暗号化して送信するために使用できます。

SAML アサーションVerify 認証トークンのマッピング

SAML Enterprise IDプロバイダー、 SAML アサーション内のユーザーID情報を使用して、以下の項目に値を設定します:
  • Verify 資格情報トークン。認証された Verify Connect ユーザーを表します。

    これは、ユーザーの ID およびその属性情報を保管します。

  • SAML 」 から「 SaaS 」アプリケーションへの送信アサーション。
表 1. SAML アサーションと認証トークンのマッピング
この SAML アサーション要素の値 資格情報トークン Verify に次のように追加されます
<saml:Subject><saml:NameID> preferred_username
<saml:Issuer> realmNameSAML の断言にその主張が明示的に含まれていない場合 realmName
注:<saml:Issuer> ` URL ` 形式 http(s) の場合、` URL ` 内の `` が <hostname> 抽出され、`` realmName 属性の設定に使用されます。

<saml:AttributeStatement>その他のユーザー識別情報は、 SAML アサーションに含めることができます。 <saml:AttributeValue> 要素はストリング・データ型のみサポートします。

VerifyVerify<saml:Attribute Name> クラウドディレクトリの以下の標準属性のいずれかに該当する場合、その属性は同じ属性名を持つ標準属性として認証トークンに追加されます:
  • preferred_username
  • given_name
  • family_name
  • name または displayName
  • email または emailAddress
  • groups または groupIds
  • userID
  • realmName
  • mobile_number

<saml:Attribute Name> クラウドディレクトリ Verify の標準属性のいずれにも一致しない場合、その属性は拡張属性として認証トークンVerify 追加されます。 拡張属性の元の属性名には接頭部 ext:: が付いています。

emailAddress以下は、 SAML のレスポンスの例です。このレスポンスの属性アサーション <saml:AttributeStatement> には、 認証 Verify トークンに伝播されるべき `` および mobile_number `` 属性が含まれています。
<?xml version="1.0"?>
<samlp:Response xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" 
      xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" 
      xmlns:xs="http://www.w3.org/2001/XMLSchema" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      ID="FIMRSP_549f7c46-014a-195f-b377-f24678dbf88a" 
      IssueInstant="2014-12-16T19:42:25Z" Version="2.0">
  <samlp:Status>
    <samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>
  </samlp:Status>
  <saml:Assertion ID="Assertion-uuid549f74ad-014a-120d-a67b-f24678dbf88a" 
      IssueInstant="2014-12-16T19:42:23Z" Version="2.0">
    <saml:Issuer Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity">
         https://idp.example.com/SAML</saml:Issuer>
    <saml:Subject>
      <saml:NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress">testuser
          </saml:NameID>
      <saml:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
        <saml:SubjectConfirmationData NotOnOrAfter="2014-12-16T19:43:23Z" 
             Recipient="https://sp.iam.ibmcloud.com/SAML"/>
      </saml:SubjectConfirmation>
    </saml:Subject>
    <saml:Conditions NotBefore="2014-12-16T19:41:23Z" NotOnOrAfter="2014-12-16T19:43:23Z">
      <saml:AudienceRestriction>
        <saml:Audience>https://sp.iam.ibmcloud.com/SAML</saml:Audience>
      </saml:AudienceRestriction>
    </saml:Conditions>
    <saml:AuthnStatement AuthnInstant="2014-12-16T19:42:23Z" 
           SessionIndex="uuid549ad19a-014a-1451-8e4d-998e0731058a" 
           SessionNotOnOrAfter="2014-12-16T20:42:21Z">
      <saml:AuthnContext>
        <saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:Password
            </saml:AuthnContextClassRef>
      </saml:AuthnContext>
    </saml:AuthnStatement>
    <saml:AttributeStatement>
      <saml:Attribute Name="emailAddress" 
            NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic">
        <saml:AttributeValue xsi:type="xs:string">testuser@idp.example.com</saml:AttributeValue>
      </saml:Attribute>
      <saml:Attribute Name="mobile_number" 
            NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic">
        <saml:AttributeValue xsi:type="xs:string">01234556789</saml:AttributeValue>
      </saml:Attribute>    
    </saml:AttributeStatement>
  </saml:Assertion>
</samlp:Response>
以下のJSONオブジェクトは、サンプル SAML 認証応答から変換された認証トーク Verify ンの属性セットを示す、規範的ではない例です。 これは、 SAML アサーション内のユーザーのIDと属性が、 クレデンシャルトークン内でどのようにマッピングされるかを示しています。
{
"preferred_username":"testuser",
"realmName": "idp.example.com",
"email":"testuser@idp.example.com",
"ext:mobileNumber": "01234556789"
}