【发布时间】:2016-03-09 15:17:47
【问题描述】:
您好,感谢您抽出宝贵时间查看,
我最近被要求调查使用 CRM Online 2015 的集成,我在尝试使用原始 SOAP 请求进行身份验证时遇到了一些问题。
虽然我知道还有其他方法可以进行身份验证,主要是使用 CRM SDK,但我铁定的意志促使我找到使用 Raw SOAP 的解决方案。
我看到了 Jason Lattimer 的一个非常有用的博客:http://jlattimer.blogspot.co.uk/2015/02/soap-only-authentication-using-c.html
按照此示例,我使用 RAW SOAP 成功通过试用 CRM 帐户进行身份验证...太好了...完成...我错了。
当我将此示例指向 CRM 开发环境时,我收到了一个 SOAP 错误:
<?xml version="1.0" encoding="utf-8" ?>
<S:Envelope xmlns:S="http://www.w3.org/2003/05/soap-envelope" 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-wss-wssecurity-utility-1.0.xsd" xmlns:wst="http://schemas.xmlsoap.org/ws/2005/02/trust" xmlns:psf="http://schemas.microsoft.com/Passport/SoapServices/SOAPFault">
<S:Body>
<S:Fault>
<S:Code>
<S:Value>S:Sender</S:Value>
<S:Subcode>
<S:Value>wst:FailedAuthentication</S:Value>
</S:Subcode>
</S:Code>
<S:Reason>
<S:Text xml:lang="en-US">Authentication Failure</S:Text>
</S:Reason>
<S:Detail>
<psf:error>
<psf:value>0x80048821</psf:value>
<psf:internalerror>
<psf:code>0x80047860</psf:code>
<psf:text>Direct login to WLID is not allowed for this federated namespace</psf:text>
</psf:internalerror>
</psf:error>
</S:Detail>
</S:Fault>
</S:Body>
</S:Envelope>
我能想到的试用版和开发环境之间的唯一区别是开发环境设置使用 ADFS / AD On-Premises。
Fiddler 日志显示 Jason 的示例直接进入 login.microsoftonline.com,而 CRM SDK(有效)进入 dynamicscrmemea.accesscontrol.windows.net。
所以我相信这是问题所在!
我一直在讨论堆栈溢出/其他来源,我觉得这将对 SOAP 请求进行相对较小的更改,但我已经到了需要一些新的眼光/建议的地步。
有人有过这种设置的经验吗?谁能轻轻地把我推向正确的方向?
非常感谢
加雷斯
【问题讨论】:
标签: authentication soap dynamics-crm adfs dynamics-crm-online