📄 登录支持客户端模式
内部资料,请扫码登录
pigcloud
# 关于客户端模式
客户端模式(Client Credentials Grant)指客户端以自己的名义,而不是以用户的名义,向"服务提供商"进行认证。严格地说,客户端模式并不属于 OAuth 框架所要解决的问题。在这种模式中,用户直接向客户端注册,客户端以自己的名义要求"服务提供商"提供服务,其实不存在授权问题。
A)客户端向认证服务器进行身份认证,并要求一个访问令牌。
B)认证服务器确认无误后,向客户端提供访问令牌。
# PIGX 默认支持此模式
- 给目标客户端分配客户端模式
- 如何调用
curl --location --request POST 'http://127.0.0.1:3000/oauth2/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'Authorization: Basic dGVzdDp0ZXN0' \
--data-urlencode 'grant_type=client_credentials'
- 返回报文
{
"access_token": "1af5faf2-bb8c-441d-952b-82df970ae474",
"token_type": "bearer",
"expires_in": 43199,
"scope": "server"
}
# 总结
相较于密码模式,返回的数据不包含刷新令牌(令牌容易丢,避免安全问题)。
不存在用户概念,无法通过 SecurityUtils.getUser 获取当前用户
@GetMapping("/client/info")
public R getClientInfo(){
// SecurityUtils.getUser() == null
String requestClientId = SecurityUtils.getAuthentication().getName();
return R.ok();
}