Dieses Mal ist eine Fortsetzung dieses Artikels. Implementierung der Google-Anmeldung mithilfe der Google OAuth 2.0-Authentifizierung (JS Edition) Es ist, als würde man sich auf der Clientseite anmelden und sich auf dem Backend-Server authentifizieren.
Im vorherigen Artikel konnte ich Benutzerinformationen usw. als Antwort erhalten. Es ist jedoch gefährlich, dies so wie es ist an die Serverseite zu senden. Sie können sich beispielsweise als Benutzer ausgeben, wenn Sie eine Benutzer-ID an den Server senden. ..
Verwenden Sie stattdessen ein überprüfbares ID-Token, um auf der Serverseite angemeldete Benutzerinformationen sicher abzurufen.
Lassen Sie es uns sofort implementieren.
Schreiben Sie zuerst den JS-Teil neu.
JavaScript
function onSignIn(googleUser) {
var id_token = googleUser.getAuthResponse().id_token; //ID-Token abrufen
//Prozess des Sendens eines ID-Tokens an die Serverseite
}
Ich denke, es gibt verschiedene Möglichkeiten, hier an den Server zu senden, z. B. Ajax oder das Senden mit dem versteckten Attribut. Dieses Mal kommunizieren wir mit dem Server, indem wir eine HTTP-Anfrage mit Ajax XMLHttpRequest ausgeben.
Neben dem vorherigen Prozess
javaScript
var req = new XMLHttpRequest();
req.open('POST', '[URL]’);
req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
req.onload = function() {
req.send('idtoken=' + id_token);
Senden wir es so an den Server. *** Geben Sie die serverseitige URL im Teil [URL] *** ein.
Dieses Mal werden wir es mit Javas Spring Boot implementieren.
Fügen Sie zunächst eine Abhängigkeit hinzu.
build.gradle
dependencies {
implementation("com.google.api-client:google-api-client:1.30.5")
}
Sie können Ihr ID-Token mithilfe der Google Client-Bibliothek ganz einfach überprüfen.
Java
GoogleIdTokenVerifier verifier =
new GoogleIdTokenVerifier.Builder(
new NetHttpTransport(), JacksonFactory.getDefaultInstance())
.setAudience(Collections.singletonList("YOUR_CLIENT_ID.apps.googleusercontent.com"))
.build();
var idtokenStriing = getIdToken(); //ID-Token erhalten
GoogleIdToken idToken = verifier.verify(idTokenString); //Überprüfung des ID-Tokens
Geben Sie Ihre Kunden-ID in YOUR_CLIENT_ID ein.
Wenn Sie die Google-Clientbibliothek nicht verwenden, können Sie die Token-Signatur mit dem öffentlichen Schlüssel von Google (PEM-Format) überprüfen. Google empfiehlt jedoch auch, die Google-Clientbibliothek zur Überprüfung zu verwenden. Lass es uns benutzen.
Sie müssen lediglich die Benutzerinformationen abrufen.
Java
Payload payload = idToken.getPayload();
String userId = payload.getSubject(); //Benutzeridentifikation
String email = payload.getEmail(); //Benutzer-E-Mail-Adresse
String name = (String) payload.get("name"); //Nutzername
String pictureUrl = (String) payload.get("picture"); //Benutzerprofilbild
Sie können es so bekommen.
Heutzutage verwenden immer mehr Websites die OAuth-Authentifizierung. Diesmal ist es Google, aber ich werde auch OAuth-Authentifizierung wie Facebook und Apple geben.
Recommended Posts