相关疑难解决方法(0)

401-使用REST API动态CRM与Azure AD进行未经授权的身份验证

我正在尝试使用Azure AD oAuth 2身份验证访问Dynamics CRM Online REST API.为了做到这一点,我按照以下步骤操作:

- 我在Azure中注册了一个Web应用程序和/或web api
- 将动态CRM的权限配置为具有委派权限"以组织用户身份访问CRM Online"
- 并创建了一个密钥1年到期并保留客户ID.

在Azure上配置Web应用程序后,我在.NET/C#中创建了一个控制台应用程序,它使用ADAL发出简单请求,在这种情况下检索帐户列表:

    class Program
{
    private static string ApiBaseUrl = "https://xxxxx.api.crm4.dynamics.com/";
    private static string ApiUrl = "https://xxxxx.api.crm4.dynamics.com/api/data/v8.1/";
    private static string ClientId = "2a5dcdaf-2036-4391-a3e5-9d0852ffe3f2";
    private static string AppKey = "symCaAYpYqhiMK2Gh+E1LUlfxbMy5X1sJ0/ugzM+ur0=";

    static void Main(string[] args)
    {
        AuthenticationParameters ap = AuthenticationParameters.CreateFromResourceUrlAsync(new Uri(ApiUrl)).Result;

        var clientCredential = new ClientCredential(ClientId, AppKey);

        var authenticationContext = new AuthenticationContext(ap.Authority);
        var authenticationResult = authenticationContext.AcquireToken(ApiBaseUrl, clientCredential);

        var httpClient = new HttpClient();
        httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", authenticationResult.AccessToken); …
Run Code Online (Sandbox Code Playgroud)

rest dynamics-crm azure oauth-2.0 adal

13
推荐指数
2
解决办法
1万
查看次数

使用ADAL C#作为机密用户/守护程序服务器/服务器到服务器 - 401未经授权

参考未回答的问题:

401-使用REST API动态CRM与Azure AD进行未经授权的身份验证

Dynamics CRM Online 2016 - 守护程序/服务器应用程序Azure AD身份验证错误到Web Api

具有客户端凭据OAuth流的Dynamics CRM 2016 Online Rest API

我需要在天蓝云中的Web服务和Dynamics CRM Online 2016之间进行通信,而无需任何登录屏幕!该服务将有一个REST api,可以触发CRM上的CRUD操作(我也将实现身份验证)

我认为这称为"机密客户端"或"守护程序服务器"或只是"服务器到服务器"

我在Azure AD中正确设置了我的服务("委托权限=在线访问动态作为组织用户",没有其他选项)

我在VS中创建了一个ASP.NET WEB API项目,它在Azure中创建了我的WebService,并在CRM的Azure AD中创建了"应用程序".

我的代码看起来像这样(请忽略EntityType和returnValue):

 public class WolfController : ApiController
  {
    private static readonly string Tenant = "xxxxx.onmicrosoft.com";
    private static readonly string ClientId = "dxxx53-42xx-43bc-b14e-c1e84b62752d";
    private static readonly string Password = "j+t/DXjn4PMVAHSvZGd5sptGxxxxxxxxxr5Ki8KU="; // client secret, valid for one or two years
    private static readonly string ResourceId = "https://tenantname-naospreview.crm.dynamics.com/";


    public static async Task<AuthenticationResult> …
Run Code Online (Sandbox Code Playgroud)

c# azure asp.net-web-api adal dynamics-crm-2016

6
推荐指数
1
解决办法
3375
查看次数