サイオステクノロジー武井です。WindowsでShibboleth SPを構築するという検証をしたので、ここにその方法をメモとして残しておきたいと思います。
環境は以下のとおりです。
- OS:Windows Server 2016
- Webサーバー:Apache
Visual C++のランタイムのインストール
なにはともあれまずはApacheのインストールですが、その前にVisual C++のライブラリをインストールしなければいけません。以下のURLにアクセスしてください。
https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads
ここから「Visual Studio 2015, 2017 and 2019」のx64(64ビット版)のvc_redist.x64.exeをダウンロードして実行してください。(2020年12月1日現在)
「I agree…」にチェックして「Install」をクリックすればインストールは完了です。
Apacheのインストール
ApacheのWindowsのバイナリは色々なコミュニティから提供されています。SAMLはSSLでないと色々都合が悪いので、今回はOpenSSLのモジュールが導入済みのバイナリを提供しているApache Hausからゲットしたいと思います。ダウンロードするためのURLは以下です。
https://www.apachehaus.com/cgi-bin/download.plx
ここから「Apache 2.4.x OpenSSL 1.1.1 VC15」(2020年12月1日現在)のx64(64ビット版)をダウンロードします。ZIP形式なので解凍します。解凍してできた「Apache24」のフォルダをCドライブ直下に移動します。
そして、以下のコマンドを実行してApacheをWindowsサービスに登録します。
C:\Users\ntakei>cd C:\Apache24\bin C:\Apache24\bin>httpsd -k install Installing the 'Apache2.4' service The 'Apache2.4' service is successfully installed. Testing httpsd.conf.... Errors reported here must be corrected before the service can be started.
これでApacheを起動する準備は整いました。C:\Apache24\bin\ApacheMonitor.exeを実行します。以下のような画面が起動しますので、「Start」をクリックすると。。。
以下のように緑色のマークが表示されればApacheの起動は成功です。
Shibboleth SPのインストール
以下のURLからご希望のバージョンのShibboleth SPをダウンロードします。
https://shibboleth.net/downloads/service-provider/
例えば、バージョン3.1.0のWindows用Shibboleth SPは以下のリンクになります。
https://shibboleth.net/downloads/service-provider/3.1.0/win64/shibboleth-sp-3.1.0.2-win64.msi
インストーラーを実行します。「Next」をクリックします。
「I accept…」にチェックして、「Next」をクリックします。
そのまま以下の状態で「Next」をクリックします。
「Install」をクリックします。これで終わりです。
Shibbolethの設定を定義します。C:\Apache24\conf\extra\shib.confを作成して、以下の内容を書きます。/secure配下がShibboleth SP認証対象になることを想定しておりますので、各自の環境に合わせて適宜変更してください。
<Location /Shibboleth.sso> SetHandler shib </Location> <Location /secure> AuthType shibboleth ShibRequestSetting requireSession true Require shibboleth Require shib-session </Location>
C:\Apache24\conf\httpsd.confに以下の内容を追記します。
Include conf/extra/shib.conf
Shibboleth SPのモジュールを有効化します。C:\Apache24\conf\httpsd.confに以下の内容を追記します。
LoadModule mod_shib "C:\opt\shibboleth-sp\lib64\shibboleth\mod_shib_24.so"
その他、Shibboleth SPの稼働に必要な設定(SPのEntityIDやメタデータの取得など)は適宜行って下さい。
これで設定は完了です。設定を反映させるためにApacheを再起動します。C:\Apache24\bin\ApacheMonitor.exeを実行して、「Restart」をクリックします。
Shibboleth SPを再起動します。サービスから「Shibboleth Daemon」をRestartします。
IdPも含めた動作確認をささっとおこないたい
先の手順は、Shibboleth IdPがすでに用意されている環境を前提としましたが、Shibboleth IdPも含めた動作確認もしてみたいなという方のために、その手順をご紹介します。
Shibboleth IdPは以下のブログで公開している手順にてDocker環境に用意してください。
IdPのメタデータを読み込み処理を有効化します。C:\opt\shibboleth-sp\etc\shibboleth\shibboleth2.xmlで以下の部分のコメントアウトを外します。
<!-- <MetadataProvider type="XML" validate="true" path="partner-metadata.xml"/> -->
https://idp.example.org/idp/shibbolethにアクセスして出力されるXML(IdPのメタデータ)を、C:\opt\shibboleth-sp\etc\shibboleth\partner-metadata.xmlに書き込みます。
そしてShibboleth SPのサービスをRestartします。
次にテスト用のコンテンツを作成します。C:\Apache24\htdocs\secure\test.htmlに以下の内容を書いてください。
<h1>piyo</h1>
sp.example.orgのホスト名はhostsファイルを制御するなどして、Windows上に構築したShibboleth SPモジュールにアクセスするようにしてください。
そして以下のURLにアクセスして、Shibboleth IdPにて認証後に「piyo」と表示されれば成功です!!
https://sp.example.org/secure/test.html
まとめ
WindowsでShibboleth SPを構築するっていうニーズがどれだけあるのかわからないのですが、お役に立てれば幸いです(•ө•)♡