2017-02-28 8 views
3

Ich habe einen Azure App Service, auf dem ich die Authentifizierung/Autorisierung aktiviert und AD als Authentifizierungsanbieter konfiguriert habe.So erhalten Sie Azure easy auth JWT access_token

Alle /.auth Routen existieren auf dem Dienst, und ich kann mich einloggen. Nach erfolgreicher Anmeldung kann ich /.auth/me anrufen, um die access_token zu bekommen. Die Antwort wie folgt aussieht:

[ 
    { 
    "access_token": "AQABAAAAAA...Gni4EiQgAA", 
    "expires_on": "2017-02-28T19:17:08.0000000Z", 
    "id_token": JWT TOKEN 
    ... 
    } 
] 

ich dann die access_token in einem Berechtigungsinhaber Header verwenden, um Daten aus dem Dienst zu beantragen.

"Authorization": "Bearer " + "AQABAAAAAA...Gni4EiQgAA" 

Mein Service gibt folgende Fehler

IDX10708: 'System.IdentityModel.Tokens.JwtSecurityTokenHandler' cannot read this string: 'AQABAAAAAA...Gni4EiQgAA'. 

The string needs to be in compact JSON format, which is of the form: '<Base64UrlEncodedHeader>.<Base64UrlEndcodedPayload>.<OPTIONAL, Base64UrlEncodedSignature>'. 

Nach this discussion der access_token soll als Träger Token verwendet werden. Ich habe auch gelesen here, dass die access_token soll Base64 codiert werden, aber dies scheint nicht der Fall zu sein.

Zusätzlich, wenn ich die id_token als Bearer-Token verwenden, funktioniert die Authentifizierung wie erwartet (id_token ist im JWT-Format).

bearbeiten

Wenn ich den Oauth Fluss wie here manuell implementieren, erhalte ich eine richtige JWT access_token.

GET 
https://login.microsoftonline.com/common/oauth2/authorize?client_id=client_id&response_type=code&redirect_uri=redirect_uri 

Gefolgt von

POST 
https://login.microsoftonline.com/common/oauth2/token 
    grant_type=authorization_code 
    client_id=client_id 
    code=CODE FROM ABOVE 
    redirect_uri=redirect_uri 
    resource=resource 
    client_secret=client_secret 

RESPONSE 
{ 
    "access_token": JWT TOKEN, 
    "token_type": "Bearer", 
    ... 
} 
+0

Welche Einstellung haben Sie auf Ihrem Back-End-Server? –

Antwort

2

Wie Azure leicht Auth JWT access_token

Nach Ihrer Beschreibung zu erhalten, aktiviert I Authentifizierung/Autorisierung und AD als Authentifizierungsanbieter konfiguriert Testen Sie dieses Problem. Wie ich weiß, wenn Sie die Authentifizierung/Autorisierung auf Azure Portal aktivieren, ist der Standard response_typeid_token. Sie müssen sich in https://manage.windowsazure.com und aktualisieren App Dienst Auth Konfiguration anmelden wie folgt:

enter image description here

Hinweis: Wenn Sie die resource für additionalLoginParams nicht angeben, Sie würden eine access_token abrufen, die nicht in JSON Web-Token ist (JWT) -Format.

Ich benutze dann das access_token in einem Autorisierungsträger Header, um Daten vom Service anzufordern.

Für Ihren Dienst zugreifen, könnten Sie AppServiceAuthSession Cookie nutzen oder Sie Authorization:Bearer "{your-id-token}" nutzen könnten.

Für weitere Details können Sie sich auf diese ähnliche tutorial beziehen.

+0

Das funktioniert! Ich danke dir sehr –

Verwandte Themen