0

我是这个声明和 SAML 概念的新手。我正在使用来自 ASP.NET 的 WIF,并从我的 IDP 收到以下请求。我通过 http 请求发送了用户名/密码并收到了此 SAML 响应。我现在具体做什么?我听说我需要验证签名和密钥,如果需要,如何(.NET)以及为什么?

<EncryptedAssertion xmlns="urn:oasis:names:tc:SAML:2.0:assertion">
- <xenc:EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#">
<xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc" /> 
- <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
- <e:EncryptedKey xmlns:e="http://www.w3.org/2001/04/xmlenc#">
- <e:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p">
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /> 
</e:EncryptionMethod>
- <KeyInfo>
- <o:SecurityTokenReference xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
- <X509Data>
- <X509IssuerSerial>
<X509IssuerName>CN=LeastPrivilegeCA</X509IssuerName> 
<X509SerialNumber>458206499362374248562711</X509SerialNumber> 
</X509IssuerSerial>
</X509Data>
</o:SecurityTokenReference>
</KeyInfo>
- <e:CipherData>
<e:CipherValue>SOME DATA</e:CipherValue> 
</e:CipherData>
</e:EncryptedKey>
</KeyInfo>
- <xenc:CipherData>
<xenc:CipherValue>SOME DATA</xenc:CipherValue> 
</xenc:CipherData>
</xenc:EncryptedData>
</EncryptedAssertion>
4

1 回答 1

1

要将 SAML 2.0 与 Windows Identity Foundation (WIF) 结合使用,您需要SAML 2.0 协议的 WIF 扩展。下载后,您会发现一些关于如何使用 SAML 令牌进行身份验证的好示例。

您真的不需要手动执行任何操作来解析此令牌,因为 WIF 应该为您管理所有这些。您只需要确保安装并配置了正确的证书即可解密消息。如果您使用的是 SAML 2.0 扩展,这将在 web.config 中引用的服务提供者配置中进行设置:

<microsoft.identityModel.saml metadata="bin\App_Data\serviceprovider.xml">
    <!-- The location of the configuration files of all the partners this service trusts. -->
    <identityProviders>
        <metadata file="bin\App_Data\identityprovider.xml"/>
    </identityProviders>
</microsoft.identityModel.saml>

希望这会有所帮助。

于 2012-02-01T20:15:27.167 回答