SAML 2.0 设置:元数据与无元数据
本文介绍了在两台 SAML 2.0 联盟服务器之间建立信任时使用 SAML 2.0 元数据的好处,而不是通过键入/复制/粘贴 URL 和证书手动提供和输入信息。
建立信任
在 SAML 2.0 WebSSO 上下文中建立信任的行为是配置 SAML 2.0 身份提供程序和 SAML 2.0 服务提供程序,以便它们可以执行联盟 SSO 操作。
建立信任涉及以下步骤:
-
在 SAML 2.0 身份提供者中创建合作伙伴条目,该条目表示具有以下信息的远程服务提供者
-
SP 的
EntityID或ProviderID,这是引用 SP 的唯一标识符 -
IdP 使用 SAML 断言重定向用户的断言使用者服务 URL
-
每个 URL 可能具有不同的绑定(例如
urn:oasis:names:tc:SAML:2.0:bindings:HTTPArtifact、urn:oasis:names:tc:SAML:2.0:bindings:HTTPPOST或urn:oasis:names:tc:SAML:2.0:bindings:PAOS) -
在 SAML 2.0 注销交换期间 IdP 重定向用户的注销服务 URL
-
每个绑定可能具有不同的绑定(例如
urn:oasis:names:tc:SAML:2.0:bindings:HTTPRedirect、urn:oasis:names:tc:SAML:2.0:bindings:HTTP- POST) -
每个服务可能有不同的 URL 来接收
LogoutRequest消息和LogoutResponse消息 -
与 SP 用于签署传出 SAML 2.0 消息(如
AuthnRequest)的私钥对应的 X.509 证书 -
LogoutRequest/LogoutResponse或ArtifactResolve消息 -
与 SP 用于解密由远程 IdPs 使用证书加密的传入 SAML 2.0 消息(如 SSO 响应内的断言/
NameID/Attribute元素)的私钥对应的 X.509 证书 -
使用以下信息在 SAML 2.0 服务提供者中创建代表远程身份提供者的合作伙伴条目
-
IdP 的
EntityID或ProviderID,这是引用 IdP 的唯一标识符 -
SP 使用 SAML
AuthnRequest重定向用户的单点登录服务 URL -
每个 URL 可能具有不同的绑定(例如
urn:oasis:names:tc:SAML:2.0:bindings:HTTPRedirect、urn:oasis:names:tc:SAML:2.0:bindings:HTTPPOST或urn:oasis:names:tc:SAML:2.0:bindings:SOAP) -
在 SAML 2.0 注销交换期间 SP 重定向用户的注销服务 URL
-
每个绑定可能具有不同的绑定(例如
urn:oasis:names:tc:SAML:2.0:bindings:HTTPRedirect、urn:oasis:names:tc:SAML:2.0:bindings:HTTP- POST) -
每个服务可能有不同的 URL 来接收
LogoutRequest消息和LogoutResponse消息 -
与 IdP 用于签署传出 SAML 2.0 消息的私钥对应的 X.509 证书,例如断言、
LogoutRequest/LogoutResponse或ArtifactResponse消息 -
与 IdP 用于解密由远程 SP 使用 (s) 加密的传入 SAML 2.0 消息的私钥(如注销请求中的 NameID 元素)对应的 X.509 证书
以上仅涵盖联邦 SSO 设置。如果联盟合作伙伴支持其他服务,例如属性授权和属性请求者,则需要交换更多服务 URL 和证书信息。
手动流程
如您所见,负责管理联盟服务器的管理员之间可能会交换大量信息,任何次要错误都可能导致联盟协议设置不正确并导致运行时错误。
手动建立信任可能会导致以下错误:
-
使用了错误的证书
-
服务 URL/绑定组合不正确,例如,仅用于对象绑定的断言使用者服务 URL 用于 HTTP-POST 绑定
-
URL 中的输入
-
在服务 URL 中错误地指定主机名:因为在联盟 SSO 操作期间使用 cookie。最初使用完全限定主机名,这是用户用于访问联盟服务器的公共端点。(IP 地址或非全限定主机名会导致错误)
-
在
ProviderIDs中键入 -
缺少 URL
这些错误导致:
-
使用不正确的证书时签名验证或解密失败 服务器引发错误,因为
-
证书无效
-
已行使的功能缺少 URL(例如,缺少注销 URL)
-
使用了不一致的主机名(全限定、IP 地址与非全限定)ProviderID 是未知的,由键入操作导致
-
由于使用不一致的主机名而产生的无限循环
-
上面列出的错误发生的时间比人们所想象的要多,这导致花时间追查为什么联邦 SSO 没有正常工作,这几乎指向联邦信托机构错误。
使用 SAML 2.0 元数据
SAML 2.0 规范定义元数据文档,该文档包含服务器必须了解其对应方以便与远程合作伙伴执行联合操作的所有信息。
这些信息包括:
-
服务 URL
-
服务的 SAML 绑定
-
签名和加密操作的证书
-
将对哪些消息进行签名 (AuthnRequest,Assertion)
-
联盟服务器支持的角色 (IdP,SP,Attribute Authority...)
SAML 2.0 元数据通常由联盟服务器本身生成,并由合作伙伴的联盟服务器使用:因此不会进行手动干预来创建和使用此文档,从而减少潜在错误数。
使用 SAML 2.0 元数据具有以下优点:
-
所有信息都包含在单个文档中
-
文档由联盟服务器生成和使用(签名可用于防止篡改)
-
未省略信息
-
数据一致(所有 URL 中使用的主机名相同)
更重要的是,它通过减少联盟信任建立期间出错的可能性来节省时间,以便稍后运行时错误的机会更少。
更多学习资源
浏览 docs.oracle.com/learn 上的其他实验室,或在 Oracle Learning YouTube 频道上访问更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 以成为 Oracle Learning Explorer。
有关产品文档,请访问 Oracle 帮助中心。
SAML 2.0 Setup Metadata vs No Metadata
F61884-01
September 2022
Copyright © 2022, Oracle and/or its affiliates.