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

在不使用基本身份验证的情况下吊销Oauth2令牌

戴浩初
2023-03-14

我试图使用Spring cloud Oauth2实现Oauth-2.0-Cookbook一书中的示例。

我设法实现了他的功能,但不幸的是,我面临一个问题:为了进行成功的调用,我必须提供基本的身份验证凭据(授权:basic ywrtaw46cxdlcnr5):

@PostMapping("/oauth/revoke")
public ResponseEntity<String> revoke(@RequestParam Map<String, String> params) {
    RevocationService revocationService = revocationServiceFactory
            .create(params.get("token_type_hint"));

    revocationService.revoke(params.get("token"));

    return ResponseEntity.ok().build();
}

Github源

我喜欢在POST请求撤销令牌时进行某种身份验证的想法,但我不认为Angular SPA应用程序应该始终保留用户名和密码,以便成功调用/oauth/revoke

一般情况下,Google上的解决方案只有一个endpoint,它只接受令牌。对于那种情况,我不知道什么解决办法才是合适的。

如何将基本的身份验证功能移除到Spring Cloud OAuth2中?我使用以下安全配置

http
            .csrf()
            .disable()
            .authorizeRequests()
                .anyRequest().authenticated()
                .and()
            // Configure token authentication permissions
            .requestMatchers().antMatchers(HttpMethod.POST,"/oauth/token")
                .and()
            // Configure token revoke permissions
            .requestMatchers().antMatchers(HttpMethod.POST,"/oauth/revoke")
                .and()
            .httpBasic()
                .and()
            .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);

Github来源:

共有1个答案

裴金鑫
2023-03-14

您可以像这样禁用revoke终结点的自动验证

http
...
.authorizeRequests()
.antMatchers("/oauth/revoke").permitAll()
...
 类似资料:
  • 我正在尝试使用OAuth2实现开发一个带有Spring Security性的rest api。但是如何删除基本身份验证呢。我只想向body发送用户名和密码,并在postman上获取令牌。 要删除基本身份验证,并从邮递员的get token中发送body标记中的用户名密码吗 我遇到了一些问题{"错误":"未经授权","error_description":"没有客户端身份验证。尝试添加适当的身份验证

  • 有没有办法对/oauth/tokenendpoint禁用HTTP基本身份验证?我希望在JSON主体或请求头中发送client_id和client_secret。 我想工作的卷曲例子: 或

  • 我正在尝试为部署在Kubernetes集群中的应用程序启用基于TLS的相互身份验证。 希望将对应用程序的访问限制为只有那些具有受信任客户端证书的用户。 基于某些情况/条件,我还希望吊销特定用户的证书,以便该用户不再能够使用其证书访问应用程序。 我尝试在kuberentes ingress controller(基于nginx)中设置Mutual TLS,方法是添加以下注释。 是包含用于颁发客户端证

  • “laravel/框架”:“5.7.*” “tymon/jwt认证”:“开发人员开发” 我正在尝试创建一个添加了自定义声明的JWT令牌,而不使用auth(这意味着我不希望从凭据创建令牌)。这是为了创建不需要登录的令牌,例如忘记/重置密码等。 使用Tymon/JWTAuth(https://github.com/tymondesigns/jwt-auth)由于最新的Laravel存在问题,因此建议加

  • 问题内容: 使用基本身份验证进行身份验证时遇到问题。我正在使用符合协议的标准枚举来构造我的请求。问题是,当我在枚举中手动设置授权标头时,如下所示: 我总是收到401未经授权的回复。 但是, 如果我像这样使用回调设置密码: 它正确认证。我希望能够在符合的枚举中手动进行设置,而不是在中传递凭据。 我知道它正在使用身份验证挑战的后台,但我希望能够手动设置它。 这是我的实现: 问题答案: 最终弄清楚了问题

  • null 我的自定义rest筛选器: 上面的内容实际上会导致应用程序启动时出现一个错误:有人能告诉我如何最好地执行此操作吗?pre_auth筛选器是执行此操作的最好方法吗? 编辑 使用Spring-security实现解决方案 希望它能帮助其他人…