2017-03-29 2 views
0

J'ai un projet Xamarin.iOS et je veux m'authentifier avec Azure. L'objectif final est de ne pas avoir de login utilisateur et de s'authentifier en coulisse. Lorsque j'instancie AuththenticationContext, j'obtiens cette erreur. "Impossible de charger le fichier ou l'assembly 'Microsoft.IdentityModel.Clients.ActiveDirectory.Platform'". J'ai installé Microsoft.IndentityModel.Clients.ActiveDirectory v3.13.9 de Nuget et l'instruction using est en haut du code. La DLL est définie pour copier local. Je ne sais pas pourquoi ça ne marche pas. J'ai même désintallé le paquet Nuget et ajouté les DLL au projet et les référencé directement et obtenu la même erreur. Voici le code que j'essaie de faire fonctionner. Encore une fois, il se casse quand AuthenticationContext est instancié, donc je ne peux même pas tester le reste. J'ai utilisé les deux sites Web suivants pour obtenir des conseils, https://blog.xamarin.com/authenticate-xamarin-mobile-apps-using-azure-active-directory/Impossible de charger le fichier ou l'assemblage 'Microsoft.IdentityModel.Clients.ActiveDirectory.Platform'

J'ai trouvé ce "bug" ici, mais le correctif ne fonctionne pas, et il n'a pas de sens pour moi. Je ne sais pas où mettre le code et j'obtiens aussi l'erreur d'accès. https://forums.xamarin.com/discussion/45425/azure-authentication-microsoft-identitymodel-clients-activedirectory-platform-no-working

var authContext = new AuthenticationContext(aadInstance); 
     ClientCredential clientCredential = new ClientCredential(clientId, appKey); 

      // ADAL includes an in memory cache, so this call will only send a message to the server if the cached token is expired. 
       AuthenticationResult result = authContext.AcquireTokenAsync(AMServiceResourceId, clientCredential).Result; 

      WebRequest Request = 
       WebRequest.Create(
        new Uri(@<API call to test connection>)); 
      Request.ContentType = "application/json"; 
      Request.Method = "Get"; 
      Request.Proxy = null; 
      Request.Timeout = 5000; 
      Request.Headers.Add("Authorization", "Bearer" + result.AccessToken); 
+0

Puisque le débordement de pile ne me laissera pas publier plus de deux liens, parce que je n'ai pas assez de points de réputation. voici un autre lien que j'ai utilisé. https://blog.xamarin.com/put-adal-xamarin-forms/ –

+0

Pouvez-vous s'il vous plaît essayer avec ADAL.NET 3.17. Nous l'avons publié aujourd'hui. –

Répondre

0

Dans l'appdelegate, j'ai dû instancier une méthode statique pour enregistrer la DLL ADAL. Cela a résolu le problème.

PlatformParameters pp = new PlatformParameters(Window.RootViewController); 
0

Lorsque vous installez la bibliothèque ADAL de Nuget, Nuget doit installer deux DLL distinctes dans chaque projet de votre solution Xamarin. Un avec l'espace de noms Microsoft.IdentityModel.Clients.ActiveDirectory et un avec Microsoft.IdentityModel.Clients.ActiveDirectory.Platform. La première est la plus grande partie de la logique de la bibliothèque, tandis que la dernière est une logique spécifique à la plate-forme pour chaque plate-forme cible (iOS, Android, etc.). Assurez-vous qu'après l'installation de Nuget, les deux packages sont présents dans les dépendances de chaque projet. Pour s'assurer que Nuget installe le bon paquet, assurez-vous que chaque projet cible la plate-forme appropriée dans les propriétés/paramètres du projet.

Si vous dites que les DLL sont installées correctement mais ne sont pas récupérées à l'exécution, je crains de ne pas avoir de réponse pour vous.