web-dev-qa-db-fra.com

Comment définir traefik avec l'authentification OAuth2

J'utilise traefik comme proxy inverse. Je souhaite définir l'authentification OAuth2 pour un point d'entrée. Dans le document, j'ai trouvé le Forward Authentication qui je pense peut être utile pour cela. Mais le document est tout simplement trop simple

Cette configuration transmettra d'abord la demande à http://authserver.com/auth .

Si le code de réponse est 2XX, l'accès est accordé et la demande d'origine est exécutée. Sinon, la réponse du serveur d'authentification est renvoyée.

Je ne sais pas comment puis-je obtenir l'authentification OAuth2 dans un transfert? J'ai essayé oauth2_proxy mais je n'ai pas trouvé de solution.
Dans ce problème/commentaire guybrush a fourni une solution. Mais c'était en fait un double mandataire inversé.

7
kehao

J'ai récemment construit une application pour cela: https://github.com/thomseddon/traefik-forward-auth

Il utilise l'authentification directe, comme vous l'avez mentionné, et utilise Google OAuth pour authentifier les utilisateurs.

Il y a un exemple de configuration Docker Compose ici: https://github.com/thomseddon/traefik-forward-auth/blob/master/examples/docker-compose.yml . Consultez le fichier traefik.toml pour voir comment Traefik est configuré pour pointer vers l'application.

Faites-moi savoir si cela est utile!

11
Thom Seddon

Au lieu d'essayer de faire en sorte que Traefik prenne en charge votre cas, laissez Traefik faire ce qu'il fait le mieux et utilisez plutôt Keycloak Gatekeeper pour l'authentification (et potentiellement l'autorisation).

Cela changerait votre configuration de

Client -- Traefik -- Service

à

Client -- Traefik -- Gatekeeper -- Service

Cela signifie que Traefik et Gatekeeper agissent comme proxy inverse.

Il est incroyablement simple de modéliser des configurations d'authentification complexes avec cette approche. Un inconvénient potentiel est cependant la couche RP supplémentaire, donc pour les configurations à hautes performances, cela peut ne pas être une solution idéale.

Notez que Gatekeeper peut fonctionner avec n'importe quel IdP compatible OIDC, vous n'avez donc pas besoin d'exécuter Keycloak pour l'utiliser.

3
theDmi