如何在 Spring Boot 中使用预定义的令牌绕过 Oauth2 身份验证?

逃生

在 Spring Boot 项目中,我想绕过一些“魔法”令牌的身份验证。例如,我得到一个请求头参数Authorization:Bearer abcdef-xyz如果这不是有效的访问令牌,我将检查我的预定义令牌。如果其中之一匹配,我将为安全上下文创建一个虚拟用户,并允许请求继续进行。

逃生

我找到了一种方法来实现这一点。

  • 覆盖InMemoryTokenStore 上的readAccessToken方法
  • 根据您的需要检查令牌值
  • 如果令牌符合您的模式,从令牌获取相关信息并验证
  • 如果通过验证,则您可以创建一个虚拟身份验证并调用storeAccessToken方法

    public OAuth2AccessToken readAccessToken(String tokenValue) {
    Pattern pattern = Pattern.compile(HRN_REGEX);
    Matcher matcher = pattern.matcher(tokenValue);
    OAuth2AccessToken oAuth2AccessToken = super.readAccessToken(tokenValue);
    if (oAuth2AccessToken == null && matcher.find()) {
        String group = matcher.group();
        String companyStr = group.replace(LICENCE_TOKEN_PREFIX, "");
        Long companyId= Long.valueOf(companyStr);
        boolean isCompanyValid = mLoginUserService.validateCompanyIdForAnonymousLogin(companyId);
        if (isCompanyValid) {
            OAuth2Request storedReq = new OAuth2Request(generateDummyReqParameters(), CLIENT, null, true, generateScope(), generateResourceIds(), null, null, null);
            Authentication userAuth = new AnonymousAuthenticationToken(companyStr, companyId, AuthorityUtils.createAuthorityList(ROLE_COMPANY));
            OAuth2Authentication authentication = new OAuth2Authentication(storedReq, userAuth);
            storeAccessToken(new DefaultOAuth2AccessToken(tokenValue), authentication);
            return new DefaultOAuth2AccessToken(tokenValue);
        } else {
            throw new InvalidTokenException(COMPANY_IS_NOT_LICENCED);
        }
    }
    return oAuth2AccessToken;}
    
  • 给这个身份验证一个角色(在我的例子中是ROLE_COMPANY ”)

  • 在您的 ResourceServerConfigurerAdapter 类中覆盖configure(HttpSecurity http)方法并将此角色赋予相关端点

    public void configure(HttpSecurity http) throws Exception {
    http.authorizeRequests()
            .antMatchers("/tools/validate/**").hasAnyAuthority(ROLE_COMPANY, ROLE_USER, ROLE_ADMIN)
            .anyRequest().hasAnyAuthority(ROLE_USER, ROLE_ADMIN);    }
    

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Spring Boot 2 + OAuth2:配置令牌的身份验证代码交换

来自分类Dev

在Spring Boot OAuth2授权服务器中使用Active Directory身份验证

来自分类Dev

使用Spring Boot进行OAuth2身份验证后无法正确重定向

来自分类Dev

使用 spring-boot-starter-oauth2-client 检索 OAuth2 3-legged 身份验证的访问令牌

来自分类Dev

如何使用Spring在OAuth2身份验证中生成客户端密钥

来自分类Dev

如何在Flyway中使用Spring Boot / Spring Security的JDBC身份验证

来自分类Dev

如何在Dart中使用Oauth2在Google Fusion Tables中进行身份验证?

来自分类Dev

如何使用Spring Boot使用OAuth1.0和自定义标头对API进行身份验证

来自分类Dev

Spring boot、Security、OAuth2:是否可以使用自定义 AuthorizationCodeResourceDetails?身份验证服务器需要重定向 url 中的特定参数

来自分类Dev

Spring OAuth2中的身份验证类型:通过用户凭证的身份验证如何工作?

来自分类Dev

使用 Spring Boot OAuth2 对 Google 进行身份验证时,如何将 Google 用户电子邮件添加到白名单用户

来自分类Dev

如何使用OAuth或OAuth2身份验证通过IMAP访问Yahoo Mail

来自分类Dev

使用Spring Security Oauth2进行两因素身份验证

来自分类Dev

