Je travaille sur un projet dont j'ai besoin, non seulement pour m'authentifier, mais aussi pour avoir la valeur réelle du jeton.Spring Security oAuth 2.0 UAA obtenir une valeur de jeton de façon automatique
Nous avons une application Spring Boot avec oAuth2.0 Spring Security et le problème est que je ne suis pas en mesure de trouver une méthode qui me donne un jeton valide chaque fois que je l'appelle.
En ce moment, j'ai une première méthode post codé en Java, mais il doit y avoir une mise en œuvre de la sécurité du printemps qui fait quelque chose comme ce qui suit:
- La première fois qu'il est appelé, il demande le jeton et le stocke.
- Les instants suivants vérifient si le jeton a expiré et, s'il a expiré, il en demande un nouveau.
Où puis-je le trouver?
EDIT
Il y a 2 différentes instances de printemps dans mon projet: Le serveur d'autorisation - qui est un serveur Cloud Foundry SAU - et le serveur de ressources - qui est celui qui demande le jeton et est codé par moi. Le serveur d'autorisation utilise AuthorizationServerTokenServices dans la version JWT et lorsque le serveur de ressources obtient un jeton à partir de là, je veux qu'il soit conservé, non seulement décodé et utilisé car je dois l'envoyer à un autre serveur.
De plus, mon application n'est pas une application web, il n'y a donc pas de page de connexion pour me connecter sur Facebook et je dois obtenir le jeton en utilisant le type de subvention Client Credentials.
Dans mon cas, Single Sign-On n'est pas possible parce que je dois l'utiliser non décodé.
Voici mon implémentation actuelle:
public String obtainAccessToken() throws ClientProtocolException, IOException {
HttpClient httpclient = HttpClients.createDefault();
String userPass64 = new String("User and password");
HttpPost httppost = new HttpPost("localhost:8080/uaa/oauth/token?grant_type=client_credentials");
httppost.setHeader("Content-Type", "application/x-www-form-urlencoded");
httppost.setHeader("Authorization", "Basic " + userPass64);
//Execute and get the response.
HttpResponse response = httpclient.execute(httppost);
String responseBody = EntityUtils.toString(response.getEntity());
ObjectMapper mapper = new ObjectMapper();
TokenMessage tokenMessage = mapper.readValue(responseBody, TokenMessage.class);
return tokenMessage.getAccess_token();
}
" authomatically "- J'aime ce que vous avez fait là :) – radoh
Que voulez-vous dire par" Je dois l'envoyer à un autre serveur. "? Essayez-vous d'accéder à une autre ressource protégée à partir de ce serveur? – raiyan