注册、登录、鉴权透传参数

注册透传流程

请求path: 可配置
请求method: POST
请求Body:

鉴权网关默认读取用户注册数据方式是从请求Body中读取如下字段

{
  "name": "...",       // 必填
  "pwd": "...",        // 必填
  "telephone": "...",  // 可选
  "email": "...",      // 可选
  ... // 更多数据
}

鉴权网关透传给业务系统:

场景: 注册请求 –> 鉴权网关 –(透传)–> 业务系统

  1. 鉴权网关会把原始请求原封不动的透传给业务系统
  2. 只有当鉴权网关自己注册用户成功之后,透传请求时才会增加 one-id 的HTTP请求头,表示用户在鉴权网关对应的ID(全局唯一且不会改变)

鉴权网关透传给客户端

场景: 业务系统响应 –> 鉴权网关 –(透传)–> 用户客户端

  1. 鉴权网关会把原始响应原封不动的透传给用户客户端
  2. 用户在业务系统注册成功之后需要在HTTP响应中设置 user-agent-id HTTP Head,值为用户在业务系统对应的ID(唯一且不会改变)

登录透传流程

请求path: 可配置
请求method: POST
请求Body:

// 用户名密码登录
{
  "name": "...",             // 必填
  "password": "...",         // 必填
  ... // 更多数据
}

// 手机号验证码登录
{
  "telephone: "...",         // 必填
  "validateCode": "...",     // 必填
  ... // 更多数据
}

// APP扫码登录
{
  "scanCode: "...",          // 必填
  "appToken": "...",         // 必填
  ... // 更多数据
}

// 微信小程序登录
{
  "loginCode: "...",         // 必填
  ... // 更多数据
}

鉴权网关透传给业务系统:

场景: 登录请求 –> 鉴权网关 –(透传)–> 业务系统

  1. 鉴权网关会把原始请求原封不动的透传给业务系统
  2. 只有当鉴权网关正常完成登录逻辑之后,透传请求时才会增加 gw-token 的HTTP Cookie,是一个标准的JWT Token
  3. 登录失败时,鉴权网关会在响应头中加入名为 gw-login-err 的HTTP Head。提示登录错误信息
gw-login-err值 错误场景 备注
100 存在多个有效的用户 默认处理
101 登录账号不存在 默认处理
102 登录密码错误 默认处理
200 登录密码错误 B2B专用。当且仅当账号匹配一个用户,且密码错误时

鉴权网关透传给客户端

场景: 业务系统响应 –> 鉴权网关 –(透传)–> 用户客户端

  1. 鉴权网关会把原始响应原封不动的透传给用户客户端
  2. 登录成功之后,鉴权网关会在响应头中加入名为 gw-token set-cookie的HTTP Head,保证gw-token cookie写入客户端
  3. 业务系统返回非200的响应状态码或者在响应头中加入名为biz-login-fail的非空HTTP Head 表示业务系统登录失败

gw-token包含的信息

/**
 * 用户统一ID
 */
private String oneId;

/**
 * 平台ID: zyt, b2b,
 */
private String platform;

/**
 * 账号ID
 */
private String userAgentId;

/**
 * 登录名
 */
private String loginName;

用户名存在且唯一时,密码不正确会有对应提示

鉴权透传流程

请求path: any(任意)
请求method: any(任意)
请求Body: any(任意)

鉴权网关透传给业务系统:

场景: 用户访问请求 –> 鉴权网关 –(透传)–> 业务系统

  1. 鉴权网关会把原始请求原封不动的透传给业务系统
  2. 鉴权网关会校验请求中的gw-token值(JWT Token),只有校验通过才会把gw-token值透传给业务系统
  3. 业务系统可以通过解析gw-token值来获取当前登录用户

鉴权网关透传给客户端

场景: 业务系统响应 –> 鉴权网关 –(透传)–> 用户客户端

  1. 鉴权网关会把原始响应原封不动的透传给用户客户端

配置Demo

spring:
  cloud:
    gateway: #---------------------------------------------------------- gateway配置
      discovery:
        locator:
          enabled: true
          lower-case-service-id: true
      routes:
        - id: b2b
          uri: http://10.?.?.?:8080/
          predicates:
            - Domain=*.yyjzt.com

auth:
  enable-register-retry: false
  password-secret-key: 253028364f3f459442fee5f40f0c71ec
  password-secret-iv: e3df4155e34a7c5ea5426b8efd148097
  servers:
    - route-id: zyt
      register-path: '/register'
      login-path:
        - '/user/admin/login.json'
        - '/mobile/salesman/mobileLogin.json'
      login-out-path: '/user/admin/loginOut.htm'
      switch-login:
        - '/mobile/salesman/switchAccount.json'
      jwt-token-config:
        secret-key: test
        token-validity: 30h
        use-cookie: true

表结构设计

SpringCloud参考

文档更新时间: 2020-08-11 14:44   作者:lizw