Apacheの設定と動作確認の方法について説明します。

Apacheの設定

SPのインストール作業まで完了していれば、設定用ディレクトリ(/etc/shibboleth など)の下にApache用のサンプル設定ファイルが以下のようなファイル名で置かれています。

ファイル名 対象バージョン
apache.config Apache 1.3
apache2.config Apache 2.0
apache22.config Apache 2.2
apache24.config Apache 2.4

WebサーバにインストールされているApacheのバージョンを確認し、対応する設定ファイルをApacheの設定ファイルフォルダ(/etc/httpd/conf.d など)の下にコピーするか、内容を参考に設定を追加します。

以下、apache24.confgに基づき設定の概要を説明します。

設定の詳細については、公式ドキュメント(英語)等も参照してください。

Shibbolethモジュールのロード

#
# Load the Shibboleth module.
#
LoadModule mod_shib /usr/lib64/shibboleth/mod_shib_24.so

ShibbolethモジュールをApacheに組み込む設定です。Apacheのバージョンによって末尾の数字(‘24’)が異なりますので確認してください。

認証オプション

#
# Turn this on to support "require valid-user" rules from other
# mod_authn_* modules, and use "require shib-session" for anonymous
# session-based authorization in mod_shib.
#
ShibCompatValidUser Off

Shibbolethでの認証をBasic認証など他の認証モジュールと組み合わせて利用したい場合、この値を’On’にします。

ハンドラへのアクセス許可

#
# Ensures handler will be accessible.
#
<Location /Shibboleth.sso>
  AuthType None
  Require all granted
</Location>

SPのハンドラ(認証時にアクセスされるURL)に対するアクセスを許可する設定です。

Apache 2.4 でaccess_compat_moduleを利用している場合、上記設定の代わりにapache22.configに記述されている以下の設定とする必要が出る場合があります。 ‘/Shibboleth.sso’で始まるURLに対してアクセスエラーが出る場合、access_compat_moduleを使用していないか確認してください。

<Location /Shibboleth.sso>
  Satisfy Any
  Allow from all
</Location>

CSS のエイリアス

#
# Used for example style sheet in error templates.
#
<IfModule mod_alias.c>
  <Location /shibboleth-sp>
    AuthType None
    Require all granted
  </Location>
  Alias /shibboleth-sp/main.css /usr/share/shibboleth/main.css
</IfModule>

SPが表示するWebページ用のCSSです。このまま記述してください。

アクセス制限の設定サンプル

#
# Configure the module for content.
#
# You MUST enable AuthType shibboleth for the module to process
# any requests, and there MUST be a require command as well. To
# enable Shibboleth but not specify any session/access requirements
# use "require shibboleth".
#
<Location /secure>
  AuthType shibboleth
  ShibRequestSetting requireSession 1
  require shib-session
</Location>

Webサーバ上の’/secure’というURLでShibbolethのアクセス制限を有効にする設定のサンプルです。

次に説明する動作確認で使いますが、作業完了後は削除してください。

Apacheの再起動

設定ファイルの修正が完了したら、httpdサービスを再起動します。

# systemctl restart httpd

動作確認

Apacheの再起動後、Webサーバの’/secure’というURL以下でShibbolethによるアクセス制限が有効になるので、この下にApacheの環境変数を表示するCGI等を設置して動作確認を行います。

動作確認を行うためには、テストIdPにSPが登録済みである必要があります。登録申請がまだの場合は先にそちらの手続きを済ませ、テストIdPへの登録が完了したという連絡を受けてから、以下の確認作業に進んでください。

# mkdir [ApacheのDocumentRoot]/secure

例えばPHPの場合、phpinfo()関数で環境変数が確認できるので、以下の内容のファイルを [ApacheのDocumentRoot]/secure/info.php などに設置します。

<?php phpinfo(); ?>

ファイル設置後、そのURL(https://[Webサーバ]/secure/info.php)にアクセスすると、テスト用IdPの認証ページにリダイレクトされます。

テストIdPログインページ

ここで統一認証システムのユーザIDとパスワードを入力して認証に成功すると、PHPの設定情報が表示され、”Apache Environment”の項目にSihbbolethのセッション情報や、IdPから受け取った属性情報が表示されます。

phpinfo

この画面でIdPから標準で提供される情報と、登録申請時に申請した追加情報が表示されれば、SPとApacheの基本的な設定は完了となります。

Shibboleth SPで設定される環境変数

Shibbolethモジュールで保護された領域のCGIプログラムが実行されると、環境変数にIdPから提供された属性情報やShibboleth関連情報がセットされます。

属性情報

attribute-map.xmlで設定したidでセットされます。

Shibboleth関連情報

「Shibb-」という接頭辞がついた環境変数としてセットされます。

REMOTE_USER

shibboleth2.xmlのApplicationDefaults内のREMOTE_USERの記述に従いセットされます。雛形ファイルでは以下のように記述されており、統一認証システムを利用している場合、eppn, persistent-id の順で最初に見つかった属性値がREMOTE_USERにセットされます。

<ApplicationDefaults entityID="https://[SPホスト名]/shibboleth"
    REMOTE_USER="eppn subject-id pairwise-id persistent-id"

詳細は公式ドキュメント(https://wiki.shibboleth.net/confluence/display/SP3/AttributeAccess)を参照してください。