mod_auth_openidcを使ってOpenID Connect のRPを作成してみよう

こんにちは。 Gluegent Gate開発チームです。
Gluegent GateにはOpenID Connectでの連携が可能です。
今回は、OIDCの動作検証などでよく使用する、mod_auth_openidcでRPを構築し、Gluegent Gate(OP)と認証する方法についてご紹介します。
環境
Rocky Linux 8.10
設定
以下の手順で、OpenID ConnectのRPを構築します。
1. インストール
必要なパッケージをインストールします。
# dnf -y install httpd mod_ssl mod_auth_openidc php php-fpm
2. Relaying Partyの設定
mod_auth_openidcをインストールすると、/etc/httpd/conf.d/以下にauth_openidc.confというファイルが配置されます。
こちらのファイルにRPに必要な項目を設定していきます。
# vim /etc/httpd/conf.d/auth_openidc.conf
# OpenID ConnectのリダイレクトURIを設定
OIDCRedirectURI https://oidc.sample.local/oidc/callback
# 暗号化に利用するパスフレーズの文字列を設定(値は任意)
OIDCCryptoPassphrase XXXXXXXXXXXXXXXXXXXX
# OpenID ConnectプロバイダーのメタデータのURLを設定
OIDCProviderMetadataURL https://auth.gluegent.net/oidc/.well-known/openid-configuration
# OPのIssuerの識別子を設定
OIDCProviderIssuer https://auth.gluegent.net/oidc
# OPのクライアントIDを設定
OIDCClientID <クライアントIDを入力>
# OPのクライアントシークレットを設定
OIDCClientSecret <クライアントシークレットを入力>
# OPのトークンエンドポイントの認証方法
OIDCProviderTokenEndpointAuth client_secret_post
# OPの認証エンドポイントを設定
OIDCProviderAuthorizationEndpoint https://auth.gluegent.net/oidc/authorize.php?tenant=xxxxxxxx
# OPのトークンエンドポイントを設定
OIDCProviderTokenEndpoint https://auth.gluegent.net/oidc/token.php
# OPのuserinfoエンドポイントを設定
OIDCProviderUserInfoEndpoint https://auth.gluegent.net/oidc/userinfo.php
# スコープの設定
OIDCScope "openid email profile"
# claimとトークンがアプリケーションに渡される方法を定義(headerまたは環境変数)
OIDCPassClaimsAs both
# idトークンをアプリケーションに渡す方法を設定
OIDCPassIDTokenAs claims
# userinfoエンドポイントから解決されたクレームをアプリケーションに渡す方法を設定
OIDCPassUserInfoAs claims
# REMOTE_USER 変数を設定するときに使用するclaimを設定
OIDCRemoteUserClaim sub ^(.*)@
# HTTPヘッダー・環境変数でclaimを設定するときに使用するプレフィックスを設定
OIDCClaimPrefix OIDC_CLAIM_
<Location /oidc>
# openid connect の認証が必要であることの指定
AuthType openid-connect
# 認証済みユーザであればアクセス可能
Require claim sub~^(.*)@
LogLevel warn
# 動作確認のためのSSI用の設定を行う。
Options +Includes
DirectoryIndex index.php
</Location>
その他の設定項目については mod_auth_openidc のwikiに詳細が記載されています。
RPの表示ページを作成します。
# vim /etc/httpd/www/oidc/index.php
<?php
phpinfo();
?>
3. サービス起動
# systemctl start httpd
# systemctl start php-fpm
4. アクセス
構築完了後、index.phpにアクセスします。
OpenID Connect認証を要求するので、OPの認証画面に遷移します。
認証完了後、phpinfo の画面に遷移します。
[PHP Variables] の項目に”OIDC_CLAIM_xxxx”で表示されている値がOpenID Connect関連で送信された内容になります。
RP構築の ”OIDCClaimPrefix” のパラメータを変更することで、[PHP Variables] の値も変わります。
5. Gluegent Gateの連携設定
構築したRPと接続するGluegent Gateの設定は管理コンソールのシングルサインオン>OpenID Connect の登録タブから行います。
設定例は以下になります。
パラメータの詳細については、Gluegent Gateのマニュアルを参照ください。