使用 JHipster、Spring Security 和 oauth2 控制身份验证重定向

来自分类Dev

Spring Boot 1.3 + OAuth:身份验证请求失败:BadCredentialsException:无法获取访问令牌

来自分类Dev

使用Spring Boot 2和Spring Security 5进行多重身份验证

来自分类Dev

Javascript WebApp 的 Spring Security Oauth2 身份验证

来自分类Dev

如何在Spring Security中撤消身份验证令牌?

来自分类常见问题

如何使用Spring Boot Web身份验证和Postman测试API?

来自分类Dev

如何使用Spring Boot安全性实现身份验证?

来自分类Dev

如何使用Spring Security OAuth2在Spring Boot中注册自定义BasicAuthenticationFilter AuthenticationProvider

来自分类Dev

如何在Spring Security中使用LDAP身份验证创建令牌

来自分类Dev

如何在Spring Security中使用LDAP身份验证创建令牌

来自分类Dev

获得身份验证以在Tomcat上使用Spring Boot

来自分类Dev

在iOS上使用OAuth2进行身份验证

来自分类Dev

API身份验证和OAuth2的使用

来自分类Dev

API身份验证和OAuth2的使用

来自分类Dev

在iOS上使用OAuth2进行身份验证

来自分类Dev

如何创建一个接受基本身份验证标头或 oauth2 访问令牌的端点?

Related 相关文章

  1. 1

    Spring Boot 2 + OAuth2:配置令牌的身份验证代码交换

  2. 2

    在Spring Boot OAuth2授权服务器中使用Active Directory身份验证

  3. 3

    使用Spring Boot进行OAuth2身份验证后无法正确重定向

  4. 4

    使用 spring-boot-starter-oauth2-client 检索 OAuth2 3-legged 身份验证的访问令牌

  5. 5

    如何使用Spring在OAuth2身份验证中生成客户端密钥

  6. 6

    如何在Flyway中使用Spring Boot / Spring Security的JDBC身份验证

  7. 7

    如何在Dart中使用Oauth2在Google Fusion Tables中进行身份验证?

  8. 8

    如何使用Spring Boot使用OAuth1.0和自定义标头对API进行身份验证

  9. 9

    Spring boot、Security、OAuth2:是否可以使用自定义 AuthorizationCodeResourceDetails?身份验证服务器需要重定向 url 中的特定参数

  10. 10

    Spring OAuth2中的身份验证类型:通过用户凭证的身份验证如何工作?

  11. 11

    使用 Spring Boot OAuth2 对 Google 进行身份验证时,如何将 Google 用户电子邮件添加到白名单用户

  12. 12

    如何使用OAuth或OAuth2身份验证通过IMAP访问Yahoo Mail

  13. 13

    使用Spring Security Oauth2进行两因素身份验证

  14. 14

    使用 JHipster、Spring Security 和 oauth2 控制身份验证重定向

  15. 15

    Spring Boot 1.3 + OAuth:身份验证请求失败:BadCredentialsException:无法获取访问令牌

  16. 16

    使用Spring Boot 2和Spring Security 5进行多重身份验证

  17. 17

    Javascript WebApp 的 Spring Security Oauth2 身份验证

  18. 18

    如何在Spring Security中撤消身份验证令牌?

  19. 19

    如何使用Spring Boot Web身份验证和Postman测试API?

  20. 20

    如何使用Spring Boot安全性实现身份验证?

  21. 21

    如何使用Spring Security OAuth2在Spring Boot中注册自定义BasicAuthenticationFilter AuthenticationProvider

  22. 22

    如何在Spring Security中使用LDAP身份验证创建令牌

  23. 23

    如何在Spring Security中使用LDAP身份验证创建令牌

  24. 24

    获得身份验证以在Tomcat上使用Spring Boot

  25. 25

    在iOS上使用OAuth2进行身份验证

  26. 26

    API身份验证和OAuth2的使用

  27. 27

    API身份验证和OAuth2的使用

  28. 28

    在iOS上使用OAuth2进行身份验证

  29. 29

    如何创建一个接受基本身份验证标头或 oauth2 访问令牌的端点?

热门标签

归档