Comment authentifier sans demande de CRM Dynamics webservices en ligne avec ADAL, NetStandard et Azure AD

voix
2

Je tente actuellement de créer une application Xamarin afin d'obtenir quelques informations d'une instance en ligne Dynamics 365. Le code qui authentifie avec AD et accéder à l'API CRM est déporté dans une bibliothèque NetStandard (v1.6).

J'utilise les nugets suivants:

  • Microsoft.IdentityModel.Clients.ActiveDirectory (3.13.9)
  • NETStandard.Library (1.6.1)

J'ai suivi le tutoriel suivant pour relier AD avec mon exemple Dynamics: https://nishantrana.me/2016/11/13/register-a-dynamics-365-app-with-azure-active-directory/

Voici mon aide ActiveDirectory:

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;
        }
    }

Et mon API CRM Client:

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;
        }
    }

Les paramètres utilisés pour CRMClient: Constructeur

AD Azure me donne un jeton de retour, mais UserInfo, TenantID et idToken sont tous null(Cela pourrait être une partie de la cause de mon problème).

À l'heure actuelle, le contenu est retourné au bureau HTML 365 page de connexion au lieu des données que je voulais obtenir.

Quelqu'un pourrait-il me aider?

Créé 30/03/2017 à 14:32
source utilisateur
Dans d'autres langues...                            


1 réponses

Créé 02/04/2017 à 02:59
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more