LiferayでのSAML設定方法

SSOとは、ユーザーが複数のサイト間で都度パスワード認証をする手間を省くため、サーバやアプリケーション、ネットワークに接続する際のサインオンを一度の手続きで行い、複数アプリケーションやサーバに接続できるようにするる仕組みです。SAMLはSSOの一つです。SAML 2.0とは、ユーザの情報を含むトークンを利用して、SAMLオーソリティー(アイデンティティープロバイダー)とSAML消費者(サービスプロバイダー)とコミュニケーションするXMLプロトコルです。

詳細

1) アイデンティティープロバイダーの作成 

目的:1台のLiferayはIdPとして設定と運用

環境:saml.liferay.local

  1. Liferayを起動
  2. MarketplaceからSAML 2.0 Provider EEポートレットをダウンロードhttps://www.liferay.com/ja/marketplace/-/mp/application/15188711
  3. ダウンロードしたパッケージを「deploy」フォルダにコピーして、Liferayにデプロイ
  4. Liferayにアクセス
  5. 管理者権限のあるユーザでLiferayにログイン
  6. コントロールパネルにて「SAML 管理者」に移動
  7. SAMLの役割を【Id プロバイダー】に選択、エンティティIDに【IdP】を記入
    saml-001.png
  8. 証明書を作成
    saml-002.png
  9. 【Id プロバイダー】タブに移動
  10. 下記を設定しま
    • メタデータを署名します → 有効
    • 認証要求の署名が必要 → 有効
    • 識別子の名前属性名 → emailAddress(メールアドレスでログインする場合)
      saml-003.png
  11. 保存
  12. 【共有】に戻る
  13. SAMLプラグインを有効にする
    saml-004.png

これで、アイデンティティープロバイダーを設定できました。

 

2) サービスプロバイダーの作成(その1)

目的:1台のLiferayはSPとして設定し運用

環境:site1.liferay.local

 

  1. Liferayを起動
  2. MarketplaceからSAML 2.0 Provider EEポートレットをダウンロードhttps://www.liferay.com/ja/marketplace/-/mp/application/15188711
  3. ダウンロードしたパッケージを「deploy」フォルダにコピーして、Liferayにデプロイ
  4. Liferayにアクセス
  5. 管理者権限のあるユーザでLiferayにログイン
  6. コントロールパネルにて「SAML 管理者」に移動
  7. SAMLの役割を【サービス プロバイダー】に選択、エンティティIDに【Site1】を記入
    saml-005.png
  8. 証明書を作成
    saml-006.png
  9. 【アイデンティティのプロバイダー接続】タブに移動
  10. 下記を設定します
    • 名前 → SAML
    • エンティティID(IdPに設定したエンティティID) → IdP
    • メタデータの URL → http://saml.liferay.local/c/portal/saml/metadata
    • 名前識別子の形式 → メールアドレス
      saml-007.png

  11. 保存
  12. 【共有】に戻る
  13. SAMLプラグインを有効にする
    saml-008.png

 

これで、サービスプロバイダーの1台目を設定しました。

3) サービスプロバイダーの作成(その2)

目的:1台のLiferayはSPとして設定と運用

環境:site2.liferay.local

サービスプロバイダーの2台目の構築は、サービスプロバイダーの1台目と同様になります。

 

4) アイデンティティープロバイダーの設定

目的:構築した2台のサービスプロバイダーからのアクセスを許可

環境:saml.liferay.local

  1. Liferayにアクセス
  2. 管理者権限のあるユーザでLiferayにログイン
  3. コントロールパネルにて「SAML 管理者」に移動
  4. 「サービス プロバイダーの接続」タブに移動
  5. 【サービス プロバイダーを追加します】ボタンをクリック
  6. 下記の状態を記入
  7. 保存
  8. Site2も同様
    saml-010.png

 

これで、サービスプロバイダーの2台からのアイデンティティープロバイダーの利用が許可されました。

 

5) サービスプロバイダ開始モデルを操作確認

目的:SSOの操作を確認

1回Site1にログインしたら、Site2のログインをクリックするだけで、認証情報を再度記入せずSite2の認証が自動的行われます。

  1. site1.liferay.localにアクセス
  2. ログインポートレットを利用せず、右上にあるログインボタンをクリック
  3. saml.liferay.localに遷移し、ログイン画面が表示されます
  4. ログイン
  5. 正常にログインした状態でsite1.liferay.localに遷移されます
  6. site2.liferay.localにアクセス
  7. メニューのログインボタンをクリック
  8. saml.liferay.localに遷移し、またすぐログインした状態でsite2.liferay.localに遷移されます
  9. ログアウト

これで、サービスプロバイダ開始モデルが正常に動いていることを確認します。

 

6) アイデンティープロバイダ開始モデルを操作確認

目的:SSOの操作を確認

1回Site1にログインしたら、特定のSite2へのリンクをクリックするだけで、認証情報を再度記入しなくてもSite2の認証が自動的行われ、Site2に遷移されます。

  1. site1.liferay.localにアクセス
  2. ログイン(SSO経由)
  3. 新規ページを追加
    • 名前:Site2へ行く
    • 種類:URLへリンク
    • URL:http://saml.liferay.local/c/portal/saml/sso?entityId=SP2&RelayState=http://site2.liferay.local:8080
  4. 「Site2へ行く」にクリック
  5. saml.liferay.localに遷移し、またすぐログインした状態でsite2.liferay.localに遷移されます
  6. ログアウト

 

これで、アイデンティープロバイダ開始モデルが正常に動いていることを確認できます。

追加情報

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に変更できます。

一時的に変更する場合:

  1. 管理者としてLiferayにログイン
  2. コントロールパネル>サーバ管理>ログレベルに移動
  3. 【カテゴリ追加】ボタンをクリック
  4. 下記のカテゴリを追加
    クラス名:com.liferay.saml
    レベル:DEBUG
  5. 保存
  6. 再起動すると元の値に戻ります

 

恒久的に変更する場合:

  1. <tomcat_home>/webapps/saml-portlet/WEB-INF/classes/log4j.propertiesを編集
  2. 【log4j.rootLogger=INFO, CONSOLE】を【log4j.rootLogger=DEBUG, CONSOLE】に変更
  3. Liferayを起動
この記事は役に立ちましたか?
1人中0人がこの記事が役に立ったと言っています