- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是否可以使用 ITfoxtec Identity Saml2 加密断言响应(开源 - https://itfoxtec.com/identitysaml2)?没找到任何东西。
GitHub 站点 ( https://github.com/ITfoxtec/ITfoxtec.Identity.Saml2 ) 提到解密,但没有提到加密。似乎也没有任何有关加密的示例。
感谢任何帮助。谢谢。
最佳答案
在 saml2postbinding 类中,将 BindInternal 方法替换为以下代码。
protected override Saml2PostBinding BindInternal(Saml2Request saml2RequestResponse, string messageName)
{
BindInternal(saml2RequestResponse);
var element1 = XmlDocument.CreateElement("saml2", "EncryptedAssertion", "urn:oasis:names:tc:SAML:2.0:assertion");
XmlDocument xmlDoc = new XmlDocument();
var assertionElements = XmlDocument.DocumentElement.SelectNodes($"//*[local-name()='{Saml2Constants.Message.Assertion}']");
var assertionElement = (assertionElements[0] as XmlElement).ToXmlDocument().DocumentElement;
var certificate = ITfoxtec.Identity.Saml2.Util.CertificateUtil.Load(@"F:\IT-FoxTec-Core Copy\ITfoxtec.Identity.Saml2-master (1)\ITfoxtec.Identity.Saml2-master\test\TestIdPCore\itfoxtec.identity.saml2.testwebappcore_Certificate.crt");
var wrappedAssertion = $@"<saml2:EncryptedAssertion xmlns:saml2=""urn:oasis:names:tc:SAML:2.0:assertion"">{assertionElement.OuterXml}</saml2:EncryptedAssertion>";
xmlDoc.LoadXml(wrappedAssertion);
var elementToEncrypt = (XmlElement)xmlDoc.GetElementsByTagName("Assertion", Saml2Constants.AssertionNamespace.OriginalString)[0];
element1.InnerXml = wrappedAssertion.ToXmlDocument().DocumentElement.SelectNodes($"//*[local-name()='{Saml2Constants.Message.Assertion}']")[0].OuterXml;
var element2 = wrappedAssertion.ToXmlDocument().DocumentElement;
var childNode = XmlDocument.GetElementsByTagName("Assertion", Saml2Constants.AssertionNamespace.OriginalString)[0];
XmlDocument.DocumentElement.RemoveChild(childNode);
var status = XmlDocument.DocumentElement[Saml2Constants.Message.Status, Saml2Constants.ProtocolNamespace.OriginalString];
XmlDocument.DocumentElement.InsertAfter(element1, status);
if (certificate == null) throw new ArgumentNullException(nameof(certificate));
var encryptedData = new EncryptedData
{
Type = EncryptedXml.XmlEncElementUrl,
EncryptionMethod = new EncryptionMethod(EncryptedXml.XmlEncAES256Url)
};
var algorithm = true ? EncryptedXml.XmlEncRSAOAEPUrl : EncryptedXml.XmlEncRSA15Url;
var encryptedKey = new EncryptedKey
{
EncryptionMethod = new EncryptionMethod(algorithm),
};
var encryptedXml = new EncryptedXml();
byte[] encryptedElement;
using (var encryptionAlgorithm = new AesCryptoServiceProvider())
{
encryptionAlgorithm.KeySize = 256;
encryptedKey.CipherData = new CipherData(EncryptedXml.EncryptKey(encryptionAlgorithm.Key, (RSA)certificate.PublicKey.Key, true));
encryptedElement = encryptedXml.EncryptData(elementToEncrypt, encryptionAlgorithm, false);
}
encryptedData.CipherData.CipherValue = encryptedElement;
encryptedData.KeyInfo = new KeyInfo();
encryptedData.KeyInfo.AddClause(new KeyInfoEncryptedKey(encryptedKey));
EncryptedXml.ReplaceElement((XmlElement)xmlDoc.GetElementsByTagName("Assertion", Saml2Constants.AssertionNamespace.OriginalString)[0], encryptedData, false);
EncryptedXml.ReplaceElement((XmlElement)XmlDocument.GetElementsByTagName("Assertion", Saml2Constants.AssertionNamespace.OriginalString)[0], encryptedData, false);
if ((!(saml2RequestResponse is Saml2AuthnRequest) || saml2RequestResponse.Config.SignAuthnRequest) && saml2RequestResponse.Config.SigningCertificate != null)
{
Cryptography.SignatureAlgorithm.ValidateAlgorithm(saml2RequestResponse.Config.SignatureAlgorithm);
XmlDocument = XmlDocument.SignDocument(saml2RequestResponse.Config.SigningCertificate, saml2RequestResponse.Config.SignatureAlgorithm, CertificateIncludeOption, saml2RequestResponse.Id.Value);
}
PostContent = string.Concat(HtmlPostPage(saml2RequestResponse.Destination, messageName));
return this;
}
这里的证书是任何依赖方的公钥证书。
关于encryption - ITfoxtec SAML 2.0 加密断言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53490568/
我正在使用 Nuget 的最新库,我需要从 GitHub 获取最新的库吗? 谢谢 最佳答案 扩展方法在 ITfoxtec.Identity.Saml2.MvcCore Nuget 包中的同名命名空间中
我必须从 azure 实现多个公司登录,那么如何执行此操作?现在我已经成功实现了使用 ITfoxtec.Identity.SAML2 的单个公司登录,但现在我必须登录多个公司,所以请指导我。 最佳答案
我正在尝试使用 IdentityServer4 和 ITfoxtec.Identity.Saml2 库实现 SAML2.0 身份验证。 第一步是通过 LDAP 连接登录,这部分运行良好,我得到了用户声
我是 SAML2 身份验证的新手,并尝试过使用 ITfoxtec。运行我的应用程序时出现此错误 AuthenticationException: The remote certificate is i
是否可以使用 ITfoxtec Identity Saml2 加密断言响应(开源 - https://itfoxtec.com/identitysaml2)?没找到任何东西。 GitHub 站点 (
是否可以使用 ITfoxtec Identity Saml2 加密断言响应(开源 - https://itfoxtec.com/identitysaml2)?没找到任何东西。 GitHub 站点 (
我在 ITfoxtec.Identity.Saml2.Mvc 包的帮助下使用 SAML2.0 AUTH,但我需要将 session 超时增加到 2 到 3 天。但目前有默认值。我们如何覆盖 sessi
我正在尝试让我的 ASP.NET MVC Web 应用程序向多个 IdP 提供 SSO,我想知道是否可以使用 ITfoxtec.SAML2 库支持这种情况。 我有许多不同的客户,其中有几个希望与我的服
在MVC的示例代码中,使用了itfoxtec.identity.saml2.testwebapp_Certificate.pfx: https://github.com/ITfoxtec/ITfoxt
使用ITfoxtec.Identity.Saml2,有没有什么办法可以将cookie信息保存在Redis中,如果pod被销毁,session将不存在,有什么解决办法吗? 最佳答案 在 ASP.NET
我是一名优秀的程序员,十分优秀!