トップ OSS紹介 OAuth2 Proxy

OAuth2 Proxy

サポート対象

NRIのOpenStandiaが提供するOAuth2 Proxy最新情報

OAuth2 Proxy情報

OAuth2 Proxyとは

OAuth2 Proxy(オーオーストゥプロキシー)は、アプリケーションの前段で認証と認可を外部に委譲するためのリバースプロキシーサーバーで、Go言語で実装されています。OAuth2 Proxyは、OAuth(認可の標準プロトコル)の「クライアント」やOpenID Connect(認証の標準プロトコル)の「Relying Party」として機能することで、これらのプロトコルに対応したサーバー(Keycloakなど)やサービス(Googleなど)にアプリケーションの認証と認可を委譲します。
OAuth2 Proxyの構成例として、以下のようなものが公式サイトに挙げられています。

OAuth2 Proxyの構成
OAuth2 Proxyの構成

このようにユーザー(図のブラウザーの部分)からのアプリケーション(図のsecured upstreamの部分)へのリクエストを受信して、認証と認可を要求するために、ユーザーをOAuthの「認可サーバー」やOpenID Connectの「OpenID Provider」(図のAuth Providerの部分)にリダイレクトします。
OAuth2 Proxyは、1つのバイナリーファイルのみで構成されるため、インストール作業が不要です。圧縮ファイルをダウンロードして解凍し、起動オプションとともにコマンドを実行するだけで、起動します。以下のコマンドは、アプリケーションや認可サーバーのURLなどの各種設定を設定ファイルにまとめて、起動した場合のコマンド例です。


$ ./oauth2-proxy --config=oauth2-proxy.cfg

ここで使用されるoauth2-proxy.cfgには、以下のようなキー=値の形式で設定が記述されます。


http_address = "127.0.0.1:4180"
redirect_url = "https://app.nri.co.jp/oauth2/callback"
upstreams = ["http://127.0.0.1:8080/"]
client_id = "oauth2-proxy-client"
client_secret = "rWzdm6gmNeATCkbaOtBg4tl4h4Oj031u"
oidc_issuer_url = "https://keycloak.nri.co.jp:8080/realms/sales"
provider = "keycloak-oidc"

正常に構成できると、アプリケーションへのアクセスの前に認証を外部に委譲するための、次のようなログイン画面が表示されます。

OAuth2 Proxyのログイン画面
OAuth2 Proxyのログイン画面

同様の機能を提供する商用製品

OAuth2 Proxyと同様に、アプリケーションの前段で認証と認可を外部に委譲するためのリバースプロキシーサーバーのOSSは他にもあります。以前、Apacheモジュールの1つであるmod_auth_openidcや、Keycloakプロジェクトで開発されていたLouketo Proxy(旧Keycloak Gatekeeper)です。ただし、後者は開発が停止されており、Keycloakの公式ドキュメントでは代替OSSとしてOAuth2 Proxyの利用が推奨されています。

OAuth2 Proxyのライセンス

OAuth2 Proxyのライセンスは、MITライセンスを採用しています。このライセンスの条件の下でソフトウェアのコピーや配布、ソースコードの自由な改変も認められています。

オープンソース年間サポートサービス

OpenStandiaではOSSを安心してご利用いただけるように、オープンソース年間サポートサービスをご提供しております。
サポートしているOSSは下記ページをご参照ください。

お気軽にお問い合わせください

関連OSS

  • Nginx
    サポート対象

    Nginx

    エンジンエックス。Apache HTTP Serverに次ぐ利用率で人気急上昇中の高速・高性能Webサーバです。

  • Keycloak
    サポート対象

    Keycloak

    キークローク。Red Hat社が提供する最小限の認証機能からソーシャルなどので他サービスへの高機能な認証にも対応する統合認証プラットフォームです。

オープンソースに関する様々な課題、OpenStandiaがまるごと解決します。
下記コンテンツも
あわせてご確認ください。