AuthnRequest OAM 和 SP 中的设置

本文列出了各种 OAM/SP 设置,这些设置会影响在联盟 SSO 流中的 OAM 中创建 AuthnRequest 消息的方式。SP 使用 AuthnRequest 消息启动联合 SSO 操作并向 IdP 指示应如何执行该操作:

协议

SAML 2.0、SAML 1.1 和 OpenID 2.0 协议定义不同的消息元素和规则,允许管理员在 SP 触发 SSO 操作时以不同的方式影响联盟 SSO 流:

SAML 2.0

OAM/SP 允许为以下元素定制 SAML 2.0 AuthnRequest 消息:

ForceAuthn:

IsPassive

RequestedAuthnContext

NameIDPolicy

ProtocolBinding

OAM/SP 还允许管理员将服务器配置为:

SAML 1.1

SAML 1.1 规范未定义启动联盟 SSO 操作时 SP 发送到 IdP 的消息。因此,无法配置 OAM/SP 以了解如何影响联盟 SSO 流的开始。

OpenID 2.0

OpenID 2.0 定义了几个扩展,SP/RP 可以使用这些扩展来影响联合 SSO 操作的发生方式:

OpenID 请求:

PAPE 扩展:

preferred_auth_policies

UI 扩展

语言首选项

图标:

ForceAuthn 和 IsPassive

WLST 命令

OAM/SP 提供了 WLST configureIdPAuthnRequest() 命令来设置:

ForceAuthn 作为布尔值:

IsPassive 作为布尔值:

测试

在此测试中,OAM/SP 与远程 SAML 2.0 IdP 合作伙伴与 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>

让我们为该 IdP 合作伙伴配置 OAM/SP,以便 SP 需要 IdP 重新质询用户,即使该用户已经通过验证:

  1. 通过执行以下命令进入 WLST 环境:$IAM_ORACLE_HOME/common/bin/wlst.sh
  2. 连接到 WLS 管理服务器:connect()
  3. 导航到“域运行时”分支:domainRuntime()
  4. 执行 configureIdPAuthnRequest() 命令:configureIdPAuthnRequest(partner="AcmeIdP", forceAuthn="true")
  5. 退出 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 设置,请执行以下操作:

  1. 通过执行以下命令进入 WLST 环境:$IAM_ORACLE_HOME/common/bin/wlst.sh
  2. 连接到 WLS 管理服务器:connect()
  3. 导航到“域运行时”分支:domainRuntime()
  4. 执行 configureIdPAuthnRequest() 命令以显示合作伙伴 configureIdPAuthnRequest(partner="AcmeIdP", displayOnly="true") 上的 ForceAuthn/IsPassive 设置
  5. 从合作伙伴 configureIdPAuthnRequest(partner="AcmeIdP", delete="true") 中删除 ForceAuthn/IsPassive 设置
  6. 退出 WLST 环境:exit()

请求的联邦授权方法

在《 Fed Authentication Method Requests in OAM / SP 》文章中,我们讨论了如何通过在 SSO 请求消息中设置元素,将 OAM/SP 配置为在启动联盟 SSO 操作时从 IdP 请求特定的联盟验证方法。

WLST 命令

可以使用以下 OAM WLST 命令:

这适用于 SAML 2.0 和 OpenID 2.0 协议。有关更多信息,请参见《 Fed Authentication Method Requests in OAM / SP 》文章。

测试

在此测试中,OAM/SP 与远程 SAML 2.0 IdP 合作伙伴与 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>

让我们为该 IdP 合作伙伴配置 OAM/SP,以便 SP 请求 IdP 使用映射到 urn:oasis:names:tc:SAML:2.0:ac:classes:X509 联盟验证方法的机制来验证用户:

  1. 通过执行以下命令进入 WLST 环境:$IAM_ORACLE_HOME/common/bin/wlst.sh
  2. 连接到 WLS 管理服务器:connect()
  3. 导航到“域运行时”分支:domainRuntime()
  4. 执行 setIdPPartnerRequestAuthnMethod() 命令:setIdPPartnerRequestAuthnMethod("AcmeIdP", "urn:oasis:names:tc:SAML:2.0:ac:classes:X509")
  5. 退出 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>

NameID 格式

SAML 2.0 协议允许 SP 从 IdP 请求在 IdP 发出断言时使用的特定 NameID 格式。

