はじめに
本記事は「LibertyとIBM Verifyで試すSAML認証」シリーズの第2回です。LibertyとIBM Verifyを使用して、SAML認証の動作を実際に体験していきます。
【1】SAML認証とは
【2】動かして体験してみよう(本記事)
【3】仕組みの詳細を理解する
前提条件
本記事の内容を実行するためには、以下の2点が必要です。
-
IBM Verifyの管理者権限
IBM Verifyは90日間試用可能なSaaS環境が提供されています。必要に応じて、登録をご検討ください。 -
JDKが動作するアプリケーション環境
JDK 21がインストールされた端末上での動作を想定しています。Open Libertyを使用してアプリケーションを起動しますが、JDKがインストールされていれば、Open Libertyの事前準備は不要です。
本記事のサンプルアプリケーションは、SAML認証の基本的な動作を確認するための最小限の実装です。実運用に際しては、設計上の考慮点が多数存在します。
WebSphere Liberty SAML Web SSO 構成ガイドに詳細が記載されていますので、併せてご確認ください。
アプリケーションを動かす(SAML認証なし)
アプリケーションのダウンロードと実行
GitリポジトリからLiberty用の実行リソースを取得し、以下のコマンドで実行します。
git clone https://github.com/tatsuya-ibm/liberty-saml-verify.git
cd liberty-saml-verify
mvn liberty:run
起動後、ブラウザで https://localhost:9443/hello/hello.jsp にアクセスします。
この画面からボタンを押すことで、「HelloWorld 1」「HelloWorld 2」画面に遷移できます。
SAML認証の設定
ここからは、アプリケーションの設定変更とVerify側の設定を行い、SAML認証が動作するように構成していきます。
Verify:IdPメタデータ取得
Verifyが稼働するURLに次の形式にてブラウザでアクセスすると、IdPのメタデータファイル(federation_metadata.xml)をダウンロードできます。
https://(例: https://example.verify.ibm.com)/v1.0/saml/federations/saml20ip/metadata
Liberty:SAML認証有効化
ダウンロードしたIdPのメタデータファイルを src/main/liberty/config フォルダー(server.xmlがある場所)にコピーします。
server.xmlを開き、「SAMLを有効化する場合、以下のコメントアウトを解除してください」と記載された2か所のコメントを解除して保存します。
src/main/webapp/WEB-INF/web.xml を開き、こちらも「SAMLを有効化する場合、以下のコメントアウトを解除してください」と記載された2か所のコメントを解除して保存します。
Liberty:SPメタデータ取得
アプリを起動した状態で以下のURLにアクセスすると、SPのメタデータファイル(spMetadata.xml)をダウンロードできます。
https://localhost:9443/ibm/saml20/defaultSP/samlmetadata
Verify:ユーザー・グループの作成
Verifyに管理者としてログインし、今回使用するユーザーとグループを作成します。
管理者権限がある場合、右上のユーザーアイコンをクリックすると「adminへの切り替え」というリンクがあります。これをクリックします。

メニューの「ディレクトリー > ユーザー&グループ」から、ユーザー&グループ画面に遷移します。

ユーザーは「ユーザーの追加」ボタンから作成します。一般的な登録画面ですが、アイデンティティー・プロバイダーにIBMidを使用しない場合は「Cloud Directory」を選択します。

グループは、グループタブの「グループの追加」から作成します。今回は「group1」「group2」を作成し、group1に先ほど作成したユーザーを追加します。

Verify:アプリケーションの作成
ここでの「アプリケーション」は、IdPが認証を提供する対象のSP(サービスプロバイダー)を指します。
メニューの「アプリケーション > アプリケーション」から一覧画面に遷移し、「アプリケーションの追加」ボタンをクリックします。

「Custom Application」を選択し、「アプリケーションの追加」ボタンをクリックします。

アプリケーションは以下のように設定します。指定項目以外はデフォルトのままで構いません。
| タブ | 項目 | 値 |
|---|---|---|
| 一般 | 名前 | (任意) |
| 一般 | 会社名 | (任意) |
| サインオン | Use metadata | ON |
| サインオン | Metadata file | (前の手順で取得したSPメタデータファイルをアップします) |
| サインオン | ターゲットURL | https://localhost:9443/hello/hello.jsp |
| サインオン | サービス・プロバイダーの SSO URL | https://localhost:9443/ibm/saml20/defaultSP/acs |
| サインオン | 属性マッピング | 「すべての既知のユーザー属性をSAMLアサーションで送信」をON |
設定後、「保存」ボタンをクリックします。
「資格」タブが表示されるので、「すべてのユーザーおよびグループに対する自動アクセス」を選択し、「保存」ボタンをクリックします。更新確認のダイアログでは「OK」をクリックしてください。
アプリケーションを動かす(SAML認証あり)
SAML認証なしのときと同様に、Libertyのアプリケーションを起動し、ブラウザで https://localhost:9443/hello/hello.jsp にアクセスします。
Verifyの認証画面に遷移します。ログインには、Verify上で作成したユーザーとそのパスワードを使用します。

ログイン後、アプリケーション画面に遷移します。「HelloWorld 1」の画面にも正常に遷移できます。

ログインユーザーは group2 に所属していないため、「HelloWorld 2」へのアクセス権限がなく、権限エラーが表示されます。

ここまでのまとめ
実際に動作を確認することで、SAML認証は手が届く技術だと感じていただけたのではないでしょうか。
次回【3】動きの詳細を理解するでは、今回設定した内容の確認と、SAMLアサーションの挙動について詳しく解説します。
参考
WebSphere Liberty SAML Web SSO 構成ガイド