Gluegent Blog

Gluegent Blog

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

  • Gluegent Gate
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関連で送信された内容になります。

mod-auth-openidc-1.png

RP構築の ”OIDCClaimPrefix” のパラメータを変更することで、[PHP Variables] の値も変わります。

5. Gluegent Gateの連携設定

構築したRPと接続するGluegent Gateの設定は管理コンソールのシングルサインオン>OpenID Connect の登録タブから行います。
設定例は以下になります。

mod-auth-openidc-2.png

パラメータの詳細については、Gluegent Gateのマニュアルを参照ください。