web-dev-qa-db-ja.com

OAuth2認証でtraefikを設定する方法

Traefikをリバースプロキシとして使用しています。エントリポイントにOAuth2認証を設定したい。このドキュメントでは、 Forward Authentication が見つかりました。これはこれに役立つと思います。しかし、ドキュメントは単純すぎます

この設定は、最初にリクエストを http://authserver.com/auth に転送します。

応答コードが2XXの場合、アクセスが許可され、元の要求が実行されます。それ以外の場合、認証サーバーからの応答が返されます。

転送内で認証OAuth2をどのように実現できるかわかりません。 oauth2_proxy を試しましたが、解決策が見つかりませんでした。
これで issue/comment guybrushは解決策を提供しました。しかし実際には、それは二重逆プロキシでした。

7
kehao

このためのアプリを最近作成しました: 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がどのように構成されているかを確認してください。

役立つかどうか教えてください!

11
Thom Seddon

Traefikがあなたのケースをサポートするようにする代わりに、Traefikが最善を尽くして、代わりに Keycloak Gatekeeper を認証(および潜在的な承認)に使用してください。

これにより、設定が変更されます

Client -- Traefik -- Service

Client -- Traefik -- Gatekeeper -- Service

これは、TraefikとGatekeeperの両方がリバースプロキシとして機能することを意味します。

このアプローチで複雑な認証設定をモデル化するのは非常に簡単です。ただし、潜在的な欠点の1つは追加のRPレイヤーであるため、高性能のセットアップではこれは理想的なソリューションではない場合があります。

GatekeeperはOIDC互換のIdPと連携できるため、Keycloakを実行して使用する必要はありません。

3
theDmi