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アプリケーションとシングルサインオン連携が可能です。ユーザーが安全にサービスプロバイダーへアクセスできるため、ぜひ一度お試しください。
|