我正在实现AuthorizationGrantType,如代码所示,并在正文中传递grand_type、用户名和密码参数,但没有显示refresh_token。我相信我的配置中缺少一些东西。我正在使用 Spring Boot 3.1.1
@Bean
public RegisteredClientRepository registeredClientRepository() {
// @formatter:off
RegisteredClient registeredClient = RegisteredClient
.withId(UUID.randomUUID().toString())
.clientId(clientId)
.clientSecret(passwordEncoder.encode(clientSecret))
.scope("message.read")
.scope("message.write")
.scope(OidcScopes.OPENID)
.scope(OidcScopes.PROFILE)
.authorizationGrantType(AuthorizationGrantType.PASSWORD)
.authorizationGrantType(AuthorizationGrantType.REFRESH_TOKEN)
.tokenSettings(tokenSettings())
.clientSettings(clientSettings())
.build();
// @formatter:on
return new InMemoryRegisteredClientRepository(registeredClient);
}
@Bean
UserDetailsService users() {
UserDetails user = User.withDefaultPasswordEncoder()
.username("admin")
.password("password")
.build();
return new InMemoryUserDetailsManager(user);
}
@Bean
public TokenSettings tokenSettings() {
// @formatter:off
return TokenSettings.builder()
.accessTokenFormat(OAuth2TokenFormat.SELF_CONTAINED)
.accessTokenTimeToLive(Duration.ofDays(jwtDuration))
.refreshTokenTimeToLive(Duration.ofDays(45))
.build();
// @formatter:on
}
@Bean
public ClientSettings clientSettings() {
return ClientSettings.builder().build();
}
@Bean
public OAuth2TokenGenerator<? extends OAuth2Token> tokenGenerator() {
NimbusJwtEncoder jwtEncoder = new NimbusJwtEncoder(jwkSource());
JwtGenerator jwtGenerator = new JwtGenerator(jwtEncoder);
jwtGenerator.setJwtCustomizer(tokenCustomizer());
OAuth2AccessTokenGenerator accessTokenGenerator = new OAuth2AccessTokenGenerator();
return new DelegatingOAuth2TokenGenerator(jwtGenerator, accessTokenGenerator);
}
认证响应为
{
"access_token": "eyJraWQiOiI1NWFhZjI3NS1lNDJhLTRkZmItYmNmOS02N2ZhYThjMjFhMzEiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiIzNTI2IiwiYXVkIjoiMzUyNiIsIm5iZiI6MTY5NTU4NTUwNCwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo4MDgwIiwiZXhwIjoxNjk4MTc3NTA0LCJpYXQiOjE2OTU1ODU1MDQsImF1dGhvcml0aWVzIjpbIlJPTEVfQ0xJRU5UIiwiUk9MRV9BRE1JTiJdLCJ1c2VybmFtZSI6Im1hcmlhQGdtYWlsLmNvbSJ9.fd08AvMCokiE7bFPaTStPSwGFC9L1qvuR0mDDe0FjkEv-7BwUZoUyj1F6zzYraR8nEjQDpYemVnVxyqTMQGBqetzg7sE6EiOm6GN3EV-Ymvu3Qi0Po4FGcbw46WHh1Qhi_ogbOWiGu9WqgBykK4fRMAR3ZtKJiLNuC-sYB91ctRghjuhxGUThdzoyySiKRrURTQs1yqR6FAgReQwm_iVNPl3IsJt4hlk_hajuavEJgGhwQ5AjHzx05Ik3YuKpknH9ZzYd8IQate9FV4twIkG5rUxp88i2LBkS-VPxKIxiutJm0fMSIbubpH9U-PDEOVEeSc2VXoOJxJhDq48ZgsMQg",
"token_type": "Bearer",
"expires_in": 2592000
谢谢!
这是文档。 建议您再读一遍。