gpt4 book ai didi

spring-boot - Spring Boot Oauth2 token 请求 - 来自 BasicAuthenticationFilter 的错误客户端凭据

转载 作者:行者123 更新时间:2023-12-01 06:03:07 25 4
gpt4 key购买 nike

在用户身份验证和批准后,我的 Oauth2 客户端应用程序从 OAuth2 AuthServer 的 token 端点请求 token 时,请求有关 Spring Boot OAuth2 应用程序的 BadCredentialsException 的帮助。

Spring Boot OAuth2 应用程序基于现在著名的 Dave Syer Spring Boot/Oauth2 UI Client/Oauth2 AuthServer/JWT 示例 https://github.com/spring-guides/tut-spring-security-and-angular-js/tree/master/oauth2

这是在客户端应用程序的调试中:

DEBUG org.springframework.web.client.RestTemplate - Created POST request for "authserver/uaa/oauth/token"
DEBUG org.springframework.security.oauth2.client.token.grant.code.AuthorizationCodeAccessTokenProvider - Encoding and sending form: {grant_type=[authorization_code], code=[xxxxx], redirect_uri=[oauthclientapp/login]}
DEBUG org.springframework.web.client.RestTemplate - POST request for "authserver/uaa/oauth/token" resulted in 200 (null)
DEBUG org.springframework.security.oauth2.client.filter.OAuth2ClientAuthenticationProcessingFilter - Authentication request failed: org.springframework.security.authentication.BadCredentialsException: Could not obtain access token

这是 AuthServer 的调试:
DEBUG org.springframework.security.web.FilterChainProxy - /oauth/token at position 9 of 15 in additional filter chain; firing Filter: 'BasicAuthenticationFilter'
DEBUG org.springframework.security.web.authentication.www.BasicAuthenticationFilter - Basic Authentication Authorization header found for user 'clientID'
DEBUG org.springframework.security.authentication.ProviderManager - Authentication attempt using org.springframework.security.authentication.dao.DaoAuthenticationProvider
DEBUG org.springframework.security.authentication.dao.DaoAuthenticationProvider - User 'clientID' not found
DEBUG org.springframework.security.web.authentication.www.BasicAuthenticationFilter - Authentication request for failed: org.springframework.security.authentication.BadCredentialsException: Bad credentials

Oauth2 客户端应用程序就像示例中的应用程序一样,在 token 请求过程中没有自定义,只是@EnableOAuth2Sso 为我们提供的任何内容。 AuthServer 上的 ClientDetails 配置也和下面的示例一样,没有什么特别的。

任何可以更好地解决此问题的建议都非常感谢。谢谢。
@Override
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
clients.inMemory()
.withClient("clientID")
.secret("acmesecret")
.authorizedGrantTypes("authorization_code", "refresh_token",
"password").scopes("openid");
}

最佳答案

在向/oauth/token 端点发送 POST 请求时,您的配置出现了同样的错误,如下所示:

curl localhost:8080/oauth/token -d grant_type=authorization_code -d client_id=acme -d redirect_uri=http://localhost:4200/redirectUrl -d code=5chf5f

我的意图是使用授权代码流,我不想提供导致错误的 client_secret 参数
-d client_sercret=acmesecret

如果您的情况相同,您可能需要为授权代码流添加另一个没有密码的客户端:
@Override
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
clients.inMemory()
.withClient("clientWithSecret")
.secret("acmesecret")
.authorizedGrantTypes("password")
.scopes("openid")
.and()
.withClient("clientNoSecret")
.authorizedGrantTypes("authorization_code", "refresh_token")
.scopes("openid");
}

关于spring-boot - Spring Boot Oauth2 token 请求 - 来自 BasicAuthenticationFilter 的错误客户端凭据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43082213/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com