1

Ich habe eine Möglichkeit implementiert, um meine Web API 2 mit Xamarin Forms über MSAL-Authentifizierung zu konsumieren. Es funktioniert großartig auf UWP, aber ich kann nicht auf der Android-Plattform authentifizieren.MSAL Authentifizierung mit Xamarin und Android

Ich bekomme immer eine Authorization has been denied for this request.

Der Code für die Authentifizierung wie folgt aussieht:

public static PublicClientApplication IdentityClientApp = null; 

internal static void InitializeLogin(PlatformParameters platformParameters) 
    { 
     App.IdentityClientApp = new PublicClientApplication(Constants.ApplicationID); 
      if (platformParameters != null) 
       App.IdentityClientApp.PlatformParameters = platformParameters; 

ich das erste Token auf diese Weise erhalten:

public async Task SignIn() 
{ 
    if (App.IdentityClientApp != null) 
     this.authenticationResult = await App.IdentityClientApp.AcquireTokenAsync(new String[] { Constants.ApplicationID }); 
} 

und erfrischen sie vor jedem Anruf zu meiner API wie das:

public async Task<String> RefreshToken() 
{ 
    if (App.IdentityClientApp != null) 
    { 
     this.authenticationResult = await App.IdentityClientApp.AcquireTokenSilentAsync(new String[] { Constants.ApplicationID }); 
    } 
    return (this.authenticationResult.Token); 
} 

In meinem Android MainActivity.cs, nenne ich die Login-Initialisierungsverfahren mit dem platformParameters:

App.InitializeLogin(new PlatformParameters(this)); 
+0

Um das Problem einzugrenzen, dekodieren Sie bitte das access_token von dieser Site, um zu überprüfen, ob der 'aud' -Anspruch mit der ** audience ** config übereinstimmt, um die Web API zu schützen. –

+0

Danke für die Antwort. Das Publikum scheint recht zu haben, da ich dort meine ApplicationID sehe. –

Antwort

0

PlatformParameters ist von der ersten Vorschau von MSAL von 2016. Das Vorschau nicht unterstützt wurde, und die Veröffentlichung der Eine neuere Vorschau (die unterstützt wird) ersetzt sie. Ein vollständiges Beispiel, das zeigt, wie Sie das neueste MSAL für Android verwenden, finden Sie unter https://azure.microsoft.com/en-us/resources/samples/active-directory-xamarin-native-v2/. Hinweis: Die Ausgabe eines Zugriffstokens für eine andere API als die Microsoft API von einem nativen Client wird vom Azure AD v2-Endpunkt vorübergehend nicht unterstützt. Es sollte in Kürze online gehen, aber wir haben derzeit keine ETA zu teilen.

+0

Danke für die Antwort, ich bemerkte irgendwie, dass ich nicht mit den neueren Versionen von MSAL auf meiner API authentifizieren konnte. Würdest du wissen, wie ich mich am besten auf meiner API authentifizieren und die Graph-API verwenden könnte? –

+0

Meinst du, dass es noch nicht möglich ist, auf einer API nur von Android oder mit einer der Plattformen zu authentifizieren? Ich konnte ein Zugangstoken auf der UWP-Plattform ohne irgendein Problem erhalten. –

+0

Kein Zugriffstoken für eine API, die nicht das MS-Diagramm ist, unabhängig von der Clientplattform, da es sich um ein Verhalten auf der Dienstseite handelt. Das Update sollte einige Wochen entfernt sein (das kann ich nicht vollständig zum Zeitpunkt festlegen). Nochmals Entschuldigung für die Unannehmlichkeiten – vibronet

Verwandte Themen