在shibboleth SP中签名身份验证请求

阿克沙伊

我正在使用Shibboleth SP进行SAML授权。

最近,IdP更改了配置,现在需要签署AuthRequest。

IdP的元数据具有以下参数

<md:IDPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol"
WantAuthnRequestsSigned="true"><md:KeyDescriptor use="signing">

SP的shibboleth2.xml文件具有以下标记

<ApplicationDefaults entityID="...."
   REMOTE_USER="eppn persistent-id targeted-id email Email FirstName LastName NameID">

在IdP强制执行A​​uthRequest签名后,我们如下更改了shibboleth2.xml文件

<ApplicationDefaults entityID="..."
                         REMOTE_USER="eppn persistent-id targeted-id email 

Email FirstName LastName NameID" 
signing="true" encryption="true">

基本上,我添加了signing="true"encryption="true"

之后,生成的新元数据在标记中具有以下属性

<md:SPSSODescriptor AuthnRequestsSigned="1" 
protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol 
urn:oasis:names:tc:SAML:1.1:protocol urn:oasis:names:tc:SAML:1.0:protocol">

较早的AuthnRequestsSigned="1"属性不存在。

此后,当我尝试进行身份验证时,会出现以下错误,

<samlp:Status><samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Responder"/>
        <samlp:StatusMessage>Unable to verify the signature</samlp:StatusMessage>
    </samlp:Status>

问题1:我需要给IdP这个新的元数据吗?问题2:知道为什么会这样吗?问题3:是否需要更改配置中的其他内容?

PS在执行AuthRequest签名之前,它已经起作用了,所以我认为配置中没有其他问题。

这是AuthRequest示例

<samlp:AuthnRequest
    AssertionConsumerServiceURL="https://...SP-host.../Shibboleth.sso/SAML2/POST"
    Destination="https://...idp-host.../marrsso/idp/SSO.saml2"
    ID="...some-id..." IssueInstant="2019-01-11T14:13:25Z"
    ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Version="2.0"
    xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
    <saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">https://...entity-id.../shibboleth</saml:Issuer><samlp:NameIDPolicy AllowCreate="1"/></samlp:AuthnRequest>

我认为签名信息应作为请求的一部分放在此处。作为http请求,它与GET请求一样,对吗?当我在网络中看到请求时,我可以看到签名将用作查询参数在此处输入图片说明请求的状态代码为'200'

PCS

将签名作为查询字符串的一部分发送是很常见的。它就像一个预签名的URL。

  1. 仅在SP上启用“ signing = true”不应更改最初生成的密钥。因此,不需要重新发送元数据。与IdP一起检查SP的元数据最初是完整导入的,还是只是添加了依赖方和其他基本端点进行集成,如果不需要请求签名,则可能工作得很好。

  2. 如果IdP无法验证签名,则它们必须缺少SP的证书。为了确保在启用签名和加密之前和之后比较这两个元数据文件,它们应该匹配(特别是在证书周围),但要匹配已经确定的其他属性。否则,重新发送元数据。

  3. 在这种情况下,不需要其他配置更改。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Shibboleth SP 忽略 MetadataProvider

使用Python请求访问Shibboleth身份验证服务器的SSL错误

使用Shibboleth的asp.net MVC身份验证

Shibboleth IDP发送的Shibboleth SP无法解析属性

在SP端重新映射Shibboleth元素

Shibboleth 的反向代理不发送请求 POST

Angular单页应用程序(SPA)的Shibboleth身份验证

如何在R中使用httr对shibboleth多主机名网站进行身份验证

Shibboleth身份验证有任何Java应用程序吗?

FastCGI Shibboleth响应器仅应用于Shibboleth协议请求

Docker无法通过Apache和Shibboleth模块针对SSO /联合身份验证服务执行登录

Shibboleth SSO 连接到 SP 或维护用户存储

连接Shibboleth作为IdP和API Publisher作为SP

从shibboleth SP中检索自定义属性(最佳做法)

尝试访问Shibboleth SP元数据时出现500错误

OKTA(IdP)-具有反向代理到Tomcat的Shibboleth(SP)

单个 sp 在 shibboleth SSO 中连接多个 Idp

从AJP连接器请求中获取Shibboleth属性

为了实施SAML,我需要在主机上安装Shibboleth SP吗?

代理后面的docker容器中的shibboleth SP出现问题

Shibboleth SP注销不会重定向到我正确的服务器URL

设置新的Shibboleth IdP以与现有的SAML SP一起使用

Walmart.io 身份验证问题 - 无法对请求中的身份验证签名进行身份验证

Shibboleth保护的Gerrit安装

Google Storage - 签名的 url 请求的身份验证范围不足

将Shibboleth(v3)用作SP时,我可以在attribute-map.xml中映射属性值吗?

ColdFusion / Shibboleth-REMOTE_USER

Shibboleth IDP无法解析属性

验证WAVES KEEPER身份验证签名