4

WebアプリケーションのX.509認証にSpringSecurity(v3.1.3)を使用しています。ユーザーとロールはデータベースに保存されますが、クライアント証明書のCNは「[ROLE]-[USERNAME]」スキーマに準拠しているため、実際に行う必要はありません。つまり、証明書自体のユーザー名とロールを既に持っています。 。では、あまり労力をかけずにデータベースを削除するにはどうすればよいでしょうか。UserDetailsにデータを入力するuser-serviceの独自の実装を作成する必要がありますか、それともより適切な方法がありますか?

4

1 に答える 1

5

はい、おそらく最も簡単なオプションは、カスタムを作成することAuthenticationUserDetailsService<PreAuthenticatedAuthenticationToken>です。実装は次のようになります。

UserDetails loadUserDetails(PreAuthenticatedAuthenticationToken token) {
    X509Certificate certificate = (X509Certificate[)token.getCredentials();

    // Extract what you want from the certificate
    ...

    // Create the user information
    UserDetails user = ...

    return user;
}

この Bean への参照をuser-service-ref名前空間属性 で直接使用できるはずです<x509 user-service-ref='yourUserServiceBean' />

于 2013-01-28T14:08:54.930 に答える