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é.
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!
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.