設定ファイル@OAuth2 Proxy¶
はじめに¶
本サイトにつきまして、以下をご認識のほど宜しくお願いいたします。
01. providers¶
clientID¶
IDプロバイダーで発行したクライアントIDを設定する。
providers:
- clientID: "<クライアントID>"
clientSecret¶
IDプロバイダーで発行したクライアントシークレットを設定する。
providers:
- clientSecret: "<クライアントシークレット>"
oidcConfig¶
▼ oidcConfig¶
providers:
- oidcConfig: ...
▼ issuerURL¶
OIDCのアクセストークンの発行元認証局の認可エンドポイントを設定する。
# 認証方法がOIDCで、IDプロバイダーがKeycloakの場合
providers:
- oidcConfig:
issuerURL: "https://<Keycloakのドメイン>/realms/<realm名>"
# 認証方法がOIDCで、IDプロバイダーがAWS Cognitoの場合
providers:
- oidcConfig:
issuerURL: "https://cognito-idp.ap-northeast-1.amazonaws.com/<ユーザープールID>"
▼ emailClaim¶
記入中...
▼ groupsClaim¶
記入中...
▼ insecureSkipNonce¶
記入中...
▼ userIDClaim¶
記入中...
provider¶
# 認証方法がOIDCで、任意のIDプロバイダーの場合
providers:
- provider: "oidc"
# 認証方法が任意で、IDプロバイダーがGitHubの場合
providers:
- provider: "github"
# 認証方法が任意で、IDプロバイダーがKeycloakの場合
providers:
- provider: "keycloak"
# 認証方法がOIDCで、IDプロバイダーがKeycloakの場合
providers:
- provider: "keycloak-oidc"
02. injectRequestHeaders¶
記入中...
03. server¶
BindAddress¶
server:
- BindAddress: "127.0.0.1:4180"
SecureBindAddress¶
server:
- SecureBindAddress: "127.0.0.1:443"
04. redirect_url¶
コールバックURL (IDプロバイダーからの認可レスポンスのリダイレクト先URL) を設定する。
redirect_url: "https://<アプリのドメイン>/oauth2/callback"
05. reverse_proxy¶
reverse_proxyとは¶
OAuth2 Proxyのダウンストリームに任意のリバースプロキシ (例:Nginx) があるかどうかを設定する。
reverse_proxy: true
リバースプロキシがNginxの場合¶
まずは、クライアントアプリが、Nginxを介さずに認可リクエストを直接的にIDプロバイダーに送信する。
IDプロバイダーがトークンの発行を終え、クライアントが再びリクエストを送信した時、これはNginxを通過する。
NginxはOAuth2 Proxyにトークン検証リクエストを送信し、OAuth2 ProxyはIDプロバイダーのバリデーション結果をNginxに返信する。
例えばNginxは、レスポンスのステータスコードが200
であれば認証成功、ステータスが401
または403
であれば認証失敗とし、アプリケーションへのリクエストを許可/拒否する。
認証が失敗した場合、クライアント側のアプリケーションは改めて認証処理を実施する。
http {
# 認証が必要なパス
location / {
# トークン検証リクエストの宛先とするパスを設定する
# ここでは、トークン検証リクエストをOAuth2 Proxyに送信する
auth_request /oauth2/auth;
...
}
location = /oauth2/auth {
# OAuth2 Proxyのドメイン名を設定する
proxy_pass https://<ドメイン名>:4180;
proxy_pass_request_body off;
proxy_set_header Host $http_host;
}
}
06. upstreamConfig¶
upstreams¶
▼ uri¶
OAuth2 ProxyのアップストリームのWebサーバーのURLを設定する。
注意点として、IDプロバイダーのURLではない。
upstreamConfig:
upstreams:
- uri: "http://127.0.0.1/"