我正在使用弹簧-安全-OAuth2实现我的OAuth2授权服务器。spring-安全性-OAuth2即将消失,我知道我需要用spring-授权服务器替换它
问题:是否可能对不同的客户端有不同的令牌到期时间(此处客户端表示客户端id/客户端秘密对)?
如果是,请您与spring-authorization-server共享文档/示例代码
如果不是,这是spring授权服务器的限制还是OAuth2规范不允许的?
(澄清一下,我并不是说春季安全-OAuth2是可能的,如果我也想知道的话)
发布于 2022-01-14 23:07:23
是的,每个客户端可以有不同的过期时间。您将使用每个tokenSettings的RegisteredClient,如以下示例所示:
RegisteredClient registeredClient = RegisteredClient.withId(UUID.randomUUID().toString())
.clientId("messaging-client")
.clientSecret("{noop}secret")
.clientAuthenticationMethod(ClientAuthenticationMethod.CLIENT_SECRET_BASIC)
.authorizationGrantType(AuthorizationGrantType.AUTHORIZATION_CODE)
.authorizationGrantType(AuthorizationGrantType.REFRESH_TOKEN)
.authorizationGrantType(AuthorizationGrantType.CLIENT_CREDENTIALS)
.redirectUri("http://127.0.0.1:8080/login/oauth2/code/messaging-client-oidc")
.redirectUri("http://127.0.0.1:8080/authorized")
.scope(OidcScopes.OPENID)
.scope("message.read")
.scope("message.write")
.tokenSettings(TokenSettings.builder()
.accessTokenTimeToLive(Duration.ofMinutes(5))
.refreshTokenTimeToLive(Duration.ofHours(2))
.build())
.clientSettings(ClientSettings.builder().requireAuthorizationConsent(true).build())
.build();有关完整上下文,请参见样例配置。
https://stackoverflow.com/questions/70717354
复制相似问题