登录支持客户端模式

关于客户端模式

客户端模式(Client Credentials Grant)指客户端以自己的名义,而不是以用户的名义,向"服务提供商"进行认证。严格地说,客户端模式并不属于 OAuth 框架所要解决的问题。在这种模式中,用户直接向客户端注册,客户端以自己的名义要求"服务提供商"提供服务,其实不存在授权问题。

客户端模式流程图
  • A)客户端向认证服务器进行身份认证,并要求一个访问令牌。

  • B)认证服务器确认无误后,向客户端提供访问令牌。

PIGX 默认支持此模式

  • 给目标客户端分配客户端模式
1712824737

基本请求参数说明

版本Token 请求地址
微服务版本http://pigx-gateway:9999/auth/oauth2/token
单体版本http://pigx-gateway:9999/admin/oauth2/token

ApiFox 调用

ApiFox调用示例

CURL 调用

curl --location --request POST 'http://pigx-gateway:9999/auth/oauth2/token' 
--header 'Authorization: Basic dGVzdDp0ZXN0' 
--form 'grant_type=client_credentials' 
--form 'scope=server'

总结

  • 相较于密码模式,返回的数据不包含刷新令牌(令牌容易丢,避免安全问题)。

  • 不存在用户概念,无法通过 SecurityUtils.getUser 获取当前用户

@GetMapping("/client/info")
public R getClientInfo(){
    // SecurityUtils.getUser() == null
    String requestClientId = SecurityUtils.getAuthentication().getName();
    return R.ok();
}