コンテンツにスキップ

設定ファイル@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/"