当前位置: 首页 > 面试题库 >

使用需要用户名和密码的WebService使用SpringSecurity对用户进行身份验证

陈毅
2023-03-14
问题内容

目前,我正在使用Spring Security编写Web应用程序。我们有一个通过用户名和密码对用户进行身份验证的Web服务。

网络服务:
String[] login(String username, String password);

如何配置Spring Security将提供的用户名和密码传递给Web服务?

我写了一个UserDetailsService仅接收用户名的。

我认为问题出在您的xml中。您是否关闭了自动配置?并且您的类是否扩展AbstractUserDetailsAuthenticationProvider?


问题答案:

扩展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;
  }

}


 类似资料:
  • 客户已创建密钥存储库并存储凭据。为了验证密钥存储库,我已经在节点中创建了应用程序,并使用客户端id和客户端机密,我能够读取机密。但是现在客户不想使用客户id和客户机密,而是使用AZURE的用户名和密码来访问程序中的keyvault。它是一个没有MFA的keyvault访问的专用用户。 我不确定我们是否可以从节点JS使用用户名和密码访问keyvault。敬请建议。 谢谢

  • 是否可以在Flatter中使用用户名和密码(而不是电子邮件和密码)实现Firebase身份验证?有没有办法用Firebase Auth插件来实现这一点?

  • 我有一个用户名和密码,我怎么用他们来验证库贝特尔? 我要运行哪个命令? 我已经通读了https://kubernetes.io/docs/reference/access-authn-authz/authorization/和https://kubernetes.io/docs/reference/access-authn-authz/authorization/,但在其中找不到任何与本例相关的信

  • 我想知道是否有能力登录与电子邮件和用户id+密码,我有一个项目,我想让用户添加一个唯一的号码(实际上是我们公司提供的工作识别号码),以能够登录到该计划将保持私人公司就业。 我需要firebase认证拒绝登录,即使电子邮件和密码是正确的,但用户id是错误的。

  • 我最近开始使用Laravel 8,我正在尝试使用用户名和电子邮件一起登录,但我不知道如何做到这一点。在拉腊维尔7中,我可以使用。。。 如何在Laravel 8中使用用户名和密码登录,因为文件夹中不再有?

  • 这是服务到服务身份验证中概述的规则的一个例外吗?该规则规定需要设置为接收服务的url(例如https://xxxxx.run.app)。和是一回事吗? 最后,除了使用googlecloudsdk(即imaging不存在)之外,是否还有其他方法使用用户帐户而不是服务帐户进行身份验证?