为了账号安全,请及时绑定邮箱和手机立即绑定

使用C#在XML中进行SAML断言

使用C#在XML中进行SAML断言

C#
料青山看我应如是 2019-09-06 16:37:55
这是我面临的问题,需要一些帮助/指导。我已经从我的引擎生成了一条XML消息,需要将其解析为服务。为此,我必须将该消息更改为SOAP消息并在其上插入SAML令牌。我正在尝试使用C#代码执行此操作。下面是我生成的输入消息和预期输出:输入消息:删除已在SOAP正文中插入的输入消息期望的输出消息:<?xml version='1.0' encoding='UTF-8'?><S:Envelope    xmlns:S="http://www.w3.org/2003/05/soap-envelope"    xmlns:wsse11="http://docs.oasisopen.org/wss/oasis-wss-wssecurity-secext-1.1.xsd"    xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"    xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wsswssecurity-utility-1.0.xsd"    xmlns:xs="http://www.w3.org/2001/XMLSchema"    xmlns:ds="http://www.w3.org/2000/09/xmldsig#"    xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion"    xmlns:exc14n="http://www.w3.org/2001/10/xml-exc-c14n#">    <S:Header>        <To mustUnderstand="true"            xmlns="http://www.w3.org/2005/08/addressing">https://localhost:443/Gateway/PatientDiscovery/1_0/NwHINService/NwHINPatientDiscovery         </To>        <Action mustUnderstand="true"            xmlns="http://www.w3.org/2005/08/addressing">urn:hl7-org:v3:PRPA_IN201305UV02:CrossGatewayPatientDiscovery        </Action>        <ReplyTo mustUnderstand="true"            xmlns="http://www.w3.org/2005/08/addressing">            <Address>http://www.w3.org/2005/08/addressing/anonymous</Address>        </ReplyTo>        <MessageID mustUnderstand="true"            xmlns="http://www.w3.org/2005/08/addressing">461433e3-4591-453b-9eb6-791c7f5ff882        </MessageID>        <wsse:Security S:mustUnderstand="true">            <wsu:Timestamp wsu:Id="_1"                xmlns:ns17="http://docs.oasis-open.org/ws-sx/wssecureconversation/200512"                xmlns:ns16="http://schemas.xmlsoap.org/soap/envelope/">                <wsu:Created>2012-06-08T18:31:44Z</wsu:Created>                <wsu:Expires>2012-06-08T18:36:44Z</wsu:Expires>            </wsu:Timestamp>    使用X509证书我可以创建签名部分。但是,我无法创建SAML断言和SOAP消息。如果有人可以帮助/指导我这将是一个很大的帮助。这是我在C#中的代码:删除我的代码因为它已经是主代码库的一部分
查看完整描述

3 回答

?
慕标琳琳

TA贡献1830条经验 获得超9个赞

感谢您提供详细信息..我收到了SOAP消息。但XML应该在<soap:Body> </ soap:Body>中。签名也应该位于<ds:SignedInfo>标记内。请参阅我提到所需格式的输出消息。

查看完整回答
反对 回复 2019-09-06
?
侃侃无极

TA贡献2051条经验 获得超10个赞

更改自:doc.LoadXml(Encoding.UTF8.GetString(xmlBytes)); To:issuer.InnerText = Encoding.UTF8.GetString(xmlBytes);

查看完整回答
反对 回复 2019-09-06
  • 3 回答
  • 0 关注
  • 727 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信