2017-03-29 6 views
0

Ich habe ein Xamarin.iOS-Projekt und möchte mich bei Azure authentifizieren. Das Endziel ist, dass sich der Benutzer nicht anmelden und hinter den Kulissen authentifizieren muss. Wenn ich AuththenticationContext instanziiere, erhalte ich diesen Fehler. "Datei oder Assembly konnte nicht geladen werden" Microsoft.IdentityModel.Clients.ActiveDirectory.Platform '". Ich habe Microsoft.IndentityModel.Clients.ActiveDirectory v3.13.9 von Nuget installiert und die using-Anweisung befindet sich oben im Code. Die DLL ist so eingestellt, dass sie lokal kopiert wird. Ich weiß nicht, warum das nicht funktioniert. Ich habe sogar das Nuget-Paket deinstalliert und die DLLs zum Projekt hinzugefügt und sie direkt referenziert und den gleichen Fehler erhalten. Unten ist der Code, den ich versuche, Arbeit zu machen. Erneut bricht es ab, wenn AuthenticationContext instanziiert wird, so dass ich den Rest nicht einmal testen kann. Ich habe die folgenden zwei Websites zur Anleitung verwendet, https://blog.xamarin.com/authenticate-xamarin-mobile-apps-using-azure-active-directory/Konnte Datei oder Assembly nicht laden 'Microsoft.IdentityModel.Clients.ActiveDirectory.Platform'

Ich fand diesen "Bug" hier, aber die Lösung funktioniert nicht, noch ergibt es für mich Sinn. Ich bin mir nicht sicher, wo ich den Code ablegen soll und bekomme auch den Zugriffsfehler. 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

Da der Stack-Überlauf mich nicht mehr als zwei Links posten kann, weil ich nicht genug Reputationspunkte habe. Hier ist ein weiterer Link, den ich benutzt habe. https://blog.xamarin.com/put-adal-xamarin-forms/ –

+0

Können Sie bitte versuchen mit ADAL.NET 3.17. Wir haben es heute veröffentlicht. –

Antwort

0

In der Appdelegate musste ich eine statische Methode zur Registrierung der ADAL-DLL instanziieren. Dies hat das Problem behoben.

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

Wenn Sie die ADAL Bibliothek von Nuget installieren, Nuget sollten zwei separate DLLs in jedes Projekt Ihrer Xamarin Lösung installieren. Eine mit dem Namensraum Microsoft.IdentityModel.Clients.ActiveDirectory und eine mit Microsoft.IdentityModel.Clients.ActiveDirectory.Platform. Ersteres ist der Großteil der Logik für die Bibliothek, während Letzteres plattformspezifische Logik für jede Zielplattform (iOS, Android usw.) ist. Stellen Sie sicher, dass nach der Installation von Nuget beide Pakete in den Abhängigkeiten jedes Projekts vorhanden sind. Um sicherzustellen, dass Nuget das richtige Paket installiert, stellen Sie sicher, dass jedes Projekt auf die entsprechende Plattform in den Projekteigenschaften/-einstellungen abzielt.

Wenn Sie sagen, dass die DLLs korrekt installiert sind, aber nicht zur Mittagszeit abgeholt werden, habe ich leider keine Antwort für Sie.

Verwandte Themen