当前位置: 首页 > 知识库问答 >
问题:

通过ReST API调用由authenticationProvider从spring security验证用户

云开诚
2023-03-14
    null

在这里,它们是CustomAuthenticationProvider类中的实现

在接收用户名和密码的方法中,

public Authentication authenticate(Authentication authentication) throws 
 AuthenticationException {
    String name = authentication.getName();
    String password = authentication.getCredentials().toString();

    Optional<User> optionalUser = users.stream().filter(u -> u.index(name, 
     password)).findFirst();

    if (!optionalUser.isPresent()) {
        logger.error("Authentication failed for user = " + name);
        throw new BadCredentialsException("Authentication failed for user = " + name);
    }

    // find out the exited users
    List<GrantedAuthority> grantedAuthorities = new ArrayList<GrantedAuthority>();
    grantedAuthorities.add(new SimpleGrantedAuthority(optionalUser.get().role));
    UsernamePasswordAuthenticationToken auth = new UsernamePasswordAuthenticationToken(name, password,
            grantedAuthorities);

    logger.info("Succesful Authentication with user = " + name);
    return auth;
}

这些是文档中的代码。而不是这种方法,我需要做不同的方式。在这里我补充了我的要求:

我的需求:我需要从API请求接收用户名和密码,为了检查这个用户名和密码,我需要调用我部署的API checkUserAuthentication和CheckUserAuthorization。

我对此的怀疑:

    null

因为我只是从Spring Security开始的,所以我对Security World是个新手。

共有1个答案

凌征
2023-03-14
  1. 我可以在“public Authentication authenticate(Authentication authenticate)”方法中直接调用这些API吗?

是的。

与他们在authenticate方法中所做的相同。

 类似资料:
  • 我们的申请有两个部分。 在Java8中编写的后端,它使用泽西2.0公开了不同的RESTendpoint。 使用React和其他节点模块构建的单页应用程序UI。 Web界面使用Okta支持的SAML2.0身份验证作为身份提供者。后端创建HTTP会话并在cookie中发送JSESSIONID。 现在,UI调用其余endpoint来显示数据。我们需要在RESTAPI中添加一个身份验证层,我在这里问了另外

  • 我正在尝试使用Spring Security UserDetailService身份验证使用电子邮件而不是用户名登录,但我无法登录并获取 org.springframework.security.authentication.内部身份验证服务异常。 调试代码时,调试器不会跟踪 用户user=userDao。findByUserName(用户电子邮件);来自UserServiceImpl。java和

  • 问题内容: 我正在寻找一种与Mockito进行验证的方法,即在测试过程中与给定的模拟没有任何交互。对于具有验证模式的给定方法,很容易实现这一点,但是我还没有找到完整模拟的解决方案。 我真正想要实现的是:在测试中验证,没有任何内容打印到控制台上。jUnit的总体思路如下: A 有很多方法,我真的不想用单独的验证方法来验证每个方法,而… 因此,我希望,如果有一个简单的解决方案,鉴于我具有良好的测试覆盖

  • 当我通过登录路径中定义的登录表单登录时,我的防火墙配置工作正常。我想要的是登录时不查看或进入登录路径,而是直接发送用户名和密码参数来检查路径。 当我用用户名和密码向check_路径发出post请求时,symfony2似乎需要一个cookie,它是由smyfony2自己在login_路径中创建的。 有没有办法通过发送用户名和密码直接检查路径来登录?

  • 问题:我只想从authenticate.getname()中获取/提取用户名/电子邮件...如果可能的话,不要使用解析字符串。 authentication.getname()或principal.getname()值: 在本例中,我只希望获得用户名的值,即butitoy@iyotbihagay.com 因为我只想获得用户名/电子邮件(Butitoy@iyotbihagay.com),而且它返回的

  • 我有一个h:inputText、h:selectonemenu和commandbuton。Inputtext是必填字段,我已将其定义为immediate=“true”。然后,当我单击按钮时,我想将selectonemenu的当前值传递给托管bean。但它的passig为空。如何管理此验证,以便它允许我在托管bean中获取selectOneMenu的值。。 我的代码是...