SSOとは、ユーザーが複数のサイト間で都度パスワード認証をする手間を省くため、サーバやアプリケーション、ネットワークに接続する際のサインオンを一度の手続きで行い、複数アプリケーションやサーバに接続できるようにするる仕組みです。SAMLはSSOの一つです。SAML 2.0とは、ユーザの情報を含むトークンを利用して、SAMLオーソリティー(アイデンティティープロバイダー)とSAML消費者(サービスプロバイダー)とコミュニケーションするXMLプロトコルです。
詳細
1) アイデンティティープロバイダーの作成
目的:1台のLiferayはIdPとして設定と運用
環境:saml.liferay.local
- Liferayを起動
- MarketplaceからSAML 2.0 Provider EEポートレットをダウンロードhttps://www.liferay.com/ja/marketplace/-/mp/application/15188711
- ダウンロードしたパッケージを「deploy」フォルダにコピーして、Liferayにデプロイ
- Liferayにアクセス
- 管理者権限のあるユーザでLiferayにログイン
- コントロールパネルにて「SAML 管理者」に移動
- SAMLの役割を【Id プロバイダー】に選択、エンティティIDに【IdP】を記入
- 証明書を作成
- 【Id プロバイダー】タブに移動
- 下記を設定しま
- メタデータを署名します → 有効
- 認証要求の署名が必要 → 有効
- 識別子の名前属性名 → emailAddress(メールアドレスでログインする場合)
- 保存
- 【共有】に戻る
- SAMLプラグインを有効にする
これで、アイデンティティープロバイダーを設定できました。
2) サービスプロバイダーの作成(その1)
目的:1台のLiferayはSPとして設定し運用
環境:site1.liferay.local
- Liferayを起動
- MarketplaceからSAML 2.0 Provider EEポートレットをダウンロードhttps://www.liferay.com/ja/marketplace/-/mp/application/15188711
- ダウンロードしたパッケージを「deploy」フォルダにコピーして、Liferayにデプロイ
- Liferayにアクセス
- 管理者権限のあるユーザでLiferayにログイン
- コントロールパネルにて「SAML 管理者」に移動
- SAMLの役割を【サービス プロバイダー】に選択、エンティティIDに【Site1】を記入
- 証明書を作成
- 【アイデンティティのプロバイダー接続】タブに移動
- 下記を設定します
- 名前 → SAML
- エンティティID(IdPに設定したエンティティID) → IdP
- メタデータの URL → http://saml.liferay.local/c/portal/saml/metadata
- 名前識別子の形式 → メールアドレス
- 保存
- 【共有】に戻る
- SAMLプラグインを有効にする
これで、サービスプロバイダーの1台目を設定しました。
3) サービスプロバイダーの作成(その2)
目的:1台のLiferayはSPとして設定と運用
環境:site2.liferay.local
サービスプロバイダーの2台目の構築は、サービスプロバイダーの1台目と同様になります。
4) アイデンティティープロバイダーの設定
目的:構築した2台のサービスプロバイダーからのアクセスを許可
環境:saml.liferay.local
- Liferayにアクセス
- 管理者権限のあるユーザでLiferayにログイン
- コントロールパネルにて「SAML 管理者」に移動
- 「サービス プロバイダーの接続」タブに移動
- 【サービス プロバイダーを追加します】ボタンをクリック
- 下記の状態を記入
- 名前 → Site1
- エンティティID → Site1
- 有効にする
- メタデータのURL → http://site1.liferay.local:8080/c/portal/saml/metadata
- 保存
- Site2も同様
これで、サービスプロバイダーの2台からのアイデンティティープロバイダーの利用が許可されました。
5) サービスプロバイダ開始モデルを操作確認
目的:SSOの操作を確認
1回Site1にログインしたら、Site2のログインをクリックするだけで、認証情報を再度記入せずSite2の認証が自動的行われます。
- site1.liferay.localにアクセス
- ログインポートレットを利用せず、右上にあるログインボタンをクリック
- saml.liferay.localに遷移し、ログイン画面が表示されます
- ログイン
- 正常にログインした状態でsite1.liferay.localに遷移されます
- site2.liferay.localにアクセス
- メニューのログインボタンをクリック
- saml.liferay.localに遷移し、またすぐログインした状態でsite2.liferay.localに遷移されます
- ログアウト
これで、サービスプロバイダ開始モデルが正常に動いていることを確認します。
6) アイデンティープロバイダ開始モデルを操作確認
目的:SSOの操作を確認
1回Site1にログインしたら、特定のSite2へのリンクをクリックするだけで、認証情報を再度記入しなくてもSite2の認証が自動的行われ、Site2に遷移されます。
- site1.liferay.localにアクセス
- ログイン(SSO経由)
- 新規ページを追加
- 名前:Site2へ行く
- 種類:URLへリンク
- URL:http://saml.liferay.local/c/portal/saml/sso?entityId=SP2&RelayState=http://site2.liferay.local:8080
- 「Site2へ行く」にクリック
- saml.liferay.localに遷移し、またすぐログインした状態でsite2.liferay.localに遷移されます
- ログアウト
これで、アイデンティープロバイダ開始モデルが正常に動いていることを確認できます。
追加情報
1) IdP/SPへの接続数に制限ありますか?
LiferayはSPとして運用する場合、IdP 1台のみに接続できます。
LiferayはIdPとして運用する場合、多数SPと接続できます。
2) SAMLプラグインはSAML 2.0プロトコルを100%コンプライアンスしていますか?
LiferayのSAMLプラグインは100%コンプライアンスしています。
ただし、全てのSAML 2.0機能をインプリメントされていません。
対応しているバインディングは以下の通りです。
○ HTTP Redirect Binding
○ HTTP POST Binding
○ SAML SOAP Binding (IdP initiated SLO only)
× Reverse SOAP (PAOS) Binding
× HTTP Artifact Binding
× SAML URI Binding
3) SAMLのトラブルがある際、デバッグできますか?
次の手順でSAMLのログレベルをDEBUGに変更できます。
一時的に変更する場合:
- 管理者としてLiferayにログイン
- コントロールパネル>サーバ管理>ログレベルに移動
- 【カテゴリ追加】ボタンをクリック
- 下記のカテゴリを追加
クラス名:com.liferay.saml
レベル:DEBUG - 保存
- 再起動すると元の値に戻ります
恒久的に変更する場合:
- <tomcat_home>/webapps/saml-portlet/WEB-INF/classes/log4j.propertiesを編集
- 【log4j.rootLogger=INFO, CONSOLE】を【log4j.rootLogger=DEBUG, CONSOLE】に変更
- Liferayを起動