Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Dynamics 365的aquire身份验证令牌上出现错误AADSTS90002_C#_Azure_Dynamics Crm_Adal_Dynamics Crm Online - Fatal编程技术网

C# Dynamics 365的aquire身份验证令牌上出现错误AADSTS90002

C# Dynamics 365的aquire身份验证令牌上出现错误AADSTS90002,c#,azure,dynamics-crm,adal,dynamics-crm-online,C#,Azure,Dynamics Crm,Adal,Dynamics Crm Online,尝试从.Net客户端使用Dynamics 365进行身份验证时,我遇到以下错误: AADSTS90002: Tenant authorize not found. This may happen if there are no active subscriptions for the tenant. Check with your subscription administrator. 以下是我当前使用的代码: AuthenticationParameters authenticationPa

尝试从.Net客户端使用Dynamics 365进行身份验证时,我遇到以下错误:

AADSTS90002: Tenant authorize not found. This may happen if there are no active subscriptions for the tenant. Check with your subscription administrator.
以下是我当前使用的代码:

AuthenticationParameters authenticationParameters = AuthenticationParameters.CreateFromResourceUrlAsync(new Uri("https://dev-aec-ssp.api.crm6.dynamics.com/api/data/v9.1/")).Result;
AuthenticationContext authenticationContext = new AuthenticationContext(authenticationParameters.Authority, false);
ClientCredential clientCredential = new ClientCredential("9cd8fe45-xxxx-xxxx-xxxx-e43ef81c803f", "abcdefghijk");
AuthenticationResult authenticationResult = null;
try
{
    authenticationResult = authenticationContext.AcquireTokenAsync("https://dev-aec-ssp.api.crm6.dynamics.com", clientCredential).Result;
}
catch (Exception ex)
{
    throw new Exception("Failed to authenticate with remote Dynamics service.", ex);
}
AcquireTokenAsync总是失败。

两点:

  • 组织url应该看起来像
    https://yourcrm.dynamics.com

  • 报告说:

  • {Guid}(其中Guid是租户ID

    其中域名是与您的租户关联的域

    string组织URL=”https://yourcrm.dynamics.com";
    字符串appKey=“*******”;
    字符串aadInstance=”https://login.microsoftonline.com/";
    字符串tenantID=“myTenant.onmicrosoft.com”;
    字符串clientId=“UserGUID****”;
    公共任务SendData()
    {
    返回AuthenticateWithCRM();
    }
    公共异步任务AuthenticateWithCRM()
    {
    ClientCredential clientcred=新的ClientCredential(clientId,appKey);
    AuthenticationContext AuthenticationContext=新的AuthenticationContext(aadInstance+tenantID);
    AuthenticationResult AuthenticationResult=等待authenticationContext.AcquireTokenAsync(organizationUrl,clientcred);
    使用(HttpClient HttpClient=new HttpClient())
    {
    httpClient.BaseAddress=新Uri(organizationUrl);
    .
    .
    }
    }
    
    Hi Arun。我相信这可能已经解决了问题。我现在正在运行一些测试。感谢您的帮助!@MarkMicallef很高兴听到,我正在通过AuthenticationContext上的AcquireTokenAsync()方法,这就是我之前遇到的问题。但是,当SendAsync()HttpClient上的请求被发送,我得到了未经授权的回复。我已经检查过,授权头中有一个承载令牌,所以我不确定我现在缺少什么。
        string organizationUrl = "https://yourcrm.dynamics.com";
        string appKey = "*****";
        string aadInstance = "https://login.microsoftonline.com/";
        string tenantID = "myTenant.onmicrosoft.com";
        string clientId = "UserGUID****";
        public Task<String> SendData()
        {
            return AuthenticateWithCRM();
        }
    
        public async Task<String> AuthenticateWithCRM()
        {
            ClientCredential clientcred = new ClientCredential(clientId, appKey);
            AuthenticationContext authenticationContext = new AuthenticationContext(aadInstance + tenantID);
            AuthenticationResult authenticationResult = await authenticationContext.AcquireTokenAsync(organizationUrl, clientcred);
            using (HttpClient httpClient = new HttpClient())
                {
                    httpClient.BaseAddress = new Uri(organizationUrl);
    
                    .
    
                    .
                 }
    
        }