C# 如何使用ADAL、NetStandard和Azure AD在不提示CRM Dynamics Online Web服务的情况下进行身份验证
我目前正在尝试创建一个Xamarin应用程序,以便从Dynamics 365在线实例获取一些信息。通过AD进行身份验证并访问CRM api的代码被导出到NetStandard(v1.6)库中 我使用以下NUGET:C# 如何使用ADAL、NetStandard和Azure AD在不提示CRM Dynamics Online Web服务的情况下进行身份验证,c#,azure-active-directory,dynamics-crm-online,adal,.net-standard,C#,Azure Active Directory,Dynamics Crm Online,Adal,.net Standard,我目前正在尝试创建一个Xamarin应用程序,以便从Dynamics 365在线实例获取一些信息。通过AD进行身份验证并访问CRM api的代码被导出到NetStandard(v1.6)库中 我使用以下NUGET: Microsoft.IdentityModel.Clients.ActiveDirectory(3.13.9) NETStandard.Library(1.6.1) 为了将广告链接到我的Dynamics实例,我遵循了以下教程: 这是我的ActiveDirectory帮助程序: p
- Microsoft.IdentityModel.Clients.ActiveDirectory(3.13.9)
- NETStandard.Library(1.6.1)
public static class ADHelper
{
public async static Task<AuthenticationResult> GetAuthAsync(Uri uri, ClientCredential creditential)
{
AuthenticationParameters ap = await AuthenticationParameters.CreateFromResourceUrlAsync(uri);
String authorityUrl = ap.Authority;
String resourceUrl = ap.Resource;
AuthenticationResult result = null;
AuthenticationContext authContext = new AuthenticationContext(authorityUrl, false);
result = await authContext.AcquireTokenAsync(resourceUrl, creditential);
return result;
}
}
用于CRMClient构造函数的参数:
- =>数据OData端点
- ClientCredential(AppId,AppKey)=>作为凭据
null
(这可能是我问题的部分原因)
目前,返回的内容是HTML office 365登录页面,而不是我想要获取的数据
有人能帮我吗
public class CRMClient
{
private AuthenticationResult Auth { get; set; }
private Uri baseUri { get; set; }
public CRMClient(Uri uri, ClientCredential creditential)
{
baseUri = uri;
Auth = ADHelper.GetAuthAsync(uri, creditential).Result;
}
public void getObject()
{
using (HttpClient client = new HttpClient())
{
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", Auth.AccessToken);
client.Timeout = new TimeSpan(0, 2, 0);
client.BaseAddress = baseUri;
HttpResponseMessage message = client.GetAsync("/accounts").Result;
String content = message.Content.ReadAsStringAsync().Result;
}
}