2017-08-30 8 views
0

Je développe une API Rest, MyApi. Là, j'utilise Feign (et swagger codegen) pour générer un client pour une autre API, appelons cela Ext-API.Feindre Oauth comment définir manuellement la valeur du jeton support?

L'utilisateur aura appelé Ext-API précédemment et aura, entre autres choses, récupéré un jeton JWT. Il appellera alors mon API en utilisant Basic Auth et dans le corps il me donnera le jeton JWT.

Je dois utiliser ce jeton JWT comme en-tête auth pour me connecter à Ext-API depuis mon API et faire plus de choses pour le compte de l'utilisateur.

Cependant, tous les exemples d'Oauth & Feign reposent sur le fait que Oauth est également utilisé pour se connecter à l'API en utilisant le client généré.

Je ne trouve pas comment je pourrais, à chaque demande, mettre à jour le Token Oauth. Il n'y a rien exposé par feign pour le faire. Atm J'utilise le modèle de repos habituel.

Répondre

1

Vous pouvez utiliser @RequestHeader dans le client feindre, voir ci-dessous

@FeignClient(name = "<name>", configuration = <configclass>) 
public interface Client { 

    public final String AUTH_TOKEN = "Authorization"; 

    @RequestMapping(method = RequestMethod.GET, value = "users", produces = "application/json") 
    public HttpEntity<List<User>> getUsers(@RequestHeader(AUTH_TOKEN) String oruToken, 
      @RequestParam("<param>") Integer value); 
} 

et de programme, vous pouvez vous passer jeton à feindre client

+0

Merci qui travailleraient. Cependant, j'utilise Maven codegen avec feign pour générer le client, donc je ne peux pas éditer la façon dont la méthode WS est déclarée dans l'interface pour ajouter un en-tête supplémentaire. Je cherchais un moyen d'injecter un en-tête spécifique à une requête. – TheBakker

+0

vu il y a un problème ouvert depuis un moment à ce sujet: https://github.com/OpenFeign/feign/issues/214 – TheBakker