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",
...
}
Welche Einstellung haben Sie auf Ihrem Back-End-Server? –