ブログ|株式会社セシオス

Shibboleth SP for IIS でSAML対応

作成者: 株式会社セシオス|Jul 5, 2019 12:00:19 AM

Shibboleth SP for IIS を使用して SAML に対応した ASP.NET のサイトを作ります。

 

SeciossLinkが利用可能であること
検証用のSeciossLinkテナントは example.com とします

 

Windows Server 2019(以下 Win2019) が構築済みであること
ホスト名は shibbolethiis.int.secioss.work とします。

 

Win2019 に Webサーバー(IISとASP.NET、ISAPI)の役割がインストール済みであること

 

 

 

Shibboleth公式サイトから Shibboleth SP forWindows をインストールします。

https://shibboleth.net/downloads/service-provider/3.0.4/win64/shibboleth-sp-3.0.4.1-win64.msi

 

今回は執筆時点の最新版(3.0.4)をインストールします。

 

インストールパス指定画面で「Configure IIS7 module」にチェックを入れます。
それ以外はすべてデフォルトでインストールします。

 

 

インストール後、再起動を求められましたら、再起動をしてください。
 

 

 

SeciossLink の SAML IDP メタデータをダウンロードします。

 

QueryStringのexample.comはテナント名なので、環境に合わせて変えてください。

https://slink.secioss.com/saml/metadata.php?tenant=example.com

 

ダウンロードした SlinkMetadata.xml は Shibboleth の設定ファイルのフォルダーに配置します。

C:\opt\shibboleth-sp\etc\shibboleth\SlinkMetadata.xml
 

 

Shibboleth SPの設定ファイルを設定していきます。


デフォルトでは C:\opt\shibboleth-sp\etc\shibboleth\shibboleth2.xml にインストールされているファイルを編集します。

 

今回構築するホスト名は

 

・Webサーバーのホスト名を設定します。

 

 

 

・Shibboleth SPで認証が必要なホストとパスを設定します。

 

今回、パスはデフォルトの secure をそのまま使用します。

 

 

 

・Shibboleth SPのentityIDを設定します。

任意の文字列でいいのですが、慣習に従いurl形式とします。

 

 

・SeciossLink(ID Provider)のentityIDを設定します

 

SeciossLinkのentityIDにはテナントIDが含まれているため、テナント毎に違う値です。
今回は example.com を使用しているので、以下のようになります。

 

今回 discoveryProtocol は使用しないので、デフォルトのまま変更しません。

 

 

・Shibboleth SPのステータス確認ページのACL

 

Shibbolethの動作確認用ページに、LAN内の別PCからもアクセスできるようにACLを追加しときます。
動作確認だけなので不要ならスキップしても大丈夫です。

 

・SeciossLinkのメタデータを設定します。

 

デフォルトではコメントアウトされていますので、アンコメントして。pathを書き換えます。
「2.SeciossLink の メタデータ」 でダウンロードしたファイルを指定します。

 

・Shibboleth SPの再起動

 

これでShibboleth SPの設定は終了です。Shibboleth SPのサービスを再起動します。

 

 

「C:\opt\shibboleth-sp」フォルダーにIIS_IUSRSのフルコントロール権限を付与します。

 

エクスプローラーから 「C:\opt\shibboleth-sp」を選択し、右クリックのコンテキストメニューから「プロパティ」を選択します。

 

 

セキュリティ タブを開き、「編集」ボタンを押下します。

 

 

「追加」ボタンを押下し、IIS_IUSRSを追加します。

 

 

IIS_IUSRSにフルコントロールを許可します。

 

 

「OK」ボタンを押下して設定を反映させます。

 

インターネットインフォメーション サービス(IIS) マネージャーを起動します。

 

 

左ペインの「サイト」を展開し、「Default Web Site」を選択します。

 

右ペインから「ISAPIフィルター」を選択し、「追加」を行います。

 

フィルター名に「Shibboleth」、実行可能ファイルに「C:\opt\shibboleth-sp\lib64\shibboleth\isapi_shib.dll」を設定し、OKボタンを押下します。

 

 

再度、左ペインから「Default Web Site」を選択し、右ペインから「ハンドラーマッピング」を選択します。

「スクリプト マップの追加」を選択し、

 

要求パスに「*.sso」、実行可能ファイル「C:\opt\shibboleth-sp\lib64\shibboleth\isapi_shib.dll」、名前に「Shibboleth ISAPI」を設定し、OKボタンを押下します。

 

 

認証後に表示するサンプルコンテンツを作成します。

 

C:\inetpub に secure というディレクトリを作成し、IIS_IUSRS にフルコントロールの権限を付与します。

 

 

secureフォルダーをアプリケーションを追加します。

 

「Default Web Site」のコンテキストメニューからアプリケーションの追加を選択し、以下のようなアプリケーションを追加します。

 

エイリアス:secure
アプリケーションプール:.NET v4.5
物理パス:C:\inetpub\secure

 

 

「Default Web Site」を選択し。IISを再起動します。

 

これでShibboleth-SPの設定は終了です。

 

以下のURLに接続し、正常に稼働しているか確認してください。

https://shibbolethiis.int.secioss.work/Shibboleth.sso/Status

 

正常に稼働している場合、以下のようなXMLが返ります。

 

最後のStatusタグの内容がOKなら正常です。

 

以下のURLにアクセスしてShibboleth SPのメタデータをダウンロードします。

 

https://shibbolethiis.int.secioss.work/Shibboleth.sso/Metadata

 

SeciossLinkの管理画面にログインし、SAML SPの新規登録を行います。


まず、「メタデータ」のファイル参照ボタンで、さきほどダウンロードしたShibboleth SPのメタデータを選択し、読み込みボタンを押します。

 

 

メタデータの読み込みを行った後、以下の項目を追加で入力します。

 

項目名

設定値

サービスID shibbolethiis ※任意の値
サービス名 shibbolethiis ※任意の値
アクセス先URL https://shibbolethiis.int.secioss.work/secure/
※サンプルページのURLを設定します

 

保存ボタンを押下し、設定を保存します。

 

登録したSAML SPをユーザーに割り当てます。

 

 

 

以下のような C:\inetpub\secure\Default.aspx を作成します。


SAML認証したユーザIDとサーバー変数の一覧を表示するだけの簡単なサンプルです。

 


以下のURLにアクセスします。

 

https://shibbolethiis.int.secioss.work/secure/

 

SeciossLinkのログイン画面にリダイレクトされますので、SeciossLinkで認証すると以下のようなサンプルページが表示されます。

 

 

 

Shibbolethのデフォルト設定ではユーザーIDが <IdPのEntityID>!<SPのEntityID>!<ユーザーID> のフォーマットで保存されます。

 

Shibbolethでの認証情報は ServerVariables に保存されています。

 

 

このようにShibbolethを使うとIIS上のASP.NETアプリケーションも簡単にSAML対応できます。

それではまた。

 

SeciossLinkは、Shibboleth SP for IISを使用してSAMLに対応したASP.NETアプリケーションとシングルサインオン連携が可能です。

ユーザーが安全にサービスプロバイダーへアクセスできるため、ぜひ一度お試しください。