AuthnRequest OAM 和 SP 中的设置
本文列出了各种 OAM/SP 设置,这些设置会影响在联盟 SSO 流中的 OAM 中创建 AuthnRequest 消息的方式。SP 使用 AuthnRequest 消息启动联合 SSO 操作并向 IdP 指示应如何执行该操作:
- 如何通过 IdP 质询用户
- 是否应该在 IdP 中质询用户,即使 IdP 中已存在该用户的会话
- 应在 SAML 断言中请求哪种
NameID格式 - 应从 IdP 请求哪个绑定(对象或 HTTP-POST)来发送断言
- OAM/SP 应使用哪个配置文件来发送 AuthnRequest 消息
协议
SAML 2.0、SAML 1.1 和 OpenID 2.0 协议定义不同的消息元素和规则,允许管理员在 SP 触发 SSO 操作时以不同的方式影响联盟 SSO 流:
- SAML 2.0 允许通过 AuthnRequest 消息进行广泛定制
- SAML 1.1 不允许任何自定义,因为规范未定义验证请求消息
- OpenID 2.0 允许进行一些自定义,主要通过 OpenID 2.0 扩展(如 PAPE 或 UI)
SAML 2.0
OAM/SP 允许为以下元素定制 SAML 2.0 AuthnRequest 消息:
ForceAuthn:
- 指示 IdP 是否应强制用户重新验证的布尔值,即使用户仍具有有效的会话
- 默认情况下设置为 false
IsPassive
- 指示是否允许 IdP 在联盟 SSO 操作过程中与用户交互的布尔值。
- 如果为 false,则联盟 SSO 操作可能会导致 NoPassive 错误代码失败,因为 IdP 无法标识用户
- 默认情况下设置为 false
RequestedAuthnContext
- 指示应如何在 IdP 中质询用户的元素
- 如果 SP 请求 IdP 未知或未配置 IdP 的联盟验证方法,则联盟 SSO 流会导致
NoAuthnContext错误代码失败 - 默认缺失
NameIDPolicy
- 指示 IdP 应包括在 SAML 断言中的
NameID格式的元素 - 如果 SP 请求 IdP 未知或未配置 IdP 的
NameID格式,则联盟 SSO 流会导致InvalidNameIDPolicy错误代码失败 - 如果缺失,IdP 通常使用在 IdP 上为此 SP 合作伙伴配置的默认 NameID 格式
- 默认缺失
ProtocolBinding
- 此元素指示 IdP 应使用哪个 SAML 绑定将用户重定向到具有 SAML 断言的 SP
- 设置为 Artifact 或 HTTP-POST
- 默认设置为 HTTP-POST
OAM/SP 还允许管理员将服务器配置为:
- 设置 OAM/SP 应使用哪个绑定将用户重定向到带有 SAML 2.0 AuthnRequest 消息的 IdP:
- 重定向或 HTTP-POST
- 默认情况下设置为“重定向”
- 设置在通过 SAML 2.0 注销消息注销期间 OAM/SP 应使用哪个绑定将用户重定向到 IdP:
- 重定向或 HTTP-POST
- 默认情况下设置为“重定向”
SAML 1.1
SAML 1.1 规范未定义启动联盟 SSO 操作时 SP 发送到 IdP 的消息。因此,无法配置 OAM/SP 以了解如何影响联盟 SSO 流的开始。
OpenID 2.0
OpenID 2.0 定义了几个扩展,SP/RP 可以使用这些扩展来影响联合 SSO 操作的发生方式:
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 请求的模式字段设置为checkid_immediate,否则设置为checkid_setup
测试
在此测试中,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 重新质询用户,即使该用户已经通过验证:
- 通过执行以下命令进入 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 设置,请执行以下操作:
- 通过执行以下命令进入 WLST 环境:
$IAM_ORACLE_HOME/common/bin/wlst.sh - 连接到 WLS 管理服务器:
connect() - 导航到“域运行时”分支:
domainRuntime() - 执行
configureIdPAuthnRequest()命令以显示合作伙伴configureIdPAuthnRequest(partner="AcmeIdP", displayOnly="true")上的 ForceAuthn/IsPassive 设置 - 从合作伙伴
configureIdPAuthnRequest(partner="AcmeIdP", delete="true")中删除 ForceAuthn/IsPassive 设置 - 退出 WLST 环境:
exit()
请求的联邦授权方法
在《 Fed Authentication Method Requests in OAM / SP 》文章中,我们讨论了如何通过在 SSO 请求消息中设置元素,将 OAM/SP 配置为在启动联盟 SSO 操作时从 IdP 请求特定的联盟验证方法。
WLST 命令
可以使用以下 OAM WLST 命令:
-
setIdPPartnerProfileRequestAuthnMethod(),用于在特定的 IdP 合作伙伴概要文件中配置请求的联盟验证方法,并接受以下参数:partnerProfile:IdP 合作伙伴概要文件的名称authnMethod:要请求的联盟验证方法displayOnly:一个可选参数,指示该方法是否应显示当前请求的联盟验证方法,而不是对其进行设置delete:一个可选参数,指示该方法是否应删除当前请求的联盟验证方法,而不是对其进行设置
-
setIdPPartnerRequestAuthnMethod(),使用请求的联盟验证方法配置指定的 IdP 合作伙伴条目,并接受以下参数: -
partner:IdP 合作伙伴的名称 -
authnMethod:要请求的联盟验证方法 -
displayOnly:一个可选参数,指示该方法是否应显示当前请求的联盟验证方法,而不是对其进行设置 -
delete:一个可选参数,指示该方法是否应删除当前请求的联盟验证方法,而不是对其进行设置
这适用于 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 联盟验证方法的机制来验证用户:
- 通过执行以下命令进入 WLST 环境:
$IAM_ORACLE_HOME/common/bin/wlst.sh - 连接到 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>
NameID 格式
SAML 2.0 协议允许 SP 从 IdP 请求在 IdP 发出断言时使用的特定 NameID 格式。
注意:SAML 1.1 和 OpenID 2.0 不提供此类机制
配置 OAM
管理员可以通过以下方式将 OAM/SP 配置为请求 SAML 2.0 AuthnRequest 格式的 NameID 格式:
- OAM 管理控制台,位于 IdP 合作伙伴条目中
- 用于修改 IdP 合作伙伴配置的 OAM WLST
setIdPPartnerNameIDFormat()命令
OAM 管理控制台
要通过 OAM 管理控制台配置请求的 NameID 格式,请执行以下步骤:
- 转到 OAM 管理控制台:
http(s)://oam-admin-host:oam-adminport/oamconsole - 导航到 Identity Federation 、 Service Provider Administration
- 打开要修改的 IdP 合作伙伴
- 在“验证请求
NameID格式”下拉框中,其中包含以下值之一:None:NameID格式设置为默认值Email Address:将设置NameID格式urn:oasis:names:tc:SAML:1.1:nameidformat:emailAddressX.509 Subject:将设置NameID格式urn:oasis:names:tc:SAML:1.1:nameidformat:X509SubjectNameWindows Name Qualifier:将设置NameID格式urn:oasis:names:tc:SAML:1.1:nameidformat:WindowsDomainQualifiedNameKerberos:将设置NameID格式urn:oasis:names:tc:SAML:2.0:nameidformat:kerberosTransient:将设置NameID格式urn:oasis:names:tc:SAML:2.0:nameidformat:transientUnspecified:将设置NameID格式urn:oasis:names:tc:SAML:1.1:nameidformat:unspecifiedCustom:在这种情况下,将显示一个字段,允许管理员指明要使用的定制NameID格式。NameID格式将设置为指定的格式- 在此示例中持久的
: TheNameIDformat will be seturn:oasis:names:tc:SAML:2.0:nameidformat:persistentwe selectedEmail Address`
- 单击保存

插图 OAM_Administration_Console.jpg 的说明
插图 OAM Administration Console.jpg 的说明
WLST 命令
要通过 OAM WLST setIdPPartnerNameIDFormat() 命令配置请求的 NameID 格式,请执行以下步骤:
- 通过执行以下命令进入 WLST 环境:
$IAM_ORACLE_HOME/common/bin/wlst.sh - 连接到 WLS 管理服务器:
connect() - 导航到“域运行时”分支:
domainRuntime() - 执行 setIdPPartnerNameIDFormat() 命令:
setIdPPartnerNameIDFormat("PARTNER", "FORMAT", customFormat="CUSTOM")- 将“合作伙伴”替换为 IdP 合作伙伴名称
- 将 FORMAT 替换为以下内容之一:
orafed-none:将设置 NameID 格式默认值orafed-emailaddress:将设置 NameID 格式urn:oasis:names:tc:SAML:1.1:nameidformat:emailAddressorafed-x509:将设置 NameID 格式urn:oasis:names:tc:SAML:1.1:nameidformat:X509SubjectNameorafed-windowsnamequalifier:将设置 NameID 格式urn:oasis:names:tc:SAML:1.1:nameidformat:WindowsDomainQualifiedNameorafed-kerberos:将设置 NameID 格式urn:oasis:names:tc:SAML:2.0:nameidformat:Kerberosorafed-transient:将设置 NameID 格式urn:oasis:names:tc:SAML:2.0:nameidformat:transientorafed-unspecified:将设置 NameID 格式urn:oasis:names:tc:SAML:1.1:nameidformat:unspecifiedorafed-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 与远程 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 应使用的绑定。它设置为:
- HTTP-POST 的
urn:oasis:names:tc:SAML:2.0:bindings:HTTPPOST之一 - 或
urn:oasis:names:tc:SAML:2.0:bindings:Artifact用于对象
SAML 2.0 规范还定义了使用 SAML 2.0 AuthnRequest 消息将用户从 SP 重定向到 IdP 的不同方法,因为 SP 可以发送消息:
- 通过 HTTP 重定向
- 或 HTTP POST
- (理论上可以使用其他绑定,例如 Artifact,但实际上不使用这些绑定)
配置 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。 - 导航到 Identity Federation,Service Provider Administration 。
- 打开要修改的 IdP 合作伙伴。
- 选中“HTTP POST SSO 响应绑定”框以请求 IdP 通过 HTTP POST 返回 SSO 响应,否则取消选中它以请求 Artifact。
- 单击保存。

插图 SSO_Response_Assertion_Configuration.jpg 的说明
WLST 命令
要通过 OAM WLST configureSAMLBinding() 命令配置 SSO 响应/断言绑定以及 AuthnRequest 绑定,请执行以下步骤:
- 通过执行以下命令进入 WLST 环境:
$IAM_ORACLE_HOME/common/bin/wlst.sh - 连接到 WLS 管理服务器:
connect() - 导航到“域运行时”分支:
domainRuntime() - 执行
configureSAMLBinding()命令:configureSAMLBinding("PARTNER", "PARTNER_TYPE", binding, ssoResponseBinding="httppost") - 将“合作伙伴”替换为合作伙伴名称
- 将 PARTNER_TYPE 替换为合作伙伴类型(idp 或 sp)
- 将绑定替换为用于发送 AuthnRequest 和
LogoutRequest/LogoutResponse消息的绑定(大多数情况下应为 httpredirect;缺省值) - 用于 HTTP-POST 绑定的
httppost - 用于 HTTP-Redirect 绑定的
httpredirect - (可选)指定
ssoResponseBinding以指示应如何发送回 SSO 断言 - 用于 HTTP-POST 绑定的
httppost - 对象绑定的
artifactfor示例为:configureSAMLBinding("AcmeIdP", "idp", "httpredirect", ssoResponseBinding="httppost") - 退出 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 帮助中心。
AuthnRequest Settings in OAM and SP
F59885-01
September 2022
Copyright © 2022, Oracle and/or its affiliates.