注意:SAML 1.1 和 OpenID 2.0 不提供此类机制

配置 OAM

管理员可以通过以下方式将 OAM/SP 配置为请求 SAML 2.0 AuthnRequest 格式的 NameID 格式:

OAM 管理控制台

要通过 OAM 管理控制台配置请求的 NameID 格式,请执行以下步骤:

  1. 转到 OAM 管理控制台:http(s)://oam-admin-host:oam-adminport/oamconsole
  2. 导航到 Identity FederationService Provider Administration
  3. 打开要修改的 IdP 合作伙伴
  4. 在“验证请求 NameID 格式”下拉框中,其中包含以下值之一:
    • NoneNameID 格式设置为默认值
    • 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 格式将设置为指定的格式
    • 在此示例中持久的 : The NameID format will be set urn:oasis:names:tc:SAML:2.0:nameidformat:persistent we selected Email Address`
  5. 单击保存

插图 OAM_Administration_Console.jpg 的说明

插图 OAM Administration Console.jpg 的说明

WLST 命令

要通过 OAM WLST setIdPPartnerNameIDFormat() 命令配置请求的 NameID 格式,请执行以下步骤:

  1. 通过执行以下命令进入 WLST 环境:$IAM_ORACLE_HOME/common/bin/wlst.sh
  2. 连接到 WLS 管理服务器:connect()
  3. 导航到“域运行时”分支:domainRuntime()
  4. 执行 setIdPPartnerNameIDFormat() 命令:setIdPPartnerNameIDFormat("PARTNER", "FORMAT", customFormat="CUSTOM")
    • 将“合作伙伴”替换为 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")
  5. 退出 WLST 环境:exit()

测试

在此测试中,OAM/SP 与远程 SAML 2.0 IdP 合作伙伴与 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>

通过 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 规范定义了 SP 请求 IdP 使用哪种绑定将用户重定向到具有 SAML 2.0 断言的 SP 的方式:ProtocolBinding 属性指示 IdP 应使用的绑定。它设置为:

SAML 2.0 规范还定义了使用 SAML 2.0 AuthnRequest 消息将用户从 SP 重定向到 IdP 的不同方法,因为 SP 可以发送消息:

配置 OAM

可以配置 OAM:

:用于发送 SAML 2.0 AuthnRequest 消息的绑定还将用于发送 SAML 2.0 LogoutRequestLogoutResponse 消息。

OAM 管理控制台

要通过 OAM 管理控制台配置 SSO 响应/断言绑定,请执行以下步骤:

  1. 转到 OAM 管理控制台:http(s)://oam-admin-host:oam-adminport/oamconsole
  2. 导航到 Identity Federation,Service Provider Administration
  3. 打开要修改的 IdP 合作伙伴。
  4. 选中“HTTP POST SSO 响应绑定”框以请求 IdP 通过 HTTP POST 返回 SSO 响应,否则取消选中它以请求 Artifact。
  5. 单击保存

插图 SSO_Response_Assertion_Configuration.jpg 的说明

WLST 命令

要通过 OAM WLST configureSAMLBinding() 命令配置 SSO 响应/断言绑定以及 AuthnRequest 绑定,请执行以下步骤:

  1. 通过执行以下命令进入 WLST 环境:$IAM_ORACLE_HOME/common/bin/wlst.sh
  2. 连接到 WLS 管理服务器:connect()
  3. 导航到“域运行时”分支:domainRuntime()
  4. 执行 configureSAMLBinding() 命令:configureSAMLBinding("PARTNER", "PARTNER_TYPE", binding, ssoResponseBinding="httppost")
  5. 将“合作伙伴”替换为合作伙伴名称
  6. 将 PARTNER_TYPE 替换为合作伙伴类型(idp 或 sp)
  7. 将绑定替换为用于发送 AuthnRequest 和 LogoutRequest/LogoutResponse 消息的绑定(大多数情况下应为 httpredirect;缺省值)
  8. (可选)指定 ssoResponseBinding 以指示应如何发送回 SSO 断言
  9. 退出 WLST 环境:exit()

测试

在此测试中,OAM/SP 与远程 SAML 2.0 IdP 合作伙伴集成,其 OOTB 配置从 IdP 请求 HTTP-POST 来发送 SSO 断言。根据此设置,当 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 帮助中心