Printemps OAuth2 - création Manuelle d'un jeton d'accès dans le jeton magasin
J'ai une situation où je voudrais créer un jeton d'accès moi-même (donc pas par le biais de la procédure habituelle). Je suis venu avec quelque chose comme ceci:
@Inject
private DefaultTokenServices defaultTokenServices;
...
OAuth2Authentication auth = xxx;
OAuth2AccessToken token = defaultTokenServices.createAccessToken(auth);
Le seul problème est que je ne suis pas sûr de savoir comment créer le OAuth2Authentication (dans mon code la partie avec xxx). J'ai de l'utilisateur & client info et je sais que des Autorités qui je veux accorder ce jeton.
J'ai fait récemment, laissez-moi savoir si vous avez encore besoin du code que ce post est un peu vieux.
oui s'il vous plaît. je suis intéressé
A été que le long des lignes de ce que vous recherchez?
oui s'il vous plaît. je suis intéressé
A été que le long des lignes de ce que vous recherchez?
OriginalL'auteur checklist | 2013-08-30
Vous devez vous connecter pour publier un commentaire.
Ici c'est votre cas d'utilisation peuvent différer légèrement en fonction de la circulation que vous utilisez. C'est ce qui fonctionne pour un mot de passe de la subvention de flux. Il y a un peu de classe personnalisée comme jeton de magasin, jeton enhancer ect. mais c'est vraiment juste des versions étendues de printemps classes modifiées pour nos propres besoins.
OriginalL'auteur Michael
Ici est de savoir comment générer un Jeton à l'aide de la TokenEndpoint interface (utilisé pour exposer service REST) :
OriginalL'auteur Mop So
D'autre moyen, pour générer manuellement un
OAuth2 Accesss Token
nous pouvons utiliser une instance deTokenService
OriginalL'auteur Huy Ta
Cela a fonctionné pour moi:
Dans le Oauth2Configuration:
Le reste de la Oauth2Configuration devrait ressembler à l'article:
http://stytex.de/blog/2016/02/01/spring-cloud-security-with-oauth2/
OriginalL'auteur Laci
J'ai basé ma solution sur Mop Afin de répondre, mais au lieu d'utiliser:
J'ai utilisé:
Pourquoi? Parce que si vous utilisez
tokenEndpoint.getAccessToken(principal, parameters)
la endpoing vous gratifiera d'unHttpRequestMethodNotSupportedException
parce qu'il n'a pas été appelé avec unGET
méthode. Au moins, c'est ce qui m'est arrivé avecspring-security-oauth2-2.0.13.RELEASE
OriginalL'auteur flags
Problème
J'ai eu des problèmes avec toutes les implémentations énumérés ici, donc j'ai enfin réussi à avoir mon propre avec un serveur sans état (stateless, oauth2 et google sociale. C'est juste la dernière partie du tutoriel qui est manquant ici
Le problème pour moi est qu'après l'exécution de la google oauth, j'ai besoin d'échanger un 10 secondes de durée jeton pour une longue durée de vie du jeton. Pour ce faire j'ai besoin de générer un JWT jeton et l'échanger avec un réel jeton d'accès généré par moi-même.
Mise en œuvre
JWSTokenService
: son auto en œuvre de la classe qui encode et décode l'échange de jeton entre google oauth et de la mienne.ClientDetailsService
: bean déclaré que dans le cadre de l'autorisation de serveur. Vient de ma base de donnéesremplacer plaisir configurer(clients: ClientDetailsServiceConfigurer) {
clients.jdbc(source de données)
}
UserService
: juste un utilisateur de service qui s'étendUserDetailsService
pour obtenir mes utilisateurs de la base de donnéesDefaultTokenServices
: mise en œuvre en tant que principal bean comme suitOAuth2RequestFactory
: mise en œuvre d'un haricot comme suitAvec toutes les dépendances, ce que je dois faire pour générer un jeton qui est stocké dans la base de données et suit le même flux que les autres, sans fournir de mot de passe est:
Authentication
à l'aide de laUsernamePasswordAuthenticationToken
classe. C'est la partie clé, appelDefaultTokenServices#createAccessToken
pour obtenir un nouveau jeton. Il a besoin de quelques arguments à l'exécution de la demande:OAuth2Request
: il peut être créé avec leOAuth2RequestFactory
Authentication
créé précédemmentTokenRequest
avec le client qui est le déclenchement de cette demande de jeton. Dans mon cas, je l'ai codé en durRésumé
Donc pour récapituler comment créer un jeton manuellement:
OriginalL'auteur droidpl