[JAVA] Mise en œuvre de Google Sign-In à l'aide de l'authentification Google OAuth 2.0 (édition serveur)

Aperçu

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.

Montage frontal

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] ***.

Implémentation côté serveur

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.

Résumé

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

Mise en œuvre de Google Sign-In à l'aide de l'authentification Google OAuth 2.0 (édition serveur)
Implémentation de la fonction d'authentification des utilisateurs à l'aide de devise (2)
Implémentation de la fonction d'authentification des utilisateurs à l'aide de devise (1)
Implémentation de la fonction d'authentification des utilisateurs à l'aide de devise (3)
Authentification SNS à l'aide de Rails google
Implémentation de la validation à l'aide d'expressions régulières
[Android] Implémentation de ListView à défilement latéral à l'aide de RecyclerView
Créer un serveur proxy d'authentification à l'aide de Docker
Implémentation des onglets à l'aide de TabLayout et ViewPager
Construction d'un serveur d'autorisation utilisant Authlete et communication depuis le client OAuth (application Web)
[Rails] Implémentation de la fonction de recherche en utilisant le ransack de gem
[FCM] Implémentation de la transmission de messages en utilisant FCM + Spring boot
[Rails] Implémentation de la fonction d'agrandissement d'image à l'aide de lightbox2
[Rails] Mise en œuvre du classement des nombres PV à l'aide de l'impressionniste
[Rails] Implémentation du diaporama d'images à l'aide de Bootstrap 3