Traefikをリバースプロキシとして使用しています。エントリポイントにOAuth2認証を設定したい。このドキュメントでは、 Forward Authentication が見つかりました。これはこれに役立つと思います。しかし、ドキュメントは単純すぎます
この設定は、最初にリクエストを http://authserver.com/auth に転送します。
応答コードが2XXの場合、アクセスが許可され、元の要求が実行されます。それ以外の場合、認証サーバーからの応答が返されます。
転送内で認証OAuth2をどのように実現できるかわかりません。 oauth2_proxy を試しましたが、解決策が見つかりませんでした。
これで issue/comment guybrushは解決策を提供しました。しかし実際には、それは二重逆プロキシでした。
このためのアプリを最近作成しました: https://github.com/thomseddon/traefik-forward-auth
前述のように、前方認証を使用し、Google OAuthを使用してユーザーを認証します。
ここにDocker Composeのセットアップ例があります: https://github.com/thomseddon/traefik-forward-auth/blob/master/examples/docker-compose.yml 。 Traefik.tomlファイルを参照して、アプリを指すようにTraefikがどのように構成されているかを確認してください。
役立つかどうか教えてください!
Traefikがあなたのケースをサポートするようにする代わりに、Traefikが最善を尽くして、代わりに Keycloak Gatekeeper を認証(および潜在的な承認)に使用してください。
これにより、設定が変更されます
Client -- Traefik -- Service
に
Client -- Traefik -- Gatekeeper -- Service
これは、TraefikとGatekeeperの両方がリバースプロキシとして機能することを意味します。
このアプローチで複雑な認証設定をモデル化するのは非常に簡単です。ただし、潜在的な欠点の1つは追加のRPレイヤーであるため、高性能のセットアップではこれは理想的なソリューションではない場合があります。
GatekeeperはOIDC互換のIdPと連携できるため、Keycloakを実行して使用する必要はありません。