自从我在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>
答案 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项目证明了这一点。