【问题标题】:Azure Ad B2B authentication retrieve data from external user CRMAzure Ad B2B 身份验证从外部用户 CRM 检索数据
【发布时间】:2020-11-14 05:32:24
【问题描述】:
【问题讨论】:
标签:
azure
azure-active-directory
dynamics-crm
microsoft-dynamics
azure-ad-b2b
【解决方案1】:
看看CRM connection string examples。您可以提示登录用户进行身份验证。它使用当前登录的用户通过 OAuth 创建到 Common Data Service 的新连接。
我想连接到 CRM 以使用某个项目的解决方案,因此我通过参考 PowerApps samples repo 来使用 CRM SDK。我的项目使用 Azure B2B 对用户进行身份验证,我希望同一用户连接到 CRM。所以我使用了On-Behalf-Of flow。
在对 AD 应用程序的用户进行身份验证后,我首先获得了访问令牌。然后我使用此令牌使用 UserAssertion 为目标组织获取另一个令牌(例如:https://org12345.crm.dynamics.com/)。您需要像 Registering AD App 这样添加 Dynamics CRM 权限。现在,一旦我有了目标组织的令牌,我就可以像这样使用它来连接到 CRM:
Uri serviceUrlDestination = new Uri(orgUrl + @"/xrmservices/2011/organization.svc/web?SdkClientVersion=8.2");
OrganizationWebProxyClient sdkServiceDestination = new OrganizationWebProxyClient(serviceUrlDestination, false);
sdkServiceDestination.HeaderToken = AccessToken;
CrmServiceClient serviceClient = new CrmServiceClient(sdkServiceDestination);
我不知道如何检索登录用户的联系人列表,因为我主要将其用于解决方案,但是一旦您从登录用户的上下文连接到 CRM,我认为您应该能够执行其他操作操作也是如此。