11 令牌颁发方式 之 客户端凭证模式

柿子要挑软的捏,客户端凭证模式最简单,我们先来看看它是怎么玩的。

Client Credentials(客户端凭证模式)

好像真的简单到没什么好说的,客户端凭证模式就是只需要客户端信息,只要通过了客户端认证那一关,就能拿到令牌。(我们在之前客户端认证系列文章中,大都是用的这种模式测试)

示例

环境准备

授权服务器

基于 快速搭建一个授权服务器 文章中的示例,修改 SecurityConfiguration 中 registeredClientRepository() 方法,如下:

    @Bean
    public RegisteredClientRepository registeredClientRepository() {
        RegisteredClient registeredClient = RegisteredClient.withId(UUID.randomUUID().toString())
                .clientId("client1")
                .clientSecret("{noop}secret1")
                // 客户端认证方式
                .clientAuthenticationMethod(ClientAuthenticationMethod.CLIENT_SECRET_POST)
                // 令牌颁发方式
                .authorizationGrantType(AuthorizationGrantType.CLIENT_CREDENTIALS)
                .build();

        return new InMemoryRegisteredClientRepository(registeredClient);
    }

测试

使用Postman测试,在Body栏,填入’grant_type=client_credentials’、client_id、client_secret,发送请求。在这里插入图片描述
如上,成功获取到令牌(access_token)。这就是客户端模式,就是这么简单。

源码分析

OAuth2ClientCredentialsAuthenticationConverter

判断请求参数 grant_type 的值是否为 client_credentials,若是,则构建 OAuth2ClientCredentialsAuthenticationToken

OAuth2ClientCredentialsAuthenticationProvider

核心就是生成令牌,没啥了。
在这里插入图片描述


end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值