AEM forms は、User Management にまだ存在しないユーザーのジャストインタイムプロビジョニングをサポートしています。 ジャストインタイムプロビジョニングでは、ユーザーの資格情報が正常に認証されると、ユーザーは User Management に自動的に追加されます。 さらに、関連する役割とグループが新しいユーザーに動的に割り当てられます。
従来の認証の仕組みは次のとおりです。
ユーザーがAEM forms にログインしようとすると、User Management はユーザーの資格情報を、使用可能なすべての認証プロバイダーに順番に渡します。 (ログイン資格情報には、ユーザー名とパスワードの組み合わせ、Kerberos チケット、PKCS7 署名などが含まれます)。
認証プロバイダーが資格情報を検証します。
次に、認証プロバイダーは、ユーザーが User Management データベースに存在するかどうかを確認します。 次の結果が考えられます。
存在する:ユーザーが登録されており、ロックされていない場合、User Management は認証成功を返します。これに対して、ユーザーが登録されていないか、またはロックされている場合、User Management は認証失敗を返します。
存在しない: User Management は認証失敗を返します。
無効: User Management は認証失敗を返します。
認証プロバイダーから返された結果が評価されます。 認証プロバイダーが認証成功を返した場合、ユーザーはログインできます。 それ以外の場合は、User Management は次の認証プロバイダー(手順 2~3)と確認します。
ユーザーの資格情報を検証する使用可能な認証プロバイダーがない場合は、認証失敗が返されます。
ジャストインタイムプロビジョニングを実装すると、いずれかの認証プロバイダーがユーザーの資格情報を検証すると、User Management に新しいユーザーが動的に作成されます。 (上記の従来の認証手順の手順 3 の後)。
AEM forms は、ジャストインタイムプロビジョニング用に以下の API を提供します。
package com.adobe.idp.um.spi.authentication ;
publ ic interface IdentityCreator {
/**
* Tries to create a user with the in formation provided in the <code>UserProvisioningBO</code> object.
* If the user is successfully created, a valid AuthResponse is returned along with the information using which the user was created.
* It is the responsibility of the IdentityCreator to set the User obje ct in the cre dential map with th e ke y <code>UMA u thenticationUtil.authenticatedUserKey</code>
* The credentials are available in the <code>UserProvisioningBO</code> object in the 'credentials' property.
* If the IdentityCreator is unable to create a user due to any reason, it returns <code>null</code>
* @param userBO An object of <code>com.adobe. i dp.um . spi.authenti c ationUserProvisioningBO</code>
* @return */public AuthResponse create(UserProvisioningBO userBO);
/**
* Returns the name of the IdentityCreator which will be registered in preferences.
* This name is used to associate the IdentityProvider with the Auth Provider Configuration in the domain.
* @return The name of the Identity Creator which is recognized in Configuration.
*/
public String getName();
}
package com.adobe.idp.um.spi.authentication;
import com.adobe.idp.um.api.infomodel.User;
public interface AssignmentProvider {
/**
* Tries to assign roles or permissions or group memberships to users created via Just-in-time provisioning.
* @param user The User created via the Just-in-time provisioning process.
* @return a Boolean flag indicating whether the assignment was successful or not.
*/
public Boolean assign(User user);
/**
* Returns the name of the AssignmentProvider through which it is registered under preferences.
* This name is used to associate the AssignmentProvider with the Auth Provider Configuration in the domain.
* @return The name of the AssignmentProvider which is recognized in Configuration.
*/public String getName();
}
IdentityCreator
を作成する際に、ローカルユーザーにダミーのパスワードが指定されていることを確認します。このパスワードフィールドを空白のままにしないでください。DomainSpecificAuthentication
を使用して、特定のドメインに対するユーザーの秘密鍵証明書を検証します。API を実装する DSC を「ジャストインタイムプロビジョニング用 API」セクションに記述します。
DSC を forms サーバーにデプロイします。
ジャストインタイムが有効なドメインの作成:
新しいドメインを保存します。
ユーザーがAEM forms にログインしようとしていて、認証プロバイダーがユーザーの資格情報を受け入れたとします。 ユーザーが User Management データベースにまだ存在しない場合、そのユーザーの ID チェックは失敗します。 AEM forms では、次のアクションが実行されるようになりました。
UserProvisioningBO
オブジェクトを作成し、秘密鍵証明書マップに配置します。UserProvisioningBO
によって返されるドメイン情報に基づいて、ドメインの登録された IdentityCreator
および AssignmentProvider
を取得して呼び出します。IdentityCreator
を呼び出します。正常な AuthResponse
が返される場合、秘密鍵証明書マップから UserInfo
を抽出します。ユーザー作成後のグループ/ロールアサインおよびその他の後処理のために AssignmentProvider
に渡します。ジャストインタイムプロビジョニング機能は、動的にユーザーを作成するために使用できる IdentityCreator
のデフォルトの実装に付属しています。ユーザーは、ドメインのディレクトリに関連付けられている情報を使用して作成されます。