Spring Boot 授权服务器 - 不重定向回配置的重定向 URI

Jaw*_*mad 5 spring spring-security spring-boot spring-security-oauth2

我最近开始合并Spring 授权服务器,将 2.1 OAUTH 实施到我们的项目中。我已按照提供的示例设置授权服务器。还密切关注 spring 授权服务器文档。

我想检查从授权服务器生成的代码,因此尝试使用 Postman 进行测试。当我请求令牌时,它确实会提示我登录,并且在提供登录信息后,它会转到错误页面,而不是重定向回 Postman 应用程序。控制台上也没有错误,从控制台来看,身份验证似乎已成功。

// @formatter:off
@Bean
public RegisteredClientRepository registeredClientRepository(JdbcTemplate jdbcTemplate) {
    RegisteredClient registeredClient = RegisteredClient.withId(UUID.randomUUID().toString())
            .clientId("client")
            .clientSecret("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")
            .redirectUri("https://oauth.pstmn.io/callback")
            .scope(OidcScopes.OPENID)
            .scope("message.read")
            .scope("message.write")
            .clientSettings(ClientSettings.builder().requireAuthorizationConsent(true).build())
            .build();

    // Save registered client in db as if in-memory
    return new InMemoryRegisteredClientRepository(registeredClient);
}
Run Code Online (Sandbox Code Playgroud)

我不知道,网上也几乎没有关于这里发生的事情的帮助。所有配置的完成方式与官方示例中提供的配置类似,但无论出于何种原因,它都不会重定向并提供授权令牌。

控制台日志:

// @formatter:off
@Bean
public RegisteredClientRepository registeredClientRepository(JdbcTemplate jdbcTemplate) {
    RegisteredClient registeredClient = RegisteredClient.withId(UUID.randomUUID().toString())
            .clientId("client")
            .clientSecret("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")
            .redirectUri("https://oauth.pstmn.io/callback")
            .scope(OidcScopes.OPENID)
            .scope("message.read")
            .scope("message.write")
            .clientSettings(ClientSettings.builder().requireAuthorizationConsent(true).build())
            .build();

    // Save registered client in db as if in-memory
    return new InMemoryRegisteredClientRepository(registeredClient);
}
Run Code Online (Sandbox Code Playgroud)

Jaw*_*mad 0

从配置中删除了 ClientSettings,现在它可以工作了。对我来说,新版本似乎是一个错误。但无论出于何种原因,删除它后它仍然可以工作。

.clientSettings(ClientSettings.builder().requireAuthorizationConsent(true).build())