我是这个声明和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>
答案 0 :(得分:1)
要在Windows Identity Foundation(WIF)中使用SAML 2.0,您需要WIF Extension for the SAML 2.0 Protocol。下载后,您将找到一些关于如何使用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>
希望这有帮助。