OAMおよびSPでのSAML 2.0 IdPパートナの作成
この記事では、次のような、SAML 2.0 SPとして機能するOAMとリモートSAML 2.0 IdPパートナ間のフェデレーション契約を設定する方法について説明します。
-
SAML 2.0 Metadataを使用したリモートSAML 2.0 IdPパートナの設定
-
SAML 2.0 Metadataを使用しないリモートSAML 2.0 IdPパートナの設定
-
着信SAMLアサーションをLDAPユーザーにマップするためのOAM/SPの構成
この記事では、UIを介して、またはOAM WLSTコマンドを使用して、前述のタスクを実行する方法について説明します。
フェデレーションの信頼の構築
フェデレーション・サーバー間でフェデレーションSSO操作を実行する前に、フェデレーション・パートナ間の信頼を確立することが前提条件です。
信頼の確立には、使用されるプロトコルがPKI X.509証明書に依存してメッセージ交換を保護する場合や、フェデレーション・プロトコルを実装するサービスの場所/URLに依存する場合、証明書情報の交換が含まれます。
アサーション・マッピング
OAMがサービス・プロバイダとして機能し、ユーザー認証をリモートIdPに委任する場合、管理者は、ユーザーがSAMLアサーションでどのように識別されるか(NameID
に格納されているユーザー情報)をIdPの管理者に同意する必要があります。またはSAML属性として、または複数のSAML属性として、NameIDまたはSAML属性(あるいはその両方)を使用して、受信SAMLアサーションをLDAPユーザー・レコードにマップするようにOAM/SPを構成する必要があります。
OAMでは、OAMセッションを作成するために、受信アサーションをLDAPユーザー・レコードにマップする必要があります。
OAM/SPは、次の方法で受信SAMLアサーションをLDAPユーザー・レコードにマップできます。
-
LDAPユーザー・レコードの属性にマップされたSAMLアサーション
NameID
。この場合、OAM/SPは、マッピングで指定された属性の値がSAMLNameID
の値と一致する単一のLDAPユーザー・レコードに対してLDAP参照を実行します。 -
アサーションからのSAML属性。LDAPユーザー・レコードの属性にマップされます。この場合、OAM/SPは、マッピングで指定された属性の値が指定されたSAML属性の値と一致する単一のLDAPユーザー・レコードに対してLDAP参照を実行します。
-
SAMLアサーションからのデータを含むLDAP問合せの使用:
-
LDAP問合せは管理者によって指定されます。
-
アサーションのデータはLDAP問合せで%NAME%として識別され、NAMEは:
-
アサーションからのSAML属性の名前
-
または
NameID
: この場合、NAMEはfed.nameidvalue
に置き換えられます
-
-
-
LDAP問合せの例は次のとおりです。
-
(mail=%email%)
。メール属性の値がEメールのSAML属性の値と一致する単一のLDAPユーザー・レコードに対してLDAP検索が行われます -
(&(givenname=%firstname%)(sn=%lastname%))
。givenname
属性およびsn
属性の値がfirstnameおよびlastname SAML属性の値と一致する単一のLDAPユーザー・レコードのLDAPルックアップになります。 -
(&(title=manager)(uid=%fed.nameidvalue%))
: uid属性の値がNameID
の値と一致し、タイトル属性がmanagerと等しい単一のLDAPユーザー・レコードに対してLDAPルックアップが行われます。
-
OAM/SPには、アサーションをLDAPユーザー・レコードにマップする際に、特定のアイデンティティ・ストアおよびユーザー検索ベースDNを使用する機能も用意されています。これはオプションであり、次のようになります。
-
アサーション・マッピング・ルールに特定のアイデンティティ・ストアが指定されていない場合は、デフォルトのOAMアイデンティティ・ストアが使用されます
-
アサーション・マッピング・ルールで特定のユーザー検索ベースDNが指定されていない場合は、アイデンティティ・ストアで構成されているユーザー検索ベースDNが使用されます
Metadataを使用したSAML 2.0
OAM管理コンソール
Metadataを使用して新しいSAML 2.0 IdPパートナを作成するには、次のステップを実行します。
-
OAM管理コンソールに移動します:
http(s)://OAM-admin-host:OAM-adminport/oamconsole
-
「アイデンティティ・フェデレーション」、「サービス・プロバイダ管理」に移動します
-
「アイデンティティ・プロバイダ・パートナの作成」ボタンをクリックします
-
「Create」画面で:
-
パートナの名前を入力します
-
IdPパートナが指定されていない場合、フェデレーションSSO操作の開始時にこのパートナをデフォルトでIdPとして使用するかどうかを確認します。
-
プロトコルとしてSAML 2.0を選択します。
-
「Metadataのロード」をクリックし、IdPアサーション・マッピング・セクションのSAML 2.0 Metadataファイルをアップロードします:
-
オプションとして、使用するOAMアイデンティティ・ストアを設定します。ノート: この例では、デフォルトのOAMアイデンティティ・ストアを使用するためにフィールドを空白のままにします
-
オプションでユーザー検索ベースDNを設定します ノート: この例では、アイデンティティ・ストアで構成されたユーザー検索ベースDNを使用するには、フィールドを空白のままにします
-
-
マッピングの実行方法を選択します ノート: この例では、
NameID
を介してアサーションをLDAPメール属性にマップしています -
受信SAMLアサーション内の属性の名前をローカル名にマップするために使用する属性プロファイルを選択します。
-
-
「保存」をクリックします
パートナが作成されると、「パートナの編集」画面が表示されます。
-
前の画面で設定した設定を変更可能
-
「詳細設定」セクションが表示されます。
-
グローバル・ログアウトの有効化: OAMがログアウト・プロセスの一部としてパートナとのSAML 2.0ログアウト交換を実行するかどうかを示します。
-
HTTP POST SSOレスポンス・バインディング: OAM/SPが、アサーションをSPに送信するためにIdPをどのようにリクエストするかを示します。チェックすると、OAM/SPはHTTP- POSTバインディングを使用してアサーションを送信するようにIdPにリクエストし、そうでない場合はアーティファクト・バインディングをリクエストします。
-
HTTP基本認証: アーティファクト・バインディングを使用する場合、OAM/SPはSOAPを介して直接IdPに接続し、SAMLアサーションを取得する必要があります。IdPによってSOAPチャネルでHTTP Basic認証が有効になり、OAM/SPがIdPにユーザー名/パスワードを提供する必要がある場合があります(これらの資格証明は、IdPとSPの管理者の間で合意されています)。
-
認証リクエストNameIDフォーマット: OAM/SPがSAML AuthnRequestを介して使用する特定のNameIDをリクエストするかどうかを示します。「なし」に設定すると、OAM/SPは何も要求されず、IdPによって帯域外で合意されたNameID形式が選択されます。値を設定する場合は、IdPとSPの管理者の間で合意された内容に対応していることを確認してください(空白のままにできます)。
-
WLST
OAM WLSTコマンドを使用して、Metadataで新しいSAML 2.0 IdPパートナを作成するには、次のステップを実行します。
-
$IAM_ORACLE_HOME/common/bin/WLST.sh
を実行して、WLST環境を入力します。 -
WLS管理サーバー(
connect()
)に接続します。 -
ドメイン・ランタイム・ブランチ
domainRuntime()
に移動します -
OAMで
acmeIdP
と呼ばれるMetadataを持つSAML 2.0 IdPパートナを作成します:addSAML20IdPFederationPartner("acmeIdP", "/tmp/acme-idp-metadata-saml20.xml")
-
デフォルトでは、新しいIdPパートナは次のように構成されます。
-
デフォルトのOAMアイデンティティ・ストアを使用します。
-
アイデンティティ・ストアのユーザー検索ベースDNを使用します(オーバーライドされません)
-
LDAPメール属性と一致する
NameID
を使用してSAMLアサーションをマップします -
認証リクエストの
NameID
フォーマットを「なし」に設定します -
HTTP- POSTをデフォルトSSOレスポンス・バインディングとして使用
-
デフォルトのアイデンティティ・プロバイダ属性プロファイルの使用
-
-
WLST環境を終了します:
exit()
Metadataを使用しないSAML 2.0
OAM管理コンソール
Metadataを使用せずに新しいSAML 2.0 IdPパートナを作成するには、次のステップを実行します(最初に、証明書、IdP識別子およびURLなど、IdPパートナのすべてのデータがあることを確認します)。
-
OAM管理コンソールに移動します:
http(s)://OAM-admin-host:OAM-adminport/oamconsole
-
「アイデンティティ・フェデレーション」、「サービス・プロバイダ管理」に移動します
-
「アイデンティティ・プロバイダ・パートナの作成」ボタンをクリックします
-
「Create」画面で:
-
パートナの名前を入力します
-
IdPパートナが指定されていない場合、フェデレーションSSO操作の開始時にこのパートナをデフォルトでIdPとして使用するかどうかを確認します。
-
プロトコルとしてSAML 2.0を選択します。
-
「Enter Manually」を選択します。
-
IdPパートナの
Issuer
/ProviderID
を入力します -
SuccinctID
が空白のままの場合、OAM/SPはSHA-1アルゴリズムを使用してプロバイダIDをダイジェストして計算します(空白のままにする必要があります)。 -
そのIdPパートナのSSO Service URLを入力します。これは、ユーザーがSAML AuthnRequestを持つOAM/SPからIdPにリダイレクトされるURLです。
-
パートナがSAML 2.0アーティファクト・プロトコルをサポートしている場合は、SSOアーティファクト操作中にOAM/SPが接続してSAMLアサーションを取得するSOAP Service URLを入力します
-
パートナがSAML 2.0ログアウト・プロトコルをサポートしている場合:
-
パートナがSAML 2.0
LogoutRequest
メッセージを処理できるSAML 2.0ログアウト・リクエストURLを入力します -
パートナがSAML 2.0
LogoutResponse
メッセージを処理できるSAML 2.0ログアウト・レスポンスURLを入力します
-
-
IdP署名証明書ファイルをアップロードします。
-
PEM形式(ファイルに最初の行として含まれる場合- - BEGIN CERTIFICATE- - 、Base64エンコード形式の証明書、最後に- - END CERTIFICATE- - )
-
証明書がバイナリエンコーディングで格納されているDER形式
-
-
IdPに暗号化証明書がある場合は、ファイルをアップロードします:
-
PEM形式(ファイルに最初の行として含まれる場合- - BEGIN CERTIFICATE- - 、Base64エンコード形式の証明書、最後に- - END CERTIFICATE- - )
-
証明書がバイナリエンコーディングで格納されているDER形式
-
-
「アサーション・マッピング」セクション:
-
オプションとして、使用するOAMアイデンティティ・ストアを設定します。ノート: この例では、デフォルトのOAMアイデンティティ・ストアを使用するためにフィールドを空白のままにします
-
オプションでユーザー検索ベースDNを設定します ノート: この例では、アイデンティティ・ストアで構成されたユーザー検索ベースDNを使用するには、フィールドを空白のままにします
-
-
マッピングの実行方法を選択します ノート: この例では、
NameID
を介してアサーションをLDAPメール属性にマップしています -
受信SAMLアサーション内の属性の名前をローカル名にマップするために使用する属性プロファイルを選択します。
-
-
「保存」をクリックします
図Create_IDP_Provider_Partner.jpgの説明
パートナが作成されると、「パートナの編集」画面が表示されます。
-
前の画面で設定した設定を変更可能
-
「詳細設定」セクションが表示されます。
-
グローバル・ログアウトの有効化: OAMがログアウト・プロセスの一部としてパートナとのSAML 2.0ログアウト交換を実行するかどうかを示します。
-
HTTP POST SSOレスポンス・バインディング: OAM/SPが、アサーションをSPに送信するためにIdPをどのようにリクエストするかを示します。チェックすると、OAM/SPはHTTP- POSTバインディングを使用してアサーションを送信するようにIdPにリクエストし、そうでない場合はアーティファクト・バインディングをリクエストします。
-
HTTP基本認証: アーティファクト・バインディングを使用する場合、OAM/SPはSOAPを介して直接IdPに接続し、SAMLアサーションを取得する必要があります。IdPによってSOAPチャネルでHTTP Basic認証が有効になり、OAM/SPがIdPにユーザー名/パスワードを提供する必要がある場合があります(これらの資格証明は、IdPとSPの管理者の間で合意されています)。
-
認証リクエストNameIDフォーマット: OAM/SPがSAML AuthnRequestを介して使用する特定のNameIDをリクエストするかどうかを示します。「なし」に設定すると、OAM/SPは何も要求されず、IdPによって帯域外で合意されたNameID形式が選択されます。値を設定する場合は、IdPとSPの管理者の間で合意された内容に対応していることを確認してください(空白のままにできます)。
-
WLST
OAM WLSTコマンドを使用して、Metadataを使用せずに新しいSAML 2.0 IdPパートナを作成するには、次のステップを実行します(最初に、証明書、IdP識別子、URLなど、IdPパートナのすべてのデータがあることを確認します)。
-
$IAM_ORACLE_HOME/common/bin/WLST.sh
を実行して、WLST環境を入力します。 -
WLS管理サーバー(
connect()
)に接続します。 -
ドメイン・ランタイム・ブランチ
domainRuntime()
に移動します -
OAMで
acmeIdP
をコールするMetadataなしでSAML 2.0 IdPパートナを作成します:addSAML20IdPFederationPartnerWithoutMetadata("acmeIdP","https://acme.com/idp", "https://acme.com/saml20/sso", "https://acme.com/saml20/soap")
-
デフォルトでは、新しいSPパートナーは次のように構成されます。
-
デフォルトのOAMアイデンティティ・ストアを使用します。
-
アイデンティティ・ストアのユーザー検索ベースDNを使用します(オーバーライドされません)
-
LDAPメール属性と一致する
NameID
を使用してSAMLアサーションをマップします -
認証リクエストの
NameID
フォーマットを「なし」に設定します -
HTTP- POSTをデフォルトSSOレスポンス・バインディングとして使用
-
デフォルトのアイデンティティ・プロバイダ属性プロファイルの使用
-
このIdPパートナの証明書はアップロードされていません
-
-
WLST環境を終了します:
exit()
WLSTを使用したフェデレーション設定の変更
この項では、OAM WLSTコマンドを使用して共通SPパートナ設定を変更する方法について説明します。
-
SAMLアサーション・マッピング設定
-
SAMLアサーション・マッピングSAML 2.0ログアウト用のOAMアイデンティティ・ストアとユーザー検索ベースDN
-
SAML署名証明書
-
SAML暗号化証明書
-
IdP IdPパートナのパートナ属性プロファイル
-
SAML SSOリクエストとレスポンスのバインディング
すでにWLST環境にあり、次を使用して接続しているとします。
-
$IAM_ORACLE_HOME/common/bin/WLST.sh
を実行して、WLST環境を入力します。 -
WLS管理サーバー(
connect()
)に接続します。 -
ドメイン・ランタイム・ブランチ
domainRuntime()
に移動します
SAMLアサーション・マッピング設定
SAML IdPパートナのマッピング設定を構成するには:
-
次のコマンドを使用して、1を介してアサーションをマップします:
setIdPPartnerMappingNameID(partnerName, userstoreAttr)
-
partnerName
は、IdPパートナの作成に使用された名前です -
userstoreAttr
:NameID
値と一致するLDAPユーザー属性。
-
-
SAML属性を介してアサーションをマップするには、次のコマンドを使用します: setIdPPartnerMappingAttribute(partnerName、 assertionAttr、 userstoreAttr)
-
partnerName
は、IdPパートナの作成に使用された名前です -
assertionAttr
: SAML属性の名前。 -
userstoreAttr
: SAML属性値と一致するLDAPユーザー属性。
-
-
LDAP問合せを介してアサーションをマップするには、次のコマンドを使用します:
setIdPPartnerMappingAttributeQuery(partnerName, attrQuery)
-
partnerName
は、IdPパートナの作成に使用された名前です -
attrQuery
: 使用するLDAP問合せ((&(givenname=%firstname%) (sn=%lastname%))
など)。
-
OAMアイデンティティ・ストアとユーザー検索のベースDN
受信SAMLアサーションのマッピング時に特定のOAMアイデンティティ・ストアまたは特定のユーザー検索ベースDN(あるいはその両方)を使用するようにOAM/SPを構成するには、次のコマンドsetPartnerIDStoreAndBaseDN()
を実行します。
-
次のコマンドを使用して、OAMアイデンティティ・ストアのみを設定します。
setPartnerIDStoreAndBaseDN(partnerName,"idp", storeName="oid")
-
partnerName
は、IdPパートナの作成に使用された名前です -
idp
はパートナ・タイプを示します -
storeName
: 使用するOAMアイデンティティ・ストアを参照します。
-
-
次のコマンドを使用して、検索ベースDNのみを設定します:
setPartnerIDStoreAndBaseDN(partnerName,"idp",searchBaseDN="ou=managers,dc=acme,dc=com")
-
partnerName
は、IdPパートナの作成に使用された名前です -
idp
はパートナ・タイプを示します -
searchBaseDN
: 使用する検索ベースDNを示します
-
-
次のコマンドを使用して、OAMアイデンティティ・ストアおよび検索ベースDNを設定します:
setPartnerIDStoreAndBaseDN(partnerName,"idp", storeName="oid",searchBaseDN="ou=managers,dc=acme,dc=com")
-
partnerName
は、IdPパートナの作成に使用された名前です -
idp
はパートナ・タイプを示します -
storeName
: 使用するOAMアイデンティティ・ストアを参照します。 -
searchBaseDN
: 使用する検索ベースDNを示します
-
-
次のコマンドを使用して、IdPパートナ・エントリからOAMアイデンティティ・ストアおよび検索ベースDNを削除します:
setPartnerIDStoreAndBaseDN(partnerName,"idp", delete="true")
-
partnerName
は、IdPパートナの作成に使用された名前です -
idp
はパートナ・タイプを示します
-
SAML 2.0ログアウト
SAML 2.0ログアウトを有効にし、IdPパートナSAML 2.0ログアウトURLを指定するには、次を実行します。
-
configureSAML20Logout()コマンド:
configureSAML20Logout("acmeIdP", "idp","true",saml20LogoutRequestURL="https://acme.com/saml20/logoutReq",saml20LogoutResponseURL="https://acme.com /saml20/logoutResp")
-
acmeIdP
は、以前に作成したパートナの名前です。 -
idp
はパートナ・タイプを示します -
trueは、SAML 2.0ログアウトが有効になっていることを示します。
saml20LogoutRequestURL
は、SAML 2.0 LogoutRequestメッセージを処理できるIdP
パートナ・エンドポイントを参照します -
saml20LogoutResponseURL
は、SAML 2.0LogoutResponse
メッセージを処理できるIdP
パートナ・エンドポイントを参照します
-
IdPパートナのSAML 2.0ログアウトを無効にするには、次を実行します。
-
configureSAML20Logout()
コマンド:configureSAML20Logout("acmeIdP", "idp","false")
-
acmeIdP
は、以前に作成したパートナの名前です。 -
idp
はパートナ・タイプを示します -
falseは、SAML 2.0ログアウトが有効であることを示します
-
SAML証明書
署名証明書および暗号化証明書の管理に使用できる様々なWLSTコマンドがあります。
-
Base64エンコード形式でパートナの署名証明書を出力する
getFederationPartnerSigningCert()
:getFederationPartnerSigningCert("acmeIdP","idp")
-
acmeIdP
は、以前に作成したパートナの名前です。 -
idp
はパートナ・タイプを示します
-
-
setFederationPartnerSigningCert()
: パラメータとして渡された署名証明書ファイルをIdP
パートナ構成にアップロードします:setFederationPartnerSigningCert("acmeIdP","idp", "/tmp/cert.file")
-
acmeIdP
は、以前に作成したパートナの名前です。 -
idp
はパートナ・タイプを示します -
3番目のパラメータは、証明書を含むファイルのファイル・システム上の場所を示します。
-
PEM形式(ファイルに最初の行として含まれる場合- - BEGIN CERTIFICATE- - 、Base64エンコード形式の証明書、最後に- - END CERTIFICATE- - )
-
証明書がバイナリエンコーディングで格納されているDER形式
-
-
-
IdPパートナ・エントリから署名証明書を削除する
deleteFederationPartnerSigningCert()
:deleteFederationPartnerSigningCert("acmeIdP","idp")
-
acmeIdP
は、以前に作成したパートナの名前です。 -
idp
はパートナ・タイプを示します
-
-
getFederationPartnerEncryptionCert()
、setFederationPartnerEncryptionCert()
およびdeleteFederationPartnerEncryptionCert()
コマンドは前述のコマンドと似ていますが、パートナの暗号化証明書が管理される点が異なります。-
getFederationPartnerEncryptionCert("acmeIdP","idp")
-
setFederationPartnerEncryptionCert("acmeIdP","idp", "/tmp/cert.file")
-
deleteFederationPartnerEncryptionCert("acmeIdP","idp")
-
IdPパートナー AMribute ProQl
特定のIdP
パートナのIdP
パートナ属性プロファイルを構成するには、次のコマンドを使用します。
特定のIdP
パートナ属性プロファイルを使用するようにIdP
パートナを構成するには、次のコマンドを実行します。
-
setIdPPartnerAttributeProfile(partnerName, attrProfileID)
-
partnerName
は、IdPパートナの作成に使用された名前です -
attrProfileID
は、IdPパートナ属性プロファイルIDです
-
-
既存のIdPパートナ属性プロファイルをリストするには、
listIdPPartnerAttributeProfileIDs()
を実行します。
SAML SSOリクエストとレスポンスのバインディング
特定のIdPパートナのSAMLバインディングを構成するには、次のコマンドを使用します。
IdPパートナを構成するには、configureSAMLBinding(partnerName, partnerType, binding, ssoResponseBinding="httppost")
を実行します
-
partnerName
は、IdPパートナの作成に使用された名前です -
パートナがSPであるため、
partnerType
を「idp」に設定する必要があります -
binding
:HTTPPOST
バインディングにhttppost
を使用するバインディング、またはSAML 2.0 AuthnRequestおよびLogoutRequest
/LogoutResponse
メッセージにHTTPリダイレクト・バインディングにhttpredirect
を使用するバインディング。SAML 2.0のみ -
ssoResponseBinding
: SAMLアサーションをIdPに戻すために使用するバインディング、HTTP- POSTバインディングの場合はhttppost、アーティファクト・バインディングの場合はアーティファクト
例
次のコマンドを使用して、SAML 2.0 Metadataを使用せずにIdPパートナを追加できます。
addSAML20IdPFederationPartnerWithoutMetadata("acmeIdP","https://acme.com/idp", "https://acme.com/saml2 /sso", "https://acme.com/saml20/soap" configureSAML20Logout("acmeIdP", "idp", "true","https://acme.com/saml20/logoutReq" "https://acme.com/saml20/logoutResp" setFederationPartnerSigningCert("acmeIdP", "idp", "/tmp/acme-idp-cert.pem") setPartnerIDStoreAndBaseDN("acmeIdP", "idp", "oid") setIdPPartnerMappingNameID("acmeIdP", "mail")
次のコマンドを使用して、SAML 2.0 MetadataでIdPパートナを追加できます(この例では、デフォルトのOAMアイデンティティ・スタイルを使用しています)。
addSAML20IdPFederationPartner("acmeIdP", "/tmp/acme-idp-metadata-saml20.xml" setIdPPartnerMappingNameID("acmeIdP", "mail")
その他の学習リソース
docs.oracle.com/learnで他のラボを探すか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerになります。
製品ドキュメントについては、Oracle Help Centerを参照してください。
Create SAML 2.0 IdP Partners in OAM and SP
F59901-01
September 2022
Copyright © 2022, Oracle and/or its affiliates.