【问题标题】:Is it possible to use a service principal to authenticate against dynamics crm online?是否可以使用服务主体对动态 crm 在线进行身份验证?
【发布时间】:2016-07-07 16:42:47
【问题描述】:

我尝试了以下方法:

            AuthenticationParameters ap = await AuthenticationParameters.CreateFromResourceUrlAsync(
                        new Uri($"{CrmServiceUrl}/api/data/"));

            var _authenticationContext = new AuthenticationContext(ap.Authority);

            AuthenticationResult result = await _authenticationContext.AcquireTokenAsync(ap.Resource, new ClientCredential(_clientID,secret));

            var client = new HttpClient();
            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", result.AccessToken);

            var req = await client.GetAsync($"{CrmServiceUrl}/api/data/v8.1/accounts?$select=name&$top=3");
            Console.WriteLine(await req.Content.ReadAsStringAsync());

但是越来越

HTTP Error 401 - Unauthorized: Access is denied

clientid 和 secret 是一个 azure 广告服务主体。

【问题讨论】:

    标签: azure dynamics-crm azure-active-directory


    【解决方案1】:

    我自己没有这样做,但我猜可能不会。要访问 CRM 中的数据,您需要在 CRM 中拥有一个用户帐户 - 这就是身份验证后应用 CRM 安全模型的方式。

    我建议在这里查看Authenticate users in Microsoft Dynamics CRM,它描述了您可以使用 CRM 进行身份验证的所有方式。

    【讨论】:

    • 最终添加了一个额外的用户,然后使用资源所有者流程针对 azure AD 获取该用户的令牌,然后一切正常。但是没有办法使用服务主体
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-17
    • 1970-01-01
    • 1970-01-01
    • 2017-02-20
    • 2018-11-03
    • 1970-01-01
    相关资源
    最近更新 更多