.NET Fedlet 可以对外出的 XML(可扩展标记语言)请求进行加密,对接收的针对 NameID、Attribute 和 Assertion 元素的响应进行解密。
使用 Microsoft Management Console 的证书管理单元将 X.509 证书导入到本地计算机帐户内的个人文件夹中。要使用此管理单元,请参见以下 Microsoft 文章:
通过查看“属性”对话框并输入值,为此证书指定一个易记名称。(保存此值以在步骤 4 中使用。)
为 Internet Information Server (IIS) 使用的用户帐户设置相应的权限,以允许其读取证书,如 Microsoft 文章中所述。例如:
在 .NET Fedlet 的扩展元数据文件 (sp-extended.xml) 中,指定在步骤 2 中指定的易记名称,作为 encryptionCertAlias 属性的值。例如:
<Attribute name="encryptionCertAlias"> <Value>MyFedlet</Value>
在 .NET Fedlet 的服务提供者元数据文件 (sp.xml) 中,添加加密密钥的 KeyDescriptor。
使用之前使用过的 Microsoft Management Console 证书管理单元导出以 Base64 编码形式包括在 KeyDescriptor XML(可扩展标记语言)块中的证书的公钥。此 KeyDescriptor 必须是 SPSSODescriptor 中的第一个子元素。例如:
<KeyDescriptor use="encryption"> <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <ds:X509Data> <ds:X509Certificate> MIICQDCCAakCBEeNB0swDQYJKoZIhvcNAQEEBQAwZzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNh bGlmb3JuaWExFDASBgNVBAcTC1NhbnRhIENsYXJhMQwwCgYDVQQKEwNTdW4xEDAOBgNVBAsTB09w ZW5TU08xDTALBgNVBAMTBHRlc3QwHhcNMDgwMTE1MTkxOTM5WhcNMTgwMTEyMTkxOTM5WjBnMQsw CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEUMBIGA1UEBxMLU2FudGEgQ2xhcmExDDAK BgNVBAoTA1N1bjEQMA4GA1UECxMHT3BlblNTTzENMAsGA1UEAxMEdGVzdDCBnzANBgkqhkiG9w0B AQEFAAOBjQAwgYkCgYEArSQc/U75GB2AtKhbGS5piiLkmJzqEsp64rDxbMJ+xDrye0EN/q1U5Of\+ RkDsaN/igkAvV1cuXEgTL6RlafFPcUX7QxDhZBhsYF9pbwtMzi4A4su9hnxIhURebGEmxKW9qJNY Js0Vo5+IgjxuEWnjnnVgHTs1+mq5QYTA7E6ZyL8CAwEAATANBgkqhkiG9w0BAQQFAAOBgQB3Pw/U QzPKTPTYi9upbFXlrAKMwtFf2OW4yvGWWvlcwcNSZJmTJ8ARvVYOMEVNbsT4OFcfu2/PeYoAdiDA cGy/F2Zuj8XJJpuQRSE6PtQqBuDEHjjmOQJ0rV/r8mO1ZCtHRhpZ5zYRjhRC9eCbjx9VrFax0JDC /FfwWigmrW0Y0Q== </ds:X509Certificate> </ds:X509Data> </ds:KeyInfo> <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc"> <KeySize xmlns="http://www.w3.org/2001/04/xmlenc#">128</KeySize> </EncryptionMethod> </KeyDescriptor>
重新启动与 .NET 应用程序关联的应用程序池。
要测试此配置,请使用样例应用程序。此外,设置以下属性以加密请求和解密来自包含所配置元数据的适当更改的身份认证提供者的响应:
Assertion:将 sp-extended.xml 元数据文件中的 wantAssertionEncrypted 属性设置为 true,以让 .NET Fedlet 对接收的来自身份认证提供者的响应中的 EncryptedAssertion 元素进行解密。
Attribute:将 sp-extended.xml 元数据文件中的 wantAttributeEncrypted 属性设置为 true,以让 .NET Fedlet 对接收的来自身份认证提供者的响应中的 EncryptedAttribute 元素进行解密。
NameID:将 idp-extended.xml 元数据文件中的 wantNameIDEncrypted 属性设置为 true,以让 .NET Fedlet 对外出请求中的 NameID 元素进行加密。在 sp-extended.xml 中设置此相同属性,以让 .NET Fedlet 对接收的来自身份认证提供者的响应中的 EncryptedID 元素进行解密。