使用SP公共证书加密SAML 2.0断言 - 组件空间

时间:2015-05-08 00:33:59

标签: c# xml encryption saml-2.0

自从我在WIF .NET 4.5中使用Component Space之前编写它以来,我理解(大部分)SAML过程。

我不明白的是如何使用SP证书加密XML断言。我发现的只是"它位于低级api项目中#34;但我无法找到它。

在方法SendSAMLResponse中,我使用我的pfx签署证书。如何使用SP的公共证书将断言加密到元素let vc = storyBoard.instantiateInitialViewController() as MyPresenterViewController vc.view.backgroundColor = .clearColor() vc.modalPresentationStyle = .OverCurrentContext viewControllerToPresentIn.presentViewController(vc, animated: true, completion: nil) 中?

我知道您可以使用"高级API"你可以在saml.config文件中设置一些值来加密它,但我必须添加更多属性,而且我不认为我可以使用"高级API"方式。

<saml2:EncryptedAssertion>

Low Level API mention

1 个答案:

答案 0 :(得分:2)

ComponentSpace.SAML2.Assertions.EncryptedAssertion类支持加密和解密SAML断言。

在您的代码中,替换以下行:

ok

使用:

ok

如果您使用的是SAML高级API,那么在SAML配置sam.config文件中,您只需指定服务提供商的证书并加密SAML断言即可。< / p>

例如,您的saml.config将包含:

samlResponse.Assertions.Add(samlAssertion);

这意味着在向指定的合作伙伴服务提供商发送SAML断言时,将使用合作伙伴的证书文件对SAML断言进行加密。

构建和发送SAML响应的代码,包括加密的SAML断言,将是:

// Encrypt the SAML assertion using the service provider's public key.
// Loading the x509Certificate is not shown but it could be loaded from a .CER file.        
EncryptedAssertion encryptedAssertion = new EncryptedAssertion(samlAssertion, x509Certificate);

// Add the encrypted assertion to the SAML response.        
samlResponse.Assertions.Add(encryptedAssertion);

我们发布的高级API ExampleIdentityProvider和MvcExampleIdentityProvider项目证明了这一点。