Überprüfen Google-Id Token
Ich bin mit ASP.NET Kern zu dienen, eine API auf ein Android-client. Android Zeichen als ein Google-Konto und geht ein JWT, die den ID-Token zur API als bearer-token. Ich habe die app arbeiten, es geht vorbei, die auth-Prüfungen, aber ich glaube nicht, dass es die Validierung der token-Signatur.
Pro Google-Dokumente, kann ich rufen Sie diese url, um es zu tun: https://www.googleapis.com/oauth2/v3/tokeninfo?id_token=XYZ123, aber ich kann nicht finden die passenden Haken auf der server-Seite, es zu tun. Auch laut der Google-docs, ich kann irgendwie mit dem Client-Access-APIs, um es zu tun, ohne den Aufruf an den server jedes mal.
Meine Konfiguration code:
app.UseJwtBearerAuthentication( new JwtBearerOptions()
{
Authority = "https://accounts.google.com",
Audience = "hiddenfromyou.apps.googleusercontent.com",
TokenValidationParameters = new TokenValidationParameters()
{
ValidateAudience = true,
ValidIssuer = "accounts.google.com"
},
RequireHttpsMetadata = false,
AutomaticAuthenticate = true,
AutomaticChallenge = false,
});
Wie bekomme ich die JWTBearer middleware überprüfen der Signatur? Ich bin nahe dran aufzugeben, auf die Verwendung des MS-middleware und Rollen meine eigenen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es ein paar verschiedene Möglichkeiten, in dem Sie überprüfen können, die Integrität der ID-token auf der server-Seite:
iss
; der wesentliche Vorteil (wenn auch kleinen meiner Meinung nach) ich sehe hier, dass Sie können minimiert die Anzahl von Anfragen an Google gesendet werden.https://www.googleapis.com/oauth2/v3/tokeninfo?id_token={0}
Hier ist, wie der zweite Aussehen könnte:
GoogleApiTokenInfo Klasse:
chrome.identity.getAuthToken()
Methode stellt nur eineaccess_token
. Glücklicherweise ist die endpoint @AlexandruMarculescu schlägt in option 2 unterstützt die überprüfung dieser Typ des Tokens als auch: googleapis.com/oauth2/v3/tokeninfo?access_token={0}Nach diesem github Problem, jetzt können Sie
GoogleJsonWebSignature.ValidateAsync
Methode zur überprüfung eines Google-signiert JWT. Übergeben Sie einfach dieidToken
string an die Methode.Wenn es nicht ein gültiges token zurück
null
.Beachten Sie, dass diese Methode verwenden, müssen Sie installieren Google.Apis.Auth nuget aus Erster Hand.
Google erklärt in der Dokumentation für openId connect
Sollten Sie nicht verwenden, dass die endpoint-überprüfung Ihres JWT.
Validierung von einem ID-token erfordert mehrere Schritte:
Es ist ein offizieller Probe-Projekts, wie Sie zu bestätigen hier. Leider haben wir nicht Hinzugefügt, das die Google .Net-Client-Bibliothek noch nicht. Es wurde protokolliert, wie ein Problem
So, was ich gefunden habe ist, dass die OpenIDConnect Spezifikationen ein.bekannte/url enthält die Informationen, die Sie benötigen, um ein token zu validieren. Dies beinhaltet den Zugriff auf die öffentlichen Schlüssel für die Signatur. Die JWT-middleware-Formulare .bekannte url aus der Behörde, ruft die Informationen, und Erlöse zu überprüfen es auf seine eigene.
Die kurze Antwort zu der Frage ist, dass die Validierung geschieht bereits in der middleware, es gibt nichts mehr zu tun.