コンテンツにスキップ

設定ファイル@OAuth2 Proxy

はじめに

本サイトにつきまして、以下をご認識のほど宜しくお願いいたします。


01. providers

clientID

ID プロバイダーで発行したクライアント ID を設定する。

providers:
  - clientID: "<クライアントID>"


clientSecret

ID プロバイダーで発行したクライアントシークレットを設定する。

providers:
  - clientSecret: "<クライアントシークレット>"


oidcConfig

▼ oidcConfig

providers:
  - oidcConfig: ...

▼ issuerURL

JWT トークンの発行元の識別子を設定する

# 認証方法がOIDCで、IDプロバイダーがKeycloakの場合
providers:
  - oidcConfig:
      issuerURL: "http://keycloak.foo-namespace.svc.cluster.local/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/"