6.4.6. ユーザーの認証情報管理
ユーザーの認証情報は、以前は session.userCredentialManager().method(realm, user, ...) を使用して管理されていました。新しい方法では、user.credentialManager().method(...) を使用します。この形式は、認証情報の機能をユーザーの API に近づけるものであり、レルムとストレージに関するユーザー認証情報の場所の知識を前提としていません。
古い API は削除されました。
移行前: 削除された API にアクセスする
session.userCredentialManager().createCredential(realm, user, credentialModel)
移行後: 新しい API にアクセスする
user.credentialManager().createStoredCredential(credentialModel)
カスタムの UserStorageProvider の場合、UserModel を返すときに、新しいメソッド credentialManager() を実装する必要があります。このメソッドは、LegacyUserCredentialManager のインスタンスを返す必要があります。
移行前: UserModel に新しいメソッド credentialManager() が必要なため、コードがコンパイルされない
public class MyUserStorageProvider implements UserLookupProvider, ... {
/* ... */
protected UserModel createAdapter(RealmModel realm, String username) {
return new AbstractUserAdapter(session, realm, model) {
@Override
public String getUsername() {
return username;
}
};
}
}
移行後: レガシーストア用の API UserModel.credentialManager() を実装する
public class MyUserStorageProvider implements UserLookupProvider, ... {
/* ... */
protected UserModel createAdapter(RealmModel realm, String username) {
return new AbstractUserAdapter(session, realm, model) {
@Override
public String getUsername() {
return username;
}
@Override
public SubjectCredentialManager credentialManager() {
return new LegacyUserCredentialManager(session, realm, this);
}
};
}
}