5

現在、Spring Security を使用して Web アプリケーションを作成しています。ユーザー名とパスワードでユーザーを認証する Web サービスがあります。

ウェブサービス:
String[] login(String username, String password);

提供されたユーザー名とパスワードを Web サービスに渡すように Spring Security を構成するにはどうすればよいですか?

UserDetailsServiceユーザー名のみを受け取る を書きました。


問題はxmlにあると思います。自動設定をオフにしましたか?あなたのクラスは AbstractUserDetailsAuthenticationProvider を拡張していますか?

4

3 に答える 3

6

org.acegisecurity.providers.dao.AbstractUserDetailsAuthenticationProviderを拡張します

/**
 * @author rodrigoap
 * 
 */
public class WebServiceUserDetailsAuthenticationProvider extends
    AbstractUserDetailsAuthenticationProvider {

  @Override
  protected UserDetails retrieveUser(String username,
        UsernamePasswordAuthenticationToken authentication)
        throws AuthenticationException {
     //Improve this line:
    String password = authentication.getCredentials().toString();
    // Invoke your webservice here
    GrantedAuthority[] grantedAuth = loginWebService.login(username, password);
    // create UserDetails. Warning: User is deprecated!
    UserDetails userDetails = new User(username, password, grantedAuth);
    return userDetails;
  }

}
于 2009-07-23T19:04:56.850 に答える
0

UserDetailsS​​erviceの考え方は、実装がそのユーザー名を持つユーザーを表すUserDetailsオブジェクトを提供し、SpringSecurityが資格情報のチェックを処理することです。

パラメータとしてパスワードが必要なため、この種の設計がバックエンドでうまく機能しない場合は、独自のAuthenticationProviderの実装を検討する必要があります。

于 2009-07-23T12:40:53.363 に答える