SAML連携をsamltest.idを利用して手軽にテストしてみよう
schedule 2022/08/05 refresh 2024/09/24
本ブログの目的
SAMLサービスプロバイダー(以下、SAML SPと省略します)、またはSAML IDプロバイダー(以下、SAML IdPと省略します。)とのSAML連携については、下記の弊社技術ブログにて説明をしてまいりましたが、サーバーを用意しないと動作確認が出来ないため敷居が高いと感じる方がいらっしゃったかと思います。
-
-
-
-
- [2018/03/14]SimpleSAMLphpを使ってSAMLに対応したサイトを作ろう
- [2018/06/01]Shibboleth SPを使ってSAMLに対応したサイトを作ろう
- [2018/10/16]SimpleSAMLphpを使ってAD認証するSAML IDPを作ろう
- [2018/12/28]SAML SPをつくろう 【mod_auth_mellon編】
- [2019/11/08]SAML SPをつくろう 【Java Servlet編】
- [2020/02/25]CentOS 8でSimpleSAMLphpを使ったSAML SPを作ってみよう!
- [2022/01/12]SeciossLinkの送信属性値をSP側で受け取る(ShibbolethSP)
-
-
-
そんな時に https://samltest.id/ を利用すればSAML SP/IdPの両方の動作確認をサーバー構築無しで簡単に行えますので、その手順を説明いたします。
SAMLの基本的な動作確認に加えて、実装したSAML SP/Idpが上手く動作しない時の比較対象とすることで、テスト観点や設定ミスの原因調査などにも利用することが出来ますので、本記事を参照してお試し頂ければ幸いです。
参考URL
※ samltest.idをIdPとした場合の使用可能なユーザー情報につきましては、特定の手順を踏まないと情報が取得できない仕様となっている関係上リンクを貼ることが出来ませんのでご了承ください。
注意点
-
-
- samltest.idの各ログ情報で閲覧できるように情報が残ってしまいますので、動作確認される際にはテストユーザーなど流出しても影響のないテストユーザーで行うようにしてください。
- 弊社製品の標準機能の範囲においては、SAML IdPおよびSAML SPのテストを同時に行うことが出来ません。メタデータを手動で改良して1ファイル内にSAML IdPとSPの情報を組み込んでsamltest.idに組み込めば動作する仕様になっているようです。今回は時間が足らずそこまでの調査が出来ておりませんのでご了承ください。
- samltest.idにメタデータをアップロードしてから反映されるまでに時間を要するときがあります。場合によっては1日程度待たないと正しい設定であっても正常に動作しないケースもありましたので、時間に猶予がある時に確認されることをお勧めいたします。
- 本記事では2022/07~2022/08リリースのSeciossLinkで動作確認した際の画面を表示しております。試されるタイミングや対象がオンプレ製品の場合は画面の構造などが異なる場合がございますのでご了承ください。
- 本記事の作成段階では送信属性をShibboleth表示(例えばdisplayNameならurn:oid:2.16.840.1.113730.3.1.241というフォーマット形式)に変換しておりませんでしたが、送信属性をShibboleth表示にするとSSO成功画面に送信属性の値が表示される仕様となっておりました。Shibboleth表示のフォーマット形式については下記URLなどをご参照ください。
https://meatwiki.nii.ac.jp/confluence/pages/viewpage.action?pageId=12158166
https://wiki.cac.washington.edu/display/infra/Guide+to+NameID+Formats+and+Attributes+Available+from+the+UW+IdP
-
準備
1. テストユーザーの作成
IdP側のテストの場合は特に指定はございませんが、SP側のテストを実施する際にはユーザーが指定されておりますので、下記表の通りユーザーを作成してください。
ユーザーID:testuserについては、本記事で説明するIdP側のテストをした時のユーザーですので、情報として記載しているだけですので作成の必要はございません。testuserはSP側のテストでは認証が通りませんのでご注意ください。
ユーザーの作成方法については、SeciossLinkのユーザ管理 新規作成、または、AD/LDAP連携をされている場合は各AD/LDAP側のユーザー新規作成手順をご参照ください。
ユーザーID | 姓 | 名 | メールアドレス |
3VHAFNTLIJTFU3XK5VWNC2VYJT7WCXNV | Cooper | Sheldon | scooper@samltest.id |
56GGQJC2LGAWVVFSOAZUG5W2WJHQXFHO | Sanchez | Rick | rsanchez@samltest.id |
WOECYMSGRF4EQEJD67XLWYKXRQ5XENON | Smith | Mortimer | msmith@samltest.id |
testuser | テスト | ユーザー | testuser@example.com |
2. 各メタデータのダウンロード
2.1. samltest.idのSAML SPおよびIdPのメタデータのダウンロード
下記URLをクリックすることで各メタデータが自動的にダウンロードされます。
それぞれURLの最後の名称のspとidpという拡張子無しのファイルでダウンロードされますが、中身はxmlとなっていますので、一般的なテキストエディタで開くことが可能です。ファイル名を編集して".xml"を末尾に追記して頂ければ、お好みのブラウザにドラッグすることで閲覧することが出来ます。
2.2. 当社製品のSAML IdPのメタデータのダウンロード
ご利用している当社製品サーバーの管理コンソールにログインし(以降、同様の手順の場合は"管理コンソールにて"と説明させて頂きます)、[シングルサインオン]-[SAML]の[設定]タブをクリックすると上図の画面に遷移します。[ダウンロード]ボタンをクリックするとidpMetadata.xmlがダウンロードされます。
2.3. 当社製品のSAML SPのメタデータのダウンロード
管理コンソールにて、[認証]-[SAML IDプロバイダー]の[設定]タブをクリックすると上図の画面に遷移します。[ダウンロード]ボタンをクリックするとspMetadata.xmlがダウンロードされます。
3. 準備2.1で取得したidpファイルより証明書を作成する
2022/08/04時点のSAML IdPの機能ですとメタデータをダウンロードする機能がございませんので、準備2.1で取得したidpファイルより証明書情報を抜き取って自身で証明書ファイルを作成する必要がございます。
上図の赤枠部分で囲んだ<ds:X509Certificate></ds:X509Certificate>の中の文字列をコピーしてUTF-8(BOM無し)/LFで保存できるテキストエディタに貼り付けて下記の通りに上下をBEGIN CERTIFICATEとEND CERTIFICATEでサンドイッチしたらidp.pemとしてファイル保存します。
ファイル保存時に、.txtなど異なる拡張子にならないように注意してください。
*** 省略 ***
5hL6/bKUWnNMurQNGrmi/jvqsCFLDKftl7ajuxKjtodnSuwhoY7NQy8=
-----END CERTIFICATE-----
IdP側のテスト(samltest.idをSAML SPとして利用する)
1.samltest.idにIdPのメタデータをアップロードする
上図のsamltest.idのトップページから赤枠部分で囲んだ[UPDOAD METADATA]をクリックします。
上図の赤枠部分で囲んだ箇所の[ファイルを選択]をクリックして、準備2.2で取得したidpMetadata.xmlを選択し、[UPLOAD]ボタンをクリックしてidpメタデータをアップロードします。
アップロードが完了すると、上図画面の下側にアップロードしたメタデータの情報が表示されます。
2.samltest.idのSP設定を行う
下図に設定が完了した後の画面を記載します。縦長の画面構成となっておりますので4枚に分けて記載させて頂いております。
2.1. 準備2.1で取得したspファイルの読み込み
管理コンソールにて、[シングルサインオン]-[SAML]の[登録]タブをクリックし、上図3枚目の赤枠部分で囲んだ[メタデータ]-[ファイルを選択]ボタンをクリックして準備2.1で取得したspファイルを選択します。[ファイルを選択]ボタンの右側にファイル名が表示されたら、[読み込み]ボタンをクリックすることでメタデータが自動的に設定に反映されます。
2.2. メタデータで反映されない箇所、および、シングルログアウトの設定
下記の通り設定をしてください。記載が無い部分については空欄のままで問題ございません。
4枚目の一番下の[ユーザー同意取得]の設定については任意となります。各設定の詳細につきましては、SAML サービスプロバイダーの登録をご参照ください。
● ログアウトURL
https://samltest.id/Shibboleth.sso/SLO/Redirect
から下記の通り変更してください。
https://samltest.id/Shibboleth.sso/Logout?return=https://{弊社製品のFQDN}/sso/logout.cgi
ShibbolethのVerやSP側の実装状態によっても異なるかと思いますが、samltest.idの2022/8/4時点の仕様だとIdP起点によるシングルログアウトがSP側のログアウト画面で止まってしまうため、上記の設定変更が必要になります。
returnに関する情報につきましてはGakuNinShibInstall ログアウト処理をご参照ください。
● アクセス先URL
https://samltest.id/Shibboleth.sso/Login?entityID={IdPのエンティティID}
IdPのエンティティIDがhttps://slink.secioss.com/example なら下記の通りとなります。
https://samltest.id/Shibboleth.sso/Login?entityID=https://slink.secioss.com/example
● IDの属性、および、ユーザーIDの属性
samltest.idでサポートしているNameIDにおいて、準備1のユーザーID:testuserで実施したときの結果を下表に記載しましたので、こちらを参考に任意の組み合わせを設定してください。
IDの属性 | ユーザーIDの属性 | SAMLレスポンスに記載された値の例 |
---|---|---|
transient | Transient ID | _4435f2a905207ca14d2d4366f2acca494beb237074 |
persistent | Targeted ID (eduPersonTargetedID) |
gclaEbrc0A11r/dgUotd0pCmnMU= |
persistent | ユーザーID | testuser |
persistent | メールアドレス | testuser@example.com |
emailAddress | メールアドレス | testuser@example.com |
● [必要に応じて]送信する属性
samltest.idでは下表の送信属性をサポートしています。必要に応じて該当する送信する属性のチェックをONにしてください。
送信する属性 | 属性名 |
ユーザーID | uid |
メールアドレス | |
社員番号 | employeeNumber |
姓 | sn |
名 | givenName |
別名 | displayName |
他にroleとtelephoneNumberもsamltest.idでサポートしておりますが、弊社製品では2022/8/4現在で対応しておりませんので、送信する属性(固定値)で任意の値を送ります。
属性名 | 値(例) |
role | testRole |
telephoneNumber | 012011112222 |
● [必要に応じて]ポータルに表示するロゴ画像
https://samltest.id/saml/logo.png
2.3. 設定の保存
2.2.の4枚目の図の[保存]ボタンをクリックすると1枚目の図の右上部分の[設定]タブの直下に”正常に保存されました。”と表示されたらsamltest.idのSP設定が完了となります。
SSOが出来るようにsamltest.idのSPにアクセス出来るようにアクセス権限の設定を行います。設定方法につきましては、アクセス権限の登録をご参照ください。続いて、ユーザーへのサービス割り当てについてはSeciossLinkのユーザ管理 新規作成をご参照ください。
3.samltest.idのSPへのSSO
ユーザーポータルにアクセスして上図の赤枠部分をクリックします。
SSOに成功すると上図の画面に遷移します。[SEE SAMLTEST SP LOGS]ボタンをクリックするとIdPから送信されたSAMLレスポンスの内容や送信属性で認識できた情報などの内容を確認できます。
上図の画面から下方向に移動すると下図の通り[SAML LOGOUT]ボタンがありますので、そちらをクリックするとSP起点のシングルログアウトの動作が確認できます。
管理コンソールにて[システム]-[ログ]の操作ログ(上図)を見ると成功した旨が確認できます。
以上でsamltest.idをSPにした時のSSOまでの手順説明は終了となります。
SP側のテスト(samltest.idをIdPとして利用するSAML認証)
1.samltest.idにSPのメタデータをアップロードする
手順は◆ IdP側のテスト(samltest.idをSAML SPとして利用する)の1.samltest.idにIdPのメタデータをアップロードする と同様で、準備2.2で取得したspMetadata.xmlをアップロードするだけが差分情報となりますので、手順説明は割愛させて頂きます。
2.samltest.idのIdP設定を行う
下図に設定が完了した後の画面を記載します。
管理コンソールにて、[認証]-[SAML IDプロバイダー]の[登録]タブをクリックすると上図の画面に遷移します。こちらはメタデータ読み込み機能が実装されておりませんので、準備2.1で取得したidpファイルから下表の該当する項目を上図の設定に反映させます。
SAML IDプロバイダーの設定項目 | 値(<>内はメタデータの記載セクションを示します) |
エンティティID | <EntityDescriptor の entityID> https://samltest.id/saml/idp |
名前 | (任意の文字列) |
ログインURL | <SingleSignOnService bindings:HTTP-Redirect> https://samltest.id/idp/profile/SAML2/Redirect/SSO |
ログアウトURL | <SingleLogoutService bindings:HTTP-Redirect> https://samltest.id/idp/profile/SAML2/Redirect/SLO |
SAMLログアウト | チェックボックスをOFFにする |
IDの属性 | ユーザーID |
SAML 公開鍵 | 準備3で取得したidp.pemを[ファイルを選択]ボタンを クリックして読み込みます。 |
設定後、[保存]ボタンを押して上図の右上の[設定]タブの下に"正常に保存されました。"と表示されたらsamltest.idのIdP設定が完了となります。SAML認証が利用できるようにアクセス権限にSAML認証を追加します。設定方法につきましては、アクセス権限の登録をご参照ください。
3.SAML認証でユーザーポータルにログインする
テナント名を入力する必要がある製品をご利用の場合はテナント名を入力後、上図のユーザー名を入力する画面に遷移しますので、準備1.で作成した表の上から3人の中から一人選んで、ユーザーIDを入力し、[次へ]ボタンをクリックします。
認証方式選択画面に遷移したら、SAML認証を選択し、[選択]ボタンをクリックします。
上図の画面に遷移したら、上図の下側に表示されている表からログインする際に入力したユーザーIDと合致する組み合わせを選択します。上図の左上に配置されているUsernameとPasswordに選択した組み合わせを入力して[LOGIN]ボタンをクリックします。
上図の送信属性を確認する画面に遷移したら、任意のラジオボタンを選択して上図の下に配置されている[Accept]ボタンをクリックします。
認証に成功するとユーザーポータルへのログインが完了となります。
管理コンソールにて[システム]-[ログ]の操作ログ(上図)を見ると成功した旨が確認できます。もし、この説明通りに画面が遷移しなかった場合は、送信されてくるユーザーIDの値が準備1.と異なっている値(暗号化された値)になっている可能性が考えられます。[システム]-[ログ]の操作ログを確認し、下図の通りとなっている場合には、ログに記載のユーザー名でユーザーを作成し直してから再度動作確認を行ってください。
以上でsamltest.idをIdPにした時のSAML認証までの手順説明は終了となります。
まとめ
お疲れ様でした。キャプチャー図が多いため最初は時間がかかるように思えたかもしれませんが、実際にやってみると操作する項目はそれほど多くは無かったのではないでしょうか。
samltest.idを用いたIdP側のテスト、または、SP側のテストのどちらかの手順を記載しているサイトはチラホラ見かけますが、両方とも記載しているサイトは少ないかと思いますので、当社製品を抜きにしても皆様の参考になったのではないかと思います。
当社製品をまだ体験したことが無い方は、この記事の閲覧を機会にご興味を持って頂けましたら1か月間評価版での無料体験を申し込んで頂ければ幸いです。
その他、マニュアル、製品資料、価格表などSeciossLinkサポート情報にまとめておりますので、合わせてご参照ください。