SAMLを介した外部IdPからのユーザーグループのメンバーシップのインポート
この機能は現在 dev feature flag の後ろにあります。 これを本番で使ってはならない。 テスト目的でのみ使用してください。
外部 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 での SAML 2.0 アプリの作成
-
Oktaの管理ダッシュボードにログインします。
-
Applications → Applications に移動し、 Create App Integration をクリックします。
-
SAML 2.0 を選択し、 Next をクリックする。
-
名前を 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 フォーマット:
メールアドレス
アプリケーションユーザー名:
Eメール:
このフィールドは、ユーザが Okta にログインする際に使用するユーザ名のソースを示し、SAML を使用する場合は Okta から Liferay にログインします。
-
属性ステートメント の下に以下の値を追加する:
firstName (Unspecified):
user.firstName
lastName (Unspecified):
user.lastName
emailAddress (Unspecified):
user.email
screenName (Unspecified):
user.firstName
左側の値は、SAML 属性の名前である。 これらは、Oktaの異なるユーザーフィールドを指定する右側の対応する値にマッピングされます。
-
Group Attribute Statements の下に以下の値を追加する:
userGroup(未指定):**
Okta
で始まる(Okta のユーザーグループはプレフィックスOkta
で始まると仮定します)。 例えばOkta-UserGroup-1
)note上記の手順では、Okta上ですでに異なるグループ(接頭辞が
Okta
で始まる)に属するユーザーセットがあることを想定しています。 Oktaでは、グループメンバーシップの定義に[keywords]または regex を使用することを推奨しています。 これらのグループはLiferayのユーザーグループと名前によって一致します。グループ属性文には、フィルター条件または正規表現を指定することが必須です。 フィルタ条件または正規表現がない場合、SAML 属性は空で送信される。
-
[Next] をクリックします。
-
フォームの残りの部分はOkta固有のもので、設定には影響しません。 最適なものを選択し、 Finish をクリックする。
メタデータの保存
Liferayインスタンスに移行する前の最後のステップは、SAMLメタデータを保存することである。
-
アプリケーション → アプリケーション に移動し、 liferaysaml を選択します。
-
Assignments タブがデフォルトで表示されます。 Assign をクリックし、 Assign to People を選択する。 この SAML アプリを使って Liferay にログインできるユーザーを検索し、 Assign をクリックします。 ここでグループ別に選択することもできる。
-
[完了] をクリックします。
-
Sign On タブを選択する。
-
右側で、 View SAML setup instructions をクリックする。
-
新しい画面で、Optionalセクションまでスクロールダウンする。 XMLコードのブロック全体をコピーし、
oktasamlmetadata.xml
という名前の新しいファイルに貼り付けます。
Liferay の設定
ここで、Liferay の SAML Admin で Okta をサービスプロバイダとして設定する必要がある。
-
Global Menu() を開き、 Control Panel → SAML Admin に移動する。
-
General タブで、エンティティ ID として okta-saml と入力します。
-
Create Certificate をクリックする。
-
新しいウィンドウで、 okta-saml を Common Name として、 learn を Key Password として入力する。
-
[保存] をクリックします。
-
Identity Provider Connections」の下で、「Add Identity Provider」をクリックする。
-
名前には Okta と入力してください。
-
oktasamlmetadata.xml
ファイルからエンティティ ID をコピーし、ここに貼り付ける。 -
[Enabled] のチェックボックスをオンにします。
-
Metadata」の下にある「Upload Metadata XML」をクリックし、先ほど作成したファイルを選択します。
-
Email Address を Name Identifier Format に設定する。
-
Attribute Mapping(属性マッピング)で、3つの新しい基本ユーザー・フィールドを作成し、合計4つのフィールドを作成する。 図のように情報を入力する:
ユーザーフィールド SAML 属性 メールアドレス メールアドレス ファーストネーム ファーストネーム ラストネーム ラストネーム スクリーン名 スクリーン名 -
User Membershipsセクションで、ドロップダウンから
userGroups
を選択し、その値をuserGroup
と設定する。上記のマッピングはどちらも、Liferay のユーザー属性と Okta で設定された SAML 属性をリンクしています。 例えば、Okta のユーザ・グループ SAML 属性の名前は
userGroup
です。 これは Liferay のuserGroups
属性にマッピングされます。 -
[Save] をクリックします。
Liferay インスタンスにアクセスし、 Sign In をクリックします。 IDプロバイダのサインインページにリダイレクトされます。 ログインすると、Liferayのホームページにリダイレクトされます。 また、 グローバルメニュー() を開き、 コントロールパネル → ユーザーグループ に移動することでも、ユーザーのユーザーグループメンバーシップを確認できます。
ユーザーは、すでに存在している場合のみ、自動的にユーザーグループに割り当てられます。 LiferayのユーザーグループがOktaのグループに対応していることを確認してください。 Oktaがグループ情報を送信し、対応するユーザーグループがLiferayに存在しない場合、その属性は無視されます。 ユーザー・グループの作成と管理方法については、ユーザー・グループの作成と管理を参照してください。
サインイン後にLiferayでユーザーを他のユーザーグループに割り当てると、これらのメンバーシップは次回IdP経由でログインしたときに上書きされます。