当前位置: 首页 > 知识库问答 >
问题:

是否需要验证SAML断言

马丰
2023-03-14

作为服务提供商,我试图通过从身份提供商(IdP)获取SAML断言(SAML 1.0)来验证我页面上的用户。执行以下步骤(非常抽象):

  1. 用户访问我的页面
  2. 我将用户重定向到用户进行身份验证的IdP。
  3. 我得到了一个SAML工件,通过它我向IdP请求SAML断言。
  4. IdP将SAML断言直接发送回我的页面。
  5. ?

此过程是否足以确保用户身份验证是合法的?我是否只是在步骤 5 中授予用户对我服务的访问权限,还是必须通过验证断言中的签名来确保 SAML 断言有效?如果是这样,我该怎么做?我是否错过了任何其他步骤?

共有2个答案

丁振海
2023-03-14

我简短的个人建议:如果IDP已经签署了断言,验证它的关键应该已经在元数据中,验证它应该是一个简单的操作,并且具有很大的安全优势。那就去做吧。

然而...(长答案)很难说什么是安全的,什么不是。这完全取决于你需要对你的网站有多安全。使用断言是一种使它更安全的方法。

这样,用户本身就无法编辑断言。签名是更安全的一步,可确保断言来自 IDP 并且未发生更改。

没有它,攻击者就有可能伪装成IDP,将工件重定向到自己的服务器。然后,攻击者可以用他想要的任何断言来响应。另一种情况是,如果断言不受签名保护,它可能会在互联网传输过程中的某个地方被更改。

对于任何安全控制,您都必须权衡用户身份验证对您的重要性以及绕过它的人的连续性。

江棋
2023-03-14

不,如果您使用工件解析协议,如果您信任传输,则无需验证断言的签名。如果传输是https url并且您的服务器具有一组正确的受信任根证书,则通常可以信任传输。

SAML2标准(核心,第5.3节)规定,如果一个断言包含在另一个已签名的元素中,则该断言应被视为已正确签名。在工件resu lout的情况下,这意味着覆盖整个工件解析响应消息的签名足以考虑要签名的断言。该标准进一步指出,通过认证的SLL连接接收的SAML消息可以被认为是正确签名的,如果由配置文件定义的话。

查看 WebSSO 配置文件,它指出,对于工件解析(配置文件,4.1.4.4),“使用工件解析配置文件取消引用工件必须相互认证、完整性受保护且保密。恕我直言,哪个是由正确设置的https连接覆盖的。

但是,如果您以完全管理的方式进行SAML2,那么您还应该为特定设置提供一个部署配置文件,明确定义https连接是否可信。

 类似资料:
  • 我是从IDP接收SAML断言签名的服务提供商。我在Tomcat上使用JOSSO来使用断言。这里的问题是我无法验证断言签名。 IDP证书使用别名“IDP”上传到我的密钥库。 在验证sig时,我得到以下错误: 为什么JOSSO无法检测密钥库中的证书并验证签名?我需要以不同的方式定义别名吗?

  • 问题内容: 以下是我的代码段。我想使用angular来验证我的下拉菜单。 有效表示: 有效值可以是“选择服务”以外的任何值,这是我的默认值。 像其他ASP.net的下拉列表一样,需要字段验证器DefaultValue =“ 0”,因此在这里,我的下拉列表将与服务绑定,我想选择除“选择服务”之外的所有其他值。 问题答案: 您需要在下拉列表中添加属性,然后需要添加属性,然后可以使用引用错误: HTML

  • 我希望确认有效的已签名 SAML 注销请求是否需要 RelayState。 我们已经将微软的ADFS 2012 R2与甲骨文的身份联合会联合起来,其中ADFS是SP,OIF是IdP。作为基础,我们遵循将ADFS 2.0/3.0 SP与OIF IdP集成。 一切正常,除了注销。我们有另一个 SP 执行注销并与 OIF 合作。我们发现的一个区别是,ADFS 不会发送带有其签名注销请求的 RelaySt

  • 我想知道SAML解决方案(身份提供者或服务提供商)是否需要支持SAML元数据交换(即SAML元数据规范),以便被定义为完全符合SAML 2.0。 查看SAML一致性文档,不太清楚根据RFC 2119,这是必须的、应该的还是可能的。 任何想法我应该在哪里寻找? 裁判: http://docs.oasis-open.org/security/saml/v2.0/saml-conformance-2.0

  • 我尝试使用@ControllerAdvise+@ExceptionHandler来捕获ConstraintViolationException,但是它似乎是以前捕获的,抛出的是TransactionSystemException。 验证数据是非常基本的事情,但出于某种原因,在搜索了很多次之后,我还没有找到解决方案。 编辑:显示代码:

  • 我可以通过HTTP-Redirect绑定登录和接收SAMLResponse,也可以使用privatekey解密和检索声明。 我的问题仍然是,我们需要验证saml响应(ADFS)吗?如果是如何做到这一点 我需要使用IP(身份提供商)公钥吗?它将在IP(元数据)中可用吗? 我在下面的请求参数中有SAML响应 SAMLACK=签名=hashvalue sigAlg=sha256 如何验证?