c# 签名 java 验证_.net – 从C#验证java SAML签名

如何在.Net C#中验证用

Java创建的SAML签名?

这是我从Java获得的SAML签名:

zEL7mB0Wkl+LtjMViO1imbucXiE=

jpIX3WbX9SCFnqrpDyLj4TeJN5DGIvlEH+o/mb9M01VGdgFRLtfHqIm16BloApUPg2dDafmc9DwL

Pyvs3TJ/hi0Q8f0ucaKdIuw+gBGxWFMcj/U68ZuLiv7U+Qe7i4ZA33rWPorkE82yfMacGf6ropPt

v73mC0bpBP1ubo5qbM4=

MIIDBDCCAeygAwIBAgIIC/ktBs1lgYcwDQYJKoZIhvcNAQEFBQAwNzERMA8GA1UEAwwIQWRtaW5D

QTExFTATBgNVBAoMDEVKQkNBIFNhbXBsZTELMAkGA1UEBhMCU0UwHhcNMDkwMjIzMTAwMzEzWhcN

MTgxMDE1MDkyNTQyWjBaMRQwEgYDVQQDDAsxMC41NS40MC42MTEbMBkGA1UECwwST24gRGVtYW5k

IFBsYXRmb3JtMRIwEAYDVQQLDAlPbiBEZW1hbmQxETAPBgNVBAsMCFNvZnR3YXJlMIGfMA0GCSqG

SIb3DQEBAQUAA4GNADCBiQKBgQCk5EqiedxA6WEE9N2vegSCqleFpXMfGplkrcPOdXTRLLOuRgQJ

LEsOaqspDFoqk7yJgr7kaQROjB9OicSH7Hhsu7HbdD6N3ntwQYoeNZ8nvLSSx4jz21zvswxAqw1p

DoGl3J6hks5owL4eYs2yRHvqgqXyZoxCccYwc4fYzMi42wIDAQABo3UwczAdBgNVHQ4EFgQUkrpk

yryZToKXOXuiU2hNsKXLbyIwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBSiviFUK7DUsjvByMfK

g+pm4b2s7DAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDQYJKoZIhvcNAQEF

BQADggEBAKb94tnK2obEyvw8ZJ87u7gvkMxIezpBi/SqXTEBK1by0NHs8VJmdDN9+aOvC5np4fOL

fFcRH++n6fvemEGgIkK3pOmNL5WiPpbWxrx55Yqwnr6eLsbdATALE4cgyZWHl/E0uVO2Ixlqeygw

XTfg450cCWj4yfPTVZ73raKaDTWZK/Tnt7+ulm8xN+YWUIIbtW3KBQbGomqOzpftALyIKLVtBq7L

J0hgsKGHNUnssWj5dt3bYrHgzaWLlpW3ikdRd67Nf0c1zOEgKHNEozrtRKiLLy+3bIiFk0CHImac

1zeqLlhjrG3OmIsIjxc1Vbc0+E+z6Unco474oSGf+D1DO+Y=

我知道解析SAML,我需要验证签名.

我试过这个:

public bool VerifySignature()

{

X509Certificate2 certificate = null;

XmlDocument doc = new XmlDocument();

XmlElement xmlAssertionElement = this.GetXml(doc);

doc.AppendChild(xmlAssertionElement);

// Create a new SignedXml object and pass it

// the XML document class.

SamlSignedXml signedXml = new SamlSignedXml(xmlAssertionElement);

// Get signature

XmlElement xmlSignature = this.Signature;

if (xmlSignature == null)

{

return false;

}

// Load the signature node.

signedXml.LoadXml(xmlSignature);

// Get the certificate used to sign the assertion if information about this

// certificate is available in the signature of the assertion.

foreach (KeyInfoClause clause in signedXml.KeyInfo)

{

if (clause is KeyInfoX509Data)

{

if (((KeyInfoX509Data)clause).Certificates.Count > 0)

{

certificate = (X509Certificate2)((KeyInfoX509Data)clause).Certificates[0];

}

}

}

if (certificate == null)

{

return false;

}

return signedXml.CheckSignature(certificate, true);

}

它验证在.Net中签名的SAML的签名,但不验证此Java签名.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值