我们要求在发送给IDP之前先签名SAML AuthnRequest。我们正在使用 Apache模块mod_mellon进行SAML实现。根据文档,我们在SP元数据xml文件中添加了以下属性,但仍未对请求进行签名。
AuthnRequestsSigned =“ true”
在SP元数据下面供参考。
<EntityDescriptor entityID="https://foo.com" xmlns="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<SPSSODescriptor AuthnRequestsSigned="true" WantAssertionsSigned="true" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
<KeyDescriptor use="signing">
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:X509Data>
<ds:X509Certificate>MIIC.....</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</KeyDescriptor>
<SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://foo.com/mellon/logout"/>
<AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://foo.com/mellon/postResponse" index="0"/>
</SPSSODescriptor>
</EntityDescriptor>
当我们访问应用程序时,请求仍未签名。如果遇到类似问题,有人可以提供帮助吗?
谢谢
答案 0 :(得分:0)
签名是用私钥而不是公钥创建的。
此处未使用SP元数据。
您需要在mellon配置中定义私钥
例如
MellonSPPrivateKeyFile /etc/apache2/mellon/ssotest.key