SAML経由で外部IDプロバイダーからユーザーグループのメンバーシップをインポートする
サブスクリプション
この機能は 開発者機能フラグ の背後でリリースされました。 Liferay DXP 2024.Q2/Portal GA120で一般提供(GA)されました。 以前のバージョンではこの機能は開発機能フラグの背後にあるため、本番環境では使用しないでください。
Liferayがサービスプロバイダーではなくアイデンティティプロバイダーとして機能する場合、グループメンバーシップをインポートするのではなく、SAML属性として公開します。 ユーザーグループメンバーシップ属性 を参照してください。
外部のIDプロバイダー(IdP)からユーザーグループとそのメンバーシップをインポートできます。 これには、IdPを登録する際に必要なフィールドを設定するだけで済みます。 XML構造はIdPによって異なるため、最初のステップは、ご利用のIdPからユーザーグループの複数値属性を見つけることです。
例えば、Oktaのユーザーグループ構造は次のようになります。
<saml2:Attribute Name="userGroup" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified">
<saml2:AttributeValue xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="xs:string"
>Okta-UserGroup2
</saml2:AttributeValue>
<saml2:AttributeValue xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="xs:string"
>Okta-UserGroup1
</saml2:AttributeValue>
</saml2:Attribute>
以下は、外部のIdPからユーザーグループをインポートするために、この構造を使用した設定例です。
この例では、Oktaを外部IDプロバイダー(IdP)として、Liferayをサービスプロバイダー(SP)として使用しています。
Okta上でSAML 2.0アプリを作成する
-
Oktaの管理ダッシュボードにログインしてください。
-
アプリケーション → アプリケーションに移動し、 アプリ統合の作成 をクリックします。
-
SAML 2.0 を選択し、 次へ をクリックします。
-
名前を liferaysaml と入力し、 次へ をクリックします。
-
一般の SAML 設定 セクションに、以下の値を入力してください。
シングルサインオン URL:
http://[IP_ADDRESS]:[PORT_NUMBER]/c/portal/saml/acs(ローカルの Liferay インスタンスを実行している場合は、次のようになります。http://localhost:8080/c/portal/saml/acs)オーディエンスURI(SPエンティティID):
okta-saml名前ID形式:
メールアドレスアプリケーションユーザー名:
メールアドレス
このフィールドは、ユーザーがOktaにログインする際に使用するユーザー名のソースを示し、SAMLを使用する際に、そのユーザー名がLiferayへのログインに使用されます。
-
属性ステートメント の下に以下の値を追加してください。
firstName (未指定):
user.firstNamelastName (未指定):
user.lastNameメールアドレス (未指定):
ユーザーのメールアドレスscreenName (未指定):
user.firstName左側の値はSAML属性の名前です。 これらは右側の対応する値に対応しており、Oktaのさまざまなユーザーフィールドを指定します。
-
グループ属性ステートメント の下に以下の値を追加してください。
userGroup (未指定): で始まる
Okta(これは、Okta のユーザー グループがプレフィックスOktaで始まることを前提としています。 例:Okta-UserGroup-1)
注記上記の手順は、Okta 上に異なるグループ (プレフィックス
Oktaで始まる) に属するユーザーのセットが既に存在することを前提としています。 Okta では、グループメンバーシップを定義するために、 キーワードまたは正規表現 のいずれかを使用することを推奨しています。 これらのグループは、その名前に基づいてLiferayのユーザーグループと照合されます。グループ属性ステートメントには、フィルタ条件または正規表現を指定することが必須です。 フィルタ条件または正規表現がない場合、SAML属性は空で送信されます。
-
をクリックして、 に進みます。
-
フォームの残りの部分はOkta固有のものであり、設定には影響しません。 自分に最適なものを選んで、 完了 をクリックしてください。
メタデータの保存
Liferayインスタンスに移行する前の最後のステップは、SAMLメタデータを保存することです。
-
アプリケーション → アプリケーションに移動し、 liferaysaml を選択します。
-
デフォルトでは、 課題 タブが表示されます。 割り当て をクリックし、 人に割り当て を選択します。 この SAML アプリを使用して Liferay にログインできるユーザーを検索し、 割り当て をクリックします。 ここではグループ別に選択することもできます。

-
をクリックして完了 します。
-
サインオン タブを選択します。
-
右側の SAMLセットアップ手順を表示をクリックします。
-
新しい画面で、下にスクロールして「オプション」セクションを探してください。 XML コードのブロック全体をコピーして、
oktasamlmetadata.xmlという名前の新しいファイルに貼り付けます。

Liferayの設定
次に、LiferayのSAML管理画面でOktaをサービスプロバイダーとして設定する必要があります。
-
グローバルメニュー (
) を開き、 コントロールパネル → SAML 管理 に移動します。 -
「一般」タブで、エンティティ ID として okta-saml と入力します。
-
をクリックして証明書を作成します。
-
新しいウィンドウで、 okta-saml を 共通名 として、 learn を キーパスワード として入力します。
-
をクリックして保存します。
-
ID プロバイダー接続の下で、 ID プロバイダーの追加 をクリックします。
-
名前として Okta と入力してください。
-
oktasamlmetadata.xmlファイルからエンティティ ID をコピーしてここに貼り付けます。 -
有効 チェックボックスをオンにします。
-
メタデータの下で、 メタデータXMLのアップロード をクリックし、以前に作成したファイルを選択します。
-
名前識別子の形式として、 メールアドレス を設定します。
-
属性マッピングで、合計4つの基本ユーザーフィールドになるように、3つの新しい基本ユーザーフィールドを作成します。 表示されているとおりに情報を入力してください。
ユーザーフィールド SAML属性 電子メールアドレス 電子メールアドレス ファーストネーム ファーストネーム 苗字 苗字 ハンドルネーム ハンドルネーム 
-
「ユーザーメンバーシップ」セクションで、ドロップダウンから「
userGroups」を選択し、その値を「userGroup」に設定します。
上記の2つのマッピングは、Liferayのユーザー属性とOktaで設定されたSAML属性をリンクするものです。 例えば、Okta のユーザー グループ SAML 属性の名前は
userGroupです。 これは、Liferay のuserGroups属性にマッピングされます。 -
をクリックして保存します。
これで、Liferayインスタンスに移動して、 サインインをクリックします。 これにより、IDプロバイダーのサインインページにリダイレクトされます。 ログインすると、Liferayのホームページにリダイレクトされます。 ユーザーのユーザー グループ メンバーシップを確認するには、 グローバル メニュー (
) を開き、 コントロール パネル → ユーザー グループ に移動します。

今後は、ユーザー認証時にユーザーグループとグループメンバーシップが同期されます。 Liferayは、グループとグループメンバーシップの元のソースを保存するため、グループのソースが複数ある場合(SAMLとLDAPなど)でも競合が発生しません。