gpt4 book ai didi

java - Spring OAuth2 不提供刷新 token

转载 作者:行者123 更新时间:2023-12-02 12:48:27 25 4
gpt4 key购买 nike

我正在使用 Spring 和“密码”授权类型运行 OAuth 提供程序。

运行此程序(提供程序位于端口 8080 上):

curl -u "app:appclientsecret" "http://localhost:8080/oauth/token" --data "grant_type=password&username=marissa&password=koala"

返回:

{"access_token":"56da4d2b-7e66-483e-b88d-c1a58ee5a453","token_type":"bearer","expires_in":43199,"scope":"read"}

由于某种原因,没有刷新 token 。我根据spec知道,刷新 token 是可选的;有什么方法可以启用我错过的功能吗?

作为引用,这是我的提供商代码:

@SpringBootApplication
public class Provider {
public static void main(String... args) {
System.setProperty("server.port", "8080");

SpringApplication.run(Provider.class, args);
}

@Configuration
@EnableWebSecurity
static class SecurityConfiguration extends WebSecurityConfigurerAdapter {
private final UserStoreType type = UserStoreType.IN_MEMORY;

enum UserStoreType {
IN_MEMORY,
}

@Autowired
public void globalUserDetails(AuthenticationManagerBuilder auth) throws Exception {
switch(type) {
case IN_MEMORY:
System.err.println("Setting up user creds..");

auth.inMemoryAuthentication()
.withUser("marissa").password("koala").roles("USER")
.and()
.withUser("admin").password("topsecret").roles("USER", "ADMIN");

break;
}
}

@Override
protected void configure(HttpSecurity http) throws Exception {}
}

@Configuration
@EnableAuthorizationServer
static class OAuthConfig extends AuthorizationServerConfigurerAdapter {
@Autowired
private AuthenticationManager authenticationManager;

@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
endpoints.tokenStore(new InMemoryTokenStore()).authenticationManager(authenticationManager);
}

@Override
public void configure(AuthorizationServerSecurityConfigurer oauthServer) throws Exception {
oauthServer.checkTokenAccess("permitAll()");
}

@Override
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
clients.inMemory()
.withClient("resource-serv")
.scopes("read")
.resourceIds("my-resource")
.secret("secret123")
.and()
.withClient("app")
.authorizedGrantTypes("client_credentials", "password")
.scopes("read")
.resourceIds("my-resource")
.secret("appclientsecret");
}
}
}

最佳答案

客户端需要authorizedGrantType“refresh_token”。

试试这个

  @Override
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
clients.inMemory()
.withClient("resource-serv")
.scopes("read")
.resourceIds("my-resource")
.secret("secret123")
.and()
.withClient("app")
.authorizedGrantTypes("client_credentials", "password", "refresh_token")
.scopes("read")
.resourceIds("my-resource")
.secret("appclientsecret");
}

关于java - Spring OAuth2 不提供刷新 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30851098/

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