2017-10-04 2 views
1

J'essaie de faire au moins quelque chose à partir des documents officiels vert.x.vertx auth2 exemple de travail

ce que signifie exactement here

Le code :

String code = "xxxxxxxxxxxxxxxxxxxxxxxx"; // the code is provided as a url parameter by github callback call 

oauth2.getToken(new JsonObject().put("code", code).put("redirect_uri", "http://localhost:8080/callback"), res -> { 
    if (res.failed()) { 
    // error, the code provided is not valid 
    } else { 
    // save the token and continue... 
    } 
}); 

Je crois de là

https://developers.google.com/identity/protocols/OAuth2,

flux d'autorisation:

Je suppose d'envoyer une autorisation code à github/google pour obtenir un accès jeton (c'est mon but ultime). Alors ce code est le code d'autorisation?

Je suppose que pour recevoir ce code, je dois d'abord envoyer mon utilisateur/informations d'identification comme première étape? Cette étape semble manquer.

La question est .. quel est le flux complet/code pour obtenir le jeton oauth pour github par exemple?

-

Mon meilleur ce que je pouvais faire:

  1. Envoyer rediriger vers la page de connexion github envoyer mes lettres de créance et l'instruction comment me rappeler (le/url auth-rappel sur mon application serveur)

    oauth2 = GithubAuth.create(vertx, clientId, applicationSecret); 
        final String authorizationURI = oauth2.authorizeURL(new JsonObject() 
          .put("redirect_uri", DOMAIN + ":" + PORT + "/auth-callback") 
          .put("scope", "notifications") 
          .put("state", "3(#0/!~")); 
    
         context.response().putHeader("Location", authorizationURI) 
          .setStatusCode(302) 
          .end(); 
    
  2. Quand je presse entrer à la connexion je compte obtenir un rappel .. et recevoir le ... code d'autorisation? où est-ce que c'est??

donc je fais:

  router.get("/auth-callback/").handler((RoutingContext context) -> { 

      oauth2.getToken(tokenConfig, res -> { 
       if (res.failed()) { 
        System.err.println("Access Token Error: " + res.cause().getMessage()); 
       } else { 
        System.out.println("Got access"); 
        // Get the access token object (the authorization code is given from the previous step). 
        final AccessToken token = res.result(); 

        System.out.println("Got a token! " + token.toString()); 
       } 
      }); 

     } 
    ); 

donc .. comme résultat que je ne me rappelé par cette url. Semble parce .get (.. ne correspond pas au/auth-rappel & scope = notifications & état = .. etc tout ce param. Quelle est la bonne .get?

Quel est le tokenConfig censé être. Ce supposons que pour contenir le code d'authentification

comme je l'ai dit: un exemple de travail serait bien le doc semble ne nous aide pas beaucoup

Répondre

1

tokenConfig est un JsonObject qui aura votre code et redirect_uri

...

Essayez ce code, ça marche pour moi:

router.get("/login").handler(routingContext -> { 
    routingContext.response().putHeader("Location", authorizationURI) 
      .setStatusCode(302) 
      .end(); 
}); 

router.get("/auth-callback").handler(routingContext -> { 
    JsonObject tokenConfig = new JsonObject(); 
    tokenConfig.put("code", routingContext.request().params().get("code")); 
    tokenConfig.put("redirect_uri", authorizationURI); 
    oauth2.getToken(tokenConfig, res -> { 
     if (res.failed()) { 
      System.err.println("Access Token Error: " + res.cause().getMessage()); 
     } else { 
      System.out.println("Got access"); 
      // Get the access token object (the authorization code is given from the previous step). 
      final AccessToken token = res.result(); 

      System.out.println("Got a token! " + token.toString()); 
     } 
    }); 
}); 
+0

merci! l'autorisationURI est/auth-callback? params(). get ("code") - null – ses

+0

C'est l'URL de votre application où GitHub vous redirigera lorsque l'authentification aura été effectuée. Alors oui, c'est le rappel –

3

Oauth2 a spécifié plusieurs flux pour obtenir un jeton. Les plus courants sont le code d'accès et le flux de mots de passe.Lorsque vous travaillez avec des applications Web interactives (nécessitant une interaction de l'utilisateur, pas des points de terminaison API), vous voudrez probablement utiliser le flux de code d'accès (code court).

Dans ce flux, vous devez suivre une séquence pour obtenir un jeton. Un tutoriel détaillé pour GitHub peut être vu ici:

http://vertx-tutorials.jetdrone.xyz/tutorials/oauth2/github/

+1

Salut, lien cassé: 404 – zella

+0

fixe, désolé à ce sujet. –

+0

thx! Je suis plus intéressé par le scénario interactif. Je ne devrais pas enregistrer l'application pour celui-là? – ses