繁体   English   中英

从 Java 到 Online Federated Dynamics CRM 2013 的 Web 服务身份验证

[英]Web Service Authentication to Online Federated Dynamics CRM 2013 from Java

我正在开发一个 Java 程序,通过 Web 服务与 Microsoft Dynamics CRM 2013 在线版本集成。 身份验证与本地 IDP 联合,而不是通过 Windows Live。 我在查找有关如何完成此操作的文档时遇到问题。 我看到的所有非 .NET 环境文档都没有展示如何在联合设置中完成集成。

是否可以通过 Java 在此身份验证配置中使用 Dynamics CRM Web 服务? 如果是这样,任何文档/代码示例表示赞赏。

根据我的研究,似乎不可能使用联合(本地 ADFS)ID 与 Dynamics Web 服务集成。 我们使用的 IDP 不响应 WS-Trust RequestSecurityToken,因此我无法检索 SAML。 不过,即使我是, 这篇文章也表明不可能检索 Dynamics SAML:

问题是必须对访问控制服务接受的 XML SOAP 消息进行签名,并且有关如何执行此操作的详细信息是 CRM SDK/身份模型的内部信息。

由于您无法对要发送到访问控制服务的 XML 消息进行签名,因此无法与 CRM 2011 集成。

文章继续指出解决方法是创建 Microsoft Online ID。 就我而言,这是 Office 365 中的云用户。将此用户添加到我的 Dynamics 实例后,我就可以使用问题中链接的文档中描述的方法。

为完整起见,以下是向https://login.microsoftonline.com/RST2.srf发出的 SOAP 请求示例

<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<s:Header>
    <a:Action s:mustUnderstand="1">http://schemas.xmlsoap.org/ws/2005/02/trust/RST/Issue</a:Action>
    <a:MessageID>urn:uuid:{GENERATE-GUID-HERE}</a:MessageID>
    <a:ReplyTo>
        <a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address>
    </a:ReplyTo>
    <VsDebuggerCausalityData xmlns="http://schemas.microsoft.com/vstudio/diagnostics/servicemodelsink">uIDPo4TBVw9fIMZFmc7ZFxBXIcYAAAAAbd1LF/fnfUOzaja8sGev0GKsBdINtR5Jt13WPsZ9dPgACQAA</VsDebuggerCausalityData>
    <a:To s:mustUnderstand="1">https://login.microsoftonline.com/RST2.srf </a:To>
    <o:Security s:mustUnderstand="1" xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
        <u:Timestamp u:Id="_0">
            <u:Created>{UTC-TIMESTAMP}</u:Created>
            <u:Expires>{UTC-TIMESTAMP}</u:Expires>
        </u:Timestamp>
        <o:UsernameToken u:Id="uuid-14bed392-2320-44ae-859d-fa4ec83df57a-1">
            <o:Username>{CLOUD-USERNAME}</o:Username>
            <o:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">{CLOUD-PASSWORD}</o:Password>
        </o:UsernameToken>
    </o:Security>
</s:Header>
<s:Body>
    <t:RequestSecurityToken xmlns:t="http://schemas.xmlsoap.org/ws/2005/02/trust">
        <wsp:AppliesTo xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
            <a:EndpointReference>
                <a:Address>urn:crmna:dynamics.com</a:Address>
            </a:EndpointReference>
        </wsp:AppliesTo>
        <t:RequestType>http://schemas.xmlsoap.org/ws/2005/02/trust/Issue</t:RequestType>
    </t:RequestSecurityToken>
</s:Body>
</s:Envelope>

替换以下字段:

  • MessageID : 随机 GUID
  • 时间戳/创建ISO-8601 格式的当前时间:YYYY-MM-DDThh:mm:ss.sssZ
  • 时间戳/过期ISO-8601 格式的过期时间:YYYY-MM-DDThh:mm:ss.sssZ
  • 用户名:您的云用户名
  • 密码:您的云密码

响应将包含一个 KeyIdentifier 和 2 个 CypherValue 元素。 使用这些来构造对 CRM 的请求的 SOAP 标头。 完整代码可以在问题中引用的链接中找到。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM