AuthnRequest OAMおよびSPの設定
この記事では、フェデレーションSSOフローでのOAMでのAuthnRequestメッセージの作成方法に影響する様々なOAM/SP設定を示します。AuthnRequestメッセージは、フェデレーションSSO操作を開始するためにSPによって使用され、操作の実行方法をIdPに示します。
- IdPでのユーザーのチャレンジ方法
- このユーザーのIdPにセッションがすでに存在する場合でも、IdPでユーザーにチャレンジするかどうか
- SAMLアサーションでリクエストする
NameID
形式 - アサーションを送信するためにIdPからリクエストするバインディング(アーティファクトまたはHTTP- POST)
- AuthnRequestメッセージを送信するためにOAM/SPが使用するプロファイル
プロトコル
SAML 2.0、SAML 1.1およびOpenID 2.0プロトコルは、SPがSSO操作をトリガーしたときに、管理者が様々なマナーでフェデレーションSSOフローに影響を与えることができる様々なメッセージ要素およびルールを定義します。
- SAML 2.0では、AuthnRequestメッセージによる広範なカスタマイズが可能です。
- SAML 1.1では、仕様で認証リクエスト・メッセージが定義されていないため、カスタマイズは許可されません
- OpenID 2.0では、主にPAPEやUIなどのOpenID 2.0拡張を介して、一部のカスタマイズが可能です。
SAML 2.0
OAM/SPでは、次の要素についてSAML 2.0 AuthnRequestメッセージをカスタマイズできます。
ForceAuthn:
- IdPがユーザーに再認証を強制するかどうかを示すブール(まだ有効なセッションがある場合でも)
- デフォルトでfalseに設定
IsPassive
- フェデレーションSSO操作の一部としてIdPがユーザーと対話できるかどうかを示すブール。
- falseの場合、IdPはユーザーを識別できないため、フェデレーションSSO操作によってNoPassiveエラー・コードで障害が発生する可能性があります
- デフォルトでfalseに設定
RequestedAuthnContext
- IdPでのユーザーのチャレンジ方法を示す要素
- SPがIdPに認識されないフェデレーション認証メソッドまたはIdPが構成されていないフェデレーション認証メソッドをリクエストした場合、フェデレーションSSOフローは
NoAuthnContext
エラー・コードで失敗します - デフォルトでは欠落しています
NameIDPolicy
- IdPがSAMLアサーションに含める
NameID
フォーマットを示す要素 - If the SP requests a
NameID
format unknown to the IdP or for which the IdP is not configured, then the Federation SSO flow results in a failure with theInvalidNameIDPolicy
error code - 欠落している場合、IdPは、通常、IdPでこのSPパートナ用に構成されたデフォルトのNameID形式を使用します
- デフォルトでは欠落しています
ProtocolBinding
- SAMLアサーションを使用してユーザーをSPにリダイレクトするためにIdPで使用されるSAMLバインディングを示す要素
- アーティファクトまたはHTTP- POSTに設定
- デフォルトではHTTP- POSTに設定されます
OAM/SPでは、管理者は次の目的でサーバーを構成することもできます。
- SAML 2.0 AuthnRequestメッセージでユーザーをIdPにリダイレクトするために、OAM/SPが使用するバインディングを設定します。
- リダイレクトまたはHTTP- POST
- デフォルトで「リダイレクト」に設定
- SAML 2.0ログアウト・メッセージによるログアウト中にユーザーをIdPにリダイレクトするために、OAM/SPが使用するバインディングを設定します。
- リダイレクトまたはHTTP- POST
- デフォルトで「リダイレクト」に設定
SAML 1.1
SAML 1.1仕様では、フェデレーションSSO操作の開始時にSPがIdPに送信するメッセージは定義されていません。そのため、フェデレーションSSOフローの開始に影響を与える方法についてOAM/SPを構成する機能はありません。
OpenID 2.0
OpenID 2.0では、フェデレーションSSO操作の実行方法に影響を与えるためにSP/RPで使用できるいくつかの拡張機能が定義されています。
OpenIDリクエスト:
mode
: IdP/OPがユーザーと視覚的に対話できるかどうかを示す文字列checkid_immediate
では、IdP/OPはユーザーと対話できませんcheckid_setup
はユーザー・インタラクションを許可します- デフォルトで
checkid_setup
に設定
PAPE拡張機能:
max_auth_age
: ユーザーがIdPで認証されてからの最大時間(秒)を示す整数。MaxAuthnAge
が、ユーザーが最後にIdPで認証されてからの時間が大きい場合は、ユーザーを再調整する必要があります。- 管理者が
ForceAuthn
をtrueに構成した場合、OAM/SPはこの属性を0に設定します。それ以外の場合、この属性は設定されません - デフォルトなし
preferred_auth_policies
- フェデレーション認証方式を含む
- IdPでのユーザーのチャレンジ方法を示す要素
- デフォルトでは欠落しています
- OpenID検出が使用されている場合、IdP/OPがXRDSでPAPEをサポートしている場合にのみ、OpenIDリクエストで指定されます。
UI拡張
- ポップアップモード
- フェデレーションSSOでポップアップ・モードが有効であることを示すブール値
- デフォルトでは欠落しています
言語プリファレンス
- ブラウザの言語プリファレンスに基づいて設定された優先言語を含む文字列。
- デフォルトでは欠落しています
アイコン:
- アイコン機能が有効になっているかどうかを示すブール。その場合、IdP/OPはSP/RP XRDSを参照してアイコンの取得方法を決定します。
- デフォルトでは欠落しています
- OpenID検出が使用されている場合、IdP/OPがXRDSのUI拡張をサポートしている場合にのみ、OpenIDリクエストで指定されます。
ForceAuthnおよびIsPassive
WLSTコマンド
OAM/SPには、次を設定するためのWLST configureIdPAuthnRequest()
コマンドが用意されています。
ブールとしてのForceAuthn:
- SAML 2.0 AuthnRequestでは、
ForceAuthn
フィールドがtrueまたはfalseに設定されています - OpenID 2.0リクエストで、構成の
ForceAuthn
がtrueに設定されている場合、PAPEリクエストのmax_auth_age
フィールドは0に設定されます。それ以外の場合、max_auth_age
は設定されません
ブールとしてのIsPassive:
- SAML 2.0 AuthnRequestでは、
IsPassive
フィールドがtrueまたはfalseに設定されています - OpenID 2.0リクエストで、構成の
IsPassive
がtrueに設定されている場合、OpenIDリクエストのmodeフィールドはcheckid_immediate
に設定され、それ以外の場合はcheckid_setup
に設定されます
テスト
このテストでは、OAM/SPはOOTB構成とともにリモートSAML 2.0 IdPパートナと統合されています。この設定に基づいて、OAM/SPがフェデレーションSSOフローを開始すると、次のSAML 2.0 AuthnRequestが生成されます。
<samlp:AuthnRequest
ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-
POST" ID="id-
E4BOT7lwbYK56lO57dBaqGUFq01WJSjAHiSR60Q4"
Version="2.0" IssueInstant="2014-04-01T21:39:14Z"
Destination="https://acme.com/saml20/sso">
<saml:Issuer
Format="urn:oasis:names:tc:SAML:2.0:nameidformat:entity">https://sp.com
/oam/fed</saml:Issuer>
<samlp:NameIDPolicy AllowCreate="true"/> </samlp:AuthnRequest>
そのIdPパートナのOAM/SPを構成し、ユーザーがすでに認証されている場合でも、SPがユーザーを再チャレンジするためにIdPが必要になるようにします。
- 次のコマンドを実行して、WLST環境を入力します。
$IAM_ORACLE_HOME/common/bin/WLST.sh
- WLS管理サーバー(
connect()
)に接続します。 - ドメイン・ランタイム・ブランチ
domainRuntime()
に移動します - configureIdPAuthnRequest()コマンド
configureIdPAuthnRequest(partner="AcmeIdP", forceAuthn="true")
を実行します - WLST環境を終了します:
exit()
変更後、次のSAML 2.0 AuthnRequestが生成されます。
<samlp:AuthnRequest ForceAuthn="true" ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP- POST" ID="id- E4BOT7lwbYK56lO57dBaqGUFq01WJSjAHiSR60Q4" Version="2.0" IssueInstant="2014-04-01T21:39:14Z" Destination="https://acme.com/saml20/sso">
<saml:Issuer Format="urn:oasis:names:tc:SAML:2.0:nameidformat:entity">https://sp.com/oam/fed</saml:Issuer>
<samlp:NameIDPolicy AllowCreate="true"/> </samlp:AuthnRequest>
ForceAuthn/IsPassive
設定を表示または削除するには、次の操作を実行します:
$IAM_ORACLE_HOME/common/bin/WLST.sh
を実行して、WLST環境を入力します。- WLS管理サーバー(
connect()
)に接続します。 - ドメイン・ランタイム・ブランチ
domainRuntime()
に移動します configureIdPAuthnRequest()
コマンドを実行して、パートナconfigureIdPAuthnRequest(partner="AcmeIdP", displayOnly="true")
のForceAuthn/IsPassive設定を表示します- パートナ
configureIdPAuthnRequest(partner="AcmeIdP", delete="true")
からForceAuthn/IsPassive設定を削除するには - WLST環境を終了します:
exit()
要求されたFed認証方法
「OAM/SPのフェデレーション認証メソッド・リクエスト」の記事では、SSOリクエスト・メッセージに要素を設定して、フェデレーションSSO操作の開始時にIdPから特定のフェデレーション認証メソッドをリクエストするようにOAM/SPを構成する方法について説明しました。
WLSTコマンド
使用できるOAM WLSTコマンドは次のとおりです。
-
setIdPPartnerProfileRequestAuthnMethod()
: 特定のIdPパートナ・プロファイルでリクエストされたフェデレーション認証メソッドを構成し、次のパラメータを受け入れます。partnerProfile
: IdPパートナ・プロファイルの名前authnMethod
: リクエストするフェデレーション認証メソッドdisplayOnly
: メソッドを設定するかわりに、現在リクエストされているフェデレーション認証メソッドを表示するかどうかを示すオプション・パラメータdelete
: メソッドが現在リクエストされているフェデレーション認証メソッドを設定するかわりに削除する必要があるかどうかを示すオプション・パラメータ
-
setIdPPartnerRequestAuthnMethod()
。指定されたIdPパートナ・エントリを、リクエストされたフェデレーション認証メソッドで構成し、次のパラメータを受け入れます。 -
partner
: IdPパートナの名前 -
authnMethod
: リクエストするフェデレーション認証メソッド -
displayOnly
: メソッドを設定するかわりに、現在リクエストされているフェデレーション認証メソッドを表示するかどうかを示すオプション・パラメータ -
delete
: メソッドが現在リクエストされているフェデレーション認証メソッドを設定するかわりに削除する必要があるかどうかを示すオプション・パラメータ
これは、SAML 2.0およびOpenID 2.0プロトコルに適用されます。詳細は、「OAM/SPのFed Authentication Method Requests」の記事を参照してください。
テスト
このテストでは、OAM/SPはOOTB構成とともにリモートSAML 2.0 IdPパートナと統合されています。この設定に基づいて、OAM/SPがフェデレーションSSOフローを開始すると、次のSAML 2.0 AuthnRequestが生成されます。
<samlp:AuthnRequest
ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-
POST" ID="id-
E4BOT7lwbYK56lO57dBaqGUFq01WJSjAHiSR60Q4"
Version="2.0" IssueInstant="2014-04-01T21:39:14Z"
Destination="https://acme.com/saml20/sso">
<saml:Issuer
Format="urn:oasis:names:tc:SAML:2.0:nameidformat:entity">https://sp.com
/oam/fed</saml:Issuer>
<samlp:NameIDPolicy AllowCreate="true"/> </samlp:AuthnRequest>
SPがurn:oasis:names:tc:SAML:2.0:ac:classes:X509
フェデレーション認証方法にマップされたメカニズムを使用してユーザーを認証するようにIdPをリクエストするように、そのIdPパートナのOAM/SPを構成します。
$IAM_ORACLE_HOME/common/bin/WLST.sh
を実行して、WLST環境を入力します。- WLS管理サーバー(
connect()
)に接続します。 - ドメイン・ランタイム・ブランチ
domainRuntime()
に移動します setIdPPartnerRequestAuthnMethod()
コマンドsetIdPPartnerRequestAuthnMethod("AcmeIdP", "urn:oasis:names:tc:SAML:2.0:ac:classes:X509")
を実行します- WLST環境を終了します:
exit()
変更後、次のSAML 2.0 AuthnRequestが生成されます。
<samlp:AuthnRequest
ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-
POST" ID="id-
E4BOT7lwbYK56lO57dBaqGUFq01WJSjAHiSR60Q4"
Version="2.0" IssueInstant="2014-04-01T21:39:14Z"
Destination="https://acme.com/saml20/sso">
<saml:Issuer
Format="urn:oasis:names:tc:SAML:2.0:nameidformat:entity">https://sp.com /oam/fed</saml:Issuer>
<samlp:NameIDPolicy AllowCreate="true"/>
<samlp:RequestedAuthnContext
Comparison="minimum">
<saml:AuthnContextClassRef xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">
urn:oasis:names:tc:SAML:2.0:ac:classes:X509
</saml:AuthnContextClassRef>
</samlp:RequestedAuthnContext> </samlp:AuthnRequest>
名前IDフォーマット
SAML 2.0プロトコルを使用すると、SPは、IdPによってアサーションが発行されたときに使用される特定のNameID
形式をIdPからリクエストできます。
ノート: SAML 1.1およびOpenID 2.0では、このようなメカニズムは提供されません
OAMの構成
管理者は、次の方法で、SAML 2.0 AuthnRequestでNameID
形式をリクエストするようにOAM/SPを構成できます。
- OAM管理コンソール(IdPパートナ・エントリ)
- IdPパートナ構成を変更するOAM WLSTの
setIdPPartnerNameIDFormat()
コマンド
OAM管理コンソール
OAM管理コンソールを介してリクエストされたNameID形式を構成するには、次のステップを実行します。
- OAM管理コンソールに移動します:
http(s)://OAM-admin-host:OAM-adminport/oamconsole
- 「アイデンティティ・フェデレーション」→「サービス・プロバイダ管理」に移動します
- 変更するIdPパートナを開きます
- 「認証リクエスト」の
NameID
「フォーマット」ドロップダウン・ボックスに、次のいずれかの値が表示されます。None
:NameID
形式がデフォルトに設定されていますEmail Address
:NameID
形式はurn:oasis:names:tc:SAML:1.1:nameidformat:emailAddress
に設定されますX.509 Subject
:NameID
形式はurn:oasis:names:tc:SAML:1.1:nameidformat:X509SubjectName
に設定されますWindows Name Qualifier
:NameID
形式はurn:oasis:names:tc:SAML:1.1:nameidformat:WindowsDomainQualifiedName
に設定されますKerberos
:NameID
形式はurn:oasis:names:tc:SAML:2.0:nameidformat:kerberos
に設定されますTransient
:NameID
形式はurn:oasis:names:tc:SAML:2.0:nameidformat:transient
に設定されますUnspecified
:NameID
形式はurn:oasis:names:tc:SAML:1.1:nameidformat:unspecified
に設定されますCustom
: この場合、管理者がカスタムNameID
形式を使用できるフィールドが表示されます。NameID
形式は、指定された形式に設定されます- この例のPersistent
: The
NameIDformat will be set
urn:oasis:names:tc:SAML: 2.0: nameidformat:persistentwe selected
Email Address`
- 「保存」をクリックします
図OAM_Administration_Console.jpgの説明
WLSTコマンド
OAM WLSTのsetIdPPartnerNameIDFormat()
コマンドを使用して、リクエストされたNameID
形式を構成するには、次のステップを実行します。
$IAM_ORACLE_HOME/common/bin/WLST.sh
を実行して、WLST環境を入力します。- WLS管理サーバー(
connect()
)に接続します。 - ドメイン・ランタイム・ブランチ
domainRuntime()
に移動します - setIdPPartnerNameIDFormat()コマンド
setIdPPartnerNameIDFormat("PARTNER", "FORMAT", customFormat="CUSTOM")
を実行します- PARTNERをIdPパートナ名に置き換えます
- FORMATを次のいずれかに置き換えます。
orafed-none
: NameID形式がデフォルトに設定されますorafed-emailaddress
: NameID形式はurn:oasis:names:tc:SAML:1.1:nameidformat:emailAddress
に設定されますorafed-x509
: NameID形式はurn:oasis:names:tc:SAML:1.1:nameidformat:X509SubjectName
に設定されますorafed-windowsnamequalifier
: NameID形式はurn:oasis:names:tc:SAML:1.1:nameidformat:WindowsDomainQualifiedName
に設定されますorafed-kerberos
: NameID形式はurn:oasis:names:tc:SAML:2.0:nameidformat:Kerberos
に設定されますorafed-transient
: NameID形式はurn:oasis:names:tc:SAML:2.0:nameidformat:transient
に設定されますorafed-unspecified
: NameID形式はurn:oasis:names:tc:SAML:1.1:nameidformat:unspecified
に設定されますorafed-custom
: この場合、管理者が使用するカスタムNameID形式を指定できるフィールドが表示されます。NameIDフォーマットは、指定されたフォーマットに設定されますorafed-persistent
: NameID形式はurn:oasis:names:tc:SAML:2.0:nameidformat:persistent
に設定されます- FORMATが
orafed-custom
に設定されている場合、customFormat
を設定する必要があります。例:setIdPPartnerNameIDFormat("AcmeIdP", "orafed-emailaddress")
- WLST環境を終了します:
exit()
テスト
このテストでは、OAM/SPはOOTB構成とともにリモートSAML 2.0 IdPパートナと統合されています。この設定に基づいて、OAM/SPがフェデレーションSSOフローを開始すると、次のSAML 2.0 AuthnRequestが生成されます。
<samlp:AuthnRequest
ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-
POST" ID="id-
E4BOT7lwbYK56lO57dBaqGUFq01WJSjAHiSR60Q4"
Version="2.0" IssueInstant="2014-04-01T21:39:14Z"
Destination="https://acme.com/saml20/sso">
<saml:Issuer
Format="urn:oasis:names:tc:SAML:2.0:nameidformat:entity">https://sp.com
/oam/fed</saml:Issuer>
<samlp:NameIDPolicy AllowCreate="true"/>
</samlp:AuthnRequest>
OAM管理コンソールまたはOAM WLSTのsetIdPPartnerNameIDFormat()
コマンド(電子メール・アドレスがNameID
フォーマットとしてリクエストされる)を使用して変更を実行すると、次のSAML 2.0 AuthnRequestが生成されます。
<samlp:AuthnRequest ForceAuthn="false"
IsPassive="false"
ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-
POST" ID="id-
E4BOT7lwbYK56lO57dBaqGUFq01WJSjAHiSR60Q4"
Version="2.0" IssueInstant="2014-04-01T21:39:14Z"
Destination="https://acme.com/saml20/sso">
<saml:Issuer
Format="urn:oasis:names:tc:SAML:2.0:nameidformat:entity">https://sp.com
/oam/fed</saml:Issuer>
<samlp:NameIDPolicy
Format="urn:oasis:names:tc:SAML:1.1:nameidformat:emailAddress" AllowCreate="true"/> </samlp:AuthnRequest>
プロトコル・バインディング
SAML 2.0仕様では、IdPがSAML 2.0アサーションを使用してユーザーをSPにリダイレクトするために使用する必要があるバインディングをSPが要求する方法を定義します。ProtocolBinding
属性は、IdPが使用する必要があるバインディングを示します。次のように設定されます。
- HTTP- POSTの場合は
urn:oasis:names:tc:SAML:2.0:bindings:HTTPPOST
- またはアーティファクトの場合は
urn:oasis:names:tc:SAML:2.0:bindings:Artifact
また、SAML 2.0仕様では、SPがメッセージを送信できるため、SPからSAML 2.0 AuthnRequestメッセージを含むIdPにユーザーをリダイレクトする様々な方法も定義されています。
- HTTPリダイレクトを介して
- またはHTTP POST
- (アーティファクトなど他のバインディングは理論的に使用できますが、実際には使用されません)
OAMの構成
OAMは次のように構成できます。
- OAM管理コンソールまたはOAM WLSTの
configureSAMLBinding()
コマンドを使用して、使用するアサーション・レスポンス・バインディングを設定します。 - OAM WLSTの
configureSAMLBinding()
コマンドを使用して、SAMLのAuthnRequestメッセージの送信方法を指定します。
ノート: SAML 2.0 AuthnRequestメッセージを送信するためのバインディングは、SAML 2.0
LogoutRequest
およびLogoutResponse
メッセージの送信にも使用されます。
OAM管理コンソール
OAM管理コンソールを介してSSOレスポンス/アサーション・バインディングを構成するには、次のステップを実行します。
- OAM管理コンソール(
http(s)://OAM-admin-host:OAM-adminport/oamconsole
)に移動します。 - 「アイデンティティ・フェデレーション」、「サービス・プロバイダ管理」に移動します。
- 変更するIdPパートナを開きます。
- 「HTTP POST SSOレスポンス・バインディング」ボックスを選択して、IdPにHTTP POST経由でSSOレスポンスを返すようにリクエストします。それ以外の場合は、アーティファクトをリクエストするには選択を解除します。
- 「保存」をクリックします。
図SSO_Response_Assertion_Configuration.jpgの説明
WLSTコマンド
OAM WLSTのconfigureSAMLBinding()
コマンドでSSOレスポンス/アサーション・バインディングおよびAuthnRequestバインディングを構成するには、次のステップを実行します。
$IAM_ORACLE_HOME/common/bin/WLST.sh
を実行して、WLST環境を入力します。- WLS管理サーバー(
connect()
)に接続します。 - ドメイン・ランタイム・ブランチ
domainRuntime()
に移動します configureSAMLBinding()
コマンドconfigureSAMLBinding("PARTNER", "PARTNER_TYPE", binding, ssoResponseBinding="httppost")
を実行します- PARTNERをパートナ名に置き換えます
- PARTNER_TYPEをパートナ・タイプ(idpまたはsp)に置き換えます
- バインディングを、AuthnRequestおよび
LogoutRequest
/LogoutResponse
メッセージの送信に使用されるバインディングに置き換えます(ほとんどの場合はhttpredirectにする必要があります。デフォルト)。 httppost
(HTTP- POSTバインディングの場合)httpredirect
(HTTPリダイレクト・バインディングの場合)- SSOアサーションの送信方法を示すには、オプションで
ssoResponseBinding
を指定します httppost
(HTTP- POSTバインディングの場合)- アーティファクト・バインディングの
artifactfor
例:configureSAMLBinding("AcmeIdP", "idp", "httpredirect", ssoResponseBinding="httppost")
- WLST環境を終了します:
exit()
テスト
このテストでは、OAM/SPはリモートSAML 2.0 IdPパートナと統合され、SSOアサーションを送信するためにIdPからHTTP- POSTをリクエストするOOTB構成を備えています。この設定に基づいて、OAM/SPがフェデレーションSSOフローを開始すると、次のSAML 2.0 AuthnRequestが生成されます。
<samlp:AuthnRequest
ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-
POST" ID="id-
E4BOT7lwbYK56lO57dBaqGUFq01WJSjAHiSR60Q4"
Version="2.0" IssueInstant="2014-04-01T21:39:14Z"
Destination="https://acme.com/saml20/sso">
<saml:Issuer
Format="urn:oasis:names:tc:SAML:2.0:nameidformat:entity">https://sp.com
/oam/fed</saml:Issuer>
<samlp:NameIDPolicy AllowCreate="true"/> </samlp:AuthnRequest>
その他の学習リソース
docs.oracle.com/learnで他のラボを探すか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerになります。
製品ドキュメントについては、Oracle Help Centerを参照してください。
AuthnRequest Settings in OAM and SP
F59885-01
September 2022
Copyright © 2022, Oracle and/or its affiliates.