认证中心可以通过二维码扫描登录的方式进行系统访问,用户需要通过groovy脚本自定义编写如何通过返回的报文获取用户名的功能,以最终实现通过用户名登录系统的功能。

增加配置

在yml文件里面增加如下配置

  1. ac:
  2. ...
  3. customize:
  4. qrcode:
  5. expiration: 60

配置说明

  • expiration: 缓存实失效时间,单位秒

    编写groovy脚本

    groovy脚本的路径:war包根目录\WEB-INF\classes\plugins\customizeQrcode.groovy
    图片.png
    customizeQrcode.groovy默认内容如下 :::danger 请按照实际返回的用户信息获取用户名的逻辑编写groovy脚本 :::

    /**
    * 根据请求报文获得用户名
    * @param requestBody
    *       请求报文 json对象
    */
    def getUsername(requestBody){
      // 写根据请求报文如何获得username的业务逻辑
      return "admin";
    }
    

    说明

    入参说明

  • requestBody: 用户的请求报文

    出参说明

    出参返回String类型,返回获取的用户名,如果未获取到用户名或获取用户名异常,返回 null :::danger 必须严格按照规范返回内容,否则会导致二维码登录接入功能失效 :::

    其它说明

  • groovy脚本的目录必须是war包根目录\WEB-INF\classes\plugins

  • groovy脚本名称必须是customizeQrcode.groovy
  • 方法名必须是getUsername

    二维码登录

    登录地址

    http://{ip}:{port}/{context-path}/login

  • {ip}:认证中心的ip地址

  • {port}:认证中心的端口
  • {context-path}:认证中心的部署包名

    登录说明

    用户访问上述的登录地址,选择二维码登录,扫描后,根据扫描结果中的uuid的值,调用二维码验证回调接口,登录成功返回true,失败返回false。登录成功后,页面自动跳转至指定页

    二维码验证回调接口

    接口地址

    http://{ip}:{port}/{context-path}/checkQrcodeFeedback(对应的参数需要改成具体的实际值)

    请求方式

    POST

    请求参数

    请求报文body体为json对象,其中uuid为必填项

    请求示例

    {
    "userName":"admin",
    "password":"12345678901",
    "uuid":"c5f9e449-1fbe-41ea-8f66-e31fc42e4dd5"
    }
    

    响应说明

    验证成功返回true,失败返回false