spring-security 仅限Spring Security OAuth2客户端凭据流

2ledvvac  于 2022-11-11  发布在  Spring
关注(0)|答案(1)|浏览(152)

我正在尝试使用Sping Boot 创建一个OAuth2授权,它只支持客户端凭据流。据我所知,该流是客户端直接访问 /oauth/token 端点。
是否有办法在Sping Boot 中禁用 /oauth/authorize 端点,并允许直接访问 /oauth/token,而无需首先获得完全授权?

@Configuration
@EnableAuthorizationServer
public class OAuth2Configuration extends AuthorizationServerConfigurerAdapter {

    @Autowired
    private AuthenticationManager authenticationManager;

    @Override
    public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
        // TODO: Is there something I can do here to disable /oauth/authorize?
        endpoints.authenticationManager(authenticationManager);
    }

    @Override
    public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
        // client details configuration
    }

}
yshpjwxd

yshpjwxd1#

我不能说禁用授权端点,但你是对的,你可以直接进入令牌端点与客户端凭据流。我可能重申一些你已经知道,但“客户端”的凭据(客户端ID/客户端密码)与“用户”得凭据不同(用户名/密码)。“用户”前往授权端点,以便客户端随后可以从令牌端点获取令牌。“客户端”(在客户端凭据流中)直接向令牌终结点提供客户端凭据。是否需要禁用授权终结点?
因此,对于client_credentials流,您不需要首先进行authorize(您不需要禁用它)。如果您的Sping Boot 授权服务器在localhost:8080上,您将如何 curl 令牌:

curl -H "Authorization: Basic d2VhcHA6" -X POST http://localhost:8080/oauth/token?grant_type=client_credentials

其中,d2VhcHA6是“客户端ID:客户端秘密”的base64编码

相关问题