Cette fois est une suite de cet article. Mise en œuvre de Google Sign-In à l'aide de l'authentification Google OAuth 2.0 (édition JS) C'est comme se connecter côté client et s'authentifier sur le serveur principal.
Dans l'article précédent, j'ai pu obtenir des informations sur les utilisateurs, etc. en réponse. Cependant, il est dangereux d'envoyer ceci au serveur tel quel. Par exemple, vous pouvez emprunter l'identité d'un utilisateur lors de l'envoi d'un ID utilisateur au serveur. ..
Par conséquent, utilisez plutôt un jeton d'identification vérifiable pour récupérer en toute sécurité les informations utilisateur connectées côté serveur.
Implémentons-le tout de suite.
Tout d'abord, réécrivez la partie JS.
JavaScript
function onSignIn(googleUser) {
var id_token = googleUser.getAuthResponse().id_token; //Obtenir un jeton d'identification
//Processus d'envoi du jeton d'identification au côté serveur
}
Je pense qu'il existe différentes façons d'envoyer du côté serveur ici, comme en utilisant Ajax ou en envoyant avec l'attribut caché. Cette fois, nous communiquerons avec le serveur en émettant une requête HTTP en utilisant XMLHttpRequest d'Ajax.
En plus du processus précédent
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);
Envoyons-le au côté serveur comme ça. *** Entrez l'URL côté serveur dans la partie [URL] ***.
Cette fois, nous allons l'implémenter en utilisant le démarrage Spring de Java.
Tout d'abord, ajoutez une dépendance.
build.gradle
dependencies {
implementation("com.google.api-client:google-api-client:1.30.5")
}
Vous pouvez facilement vérifier votre jeton d'identification à l'aide de la bibliothèque cliente Google.
Java
GoogleIdTokenVerifier verifier =
new GoogleIdTokenVerifier.Builder(
new NetHttpTransport(), JacksonFactory.getDefaultInstance())
.setAudience(Collections.singletonList("YOUR_CLIENT_ID.apps.googleusercontent.com"))
.build();
var idtokenStriing = getIdToken(); //Jeton d'identification obtenu
GoogleIdToken idToken = verifier.verify(idTokenString); //Vérification du jeton d'identité
Saisissez votre identifiant client dans YOUR_CLIENT_ID.
Si vous n'utilisez pas la bibliothèque cliente Google, vous pouvez utiliser la clé publique de Google (format PEM) pour vérifier la signature du jeton, mais Google recommande également d'utiliser la bibliothèque cliente Google pour la vérification. Utilisons-le.
Tout ce que vous avez à faire est d'obtenir les informations utilisateur.
Java
Payload payload = idToken.getPayload();
String userId = payload.getSubject(); //Identifiant d'utilisateur
String email = payload.getEmail(); //Adresse e-mail de l'utilisateur
String name = (String) payload.get("name"); //Nom d'utilisateur
String pictureUrl = (String) payload.get("picture"); //Image du profil utilisateur
Vous pouvez l'obtenir comme ça.
De nos jours, de plus en plus de sites utilisent l'authentification OAuth. Cette fois, c'est Google, mais je vais également donner une authentification OAuth telle que Facebook et Apple.
Recommended Posts