UKey认证接口描述

安全认证网关UKey认证旁路模式接口描述

1.       旁路模式拓扑图

未命名文件 (2)

2.       旁路模式时序图

未命名文件

3.       流程描述

1.       浏览器和证书运行环境做UKey和Pin码检查

1.1浏览器和证书环境交互获得UKey中所有证书用户列表,以下拉列表框的形式让用户选择。

1.2 用户在登录页面中选择用户名(证书的Subject CN)

1.3 用户输入PIN码,点击提交。浏览器pin码发送给证书环境。如果用户名与PIN码不一致,返回错误。

2.       浏览器获取随机数

2.1浏览器向客户认证中心发起请求,申请用于签名的随机数。

2.2客户认证中心向SRP发起请求,申请随机数。

2.3       SRP向客户认证中心返回响应,携带随机数。

2.4客户认证中心向用户浏览器返回响应,携带随机数。

3.       浏览器从证书运行环境获取随机数签名

3.1浏览器向证书环境发送用户名(Subject CN)与随机数,获取根据用户私对随机数的签名。

4.       浏览器提交认证请求

4.1用户浏览器向证书环境发送用户名(Subject CN),获取用户的公证书。

4.2用户浏览器携带用户的公证书、签名用的随机数与对随机数的签名,向客户认证中心发起认证请求。

4.3客户认证中心向SRP发起认证请求。

4.4       SRP向客户认证中心返回响应,客户认证中心根据认证结果,做后续相应处理。

4.       客户认证中心与SRP的API描述

对于旁路模式,此API为客户认证中心与SRP交互的接口,而非用户浏览器与客户认证中心的接口。用户浏览器与客户认证中心的接口可由客户自主定义。

4.1. 获取随机数

²                      URL

https://<IP of SRP Proxy>/--auth-pre--/aaa/cert/random

²                      Method

GET

²                      返回数据

类型:application/json

参数:

参数

必须

说明

Random

随机数。长度为24字节

4.2. 用户认证

²                      URL

https://<IP of SRP Proxy>/--auth-pre--/aaa/cert/login

²                      Method

POST

²                      请求body

类型:application/json

参数

参数

必须

说明

Cert

用户证书

Random

随机数

Sign

对随机数的签名

²                      返回数据

类型:application/json

参数:

参数

必须

说明

error

错误码

errormsg

错误信息

data

主路模式下,认证成功后的重定向URL。旁路模式下,返回用户名,客户认证中心可据此进行后续用户授权。

4.3. 常见错误码

说明

1

逻辑错误,如:随机数非法、证书链校验失败、校验签名失败等

2

SRP当前代理服务不支持UKey认证

5

报文参数格式非法

9

内部错误

10

数据库错误

15

用户被冻结

20

报文源IP未注册(旁路模式可禁用IP注册功能)

22

SRP license不支持UKey认证

23

用户授权失败(旁路模式应禁用授权功能)

5.       客户端(浏览器)与证书环境的API描述

包含脚本(路径请根据代码结构自行定义):

<script src='XTXSAB.js'></script>

img3

5.1. 初始化

²                      函数

init(function() { ... }, function() { ... })

²                      参数

参数

必须

说明

function() { ... }

初始化成功后,执行的回调函数。

function() { ... }

初始化失败后,执行的回调函数。

5.2. 获取UKey中所有证书用户列表

²                      函数

SOF_GetUserList(function(ret) { ... })

²                      参数

参数

必须

说明

function(ret) { ... }

获取证书用户列表后,执行的回调函数。

ret.retVal包含证书ID。

ret.retVal字符串格式为:

Username1||CertID1&&&Username2||CertID2&&&...

在登录页面向用户展示的应该是填充Username的下拉列表。

后续API调用,需要使用CertID作为证书标识。

5.3. 校验用户名与PIN码

²                      函数

SOF_Login(CertID, PIN, function (ret) { ... })

²                      参数

参数

必须

说明

CertID

证书ID,从证书用户列表中选中的用户名对应的CertID

PIN

PIN码,用户输入。

function(ret) { ... }

校验完成后的回调函数。

ret.retVal为true,表示校验成功。

ret.retVal为false,表示校验失败。

5.4. 对随机数进行签名

²                      函数

SOF_SignData(CertID, random, function (ret) { ... })

²                      参数

参数

必须

说明

CertID

证书ID,从证书用户列表中选中的用户名对应的CertID

random

从SRP获取的一次性随机数。

function(ret) { ... }

校验完成后的回调函数。

ret.retVal为"",表示签名失败;否则为返回的签名值。

5.5. 导出用户证书

²                      函数

SOF_ExportUserCert(CertID, function (ret) { ... })

²                      参数

参数

必须

说明

CertID

证书ID,从证书用户列表中选中的用户名对应的CertID

function(ret) { ... }

校验完成后的回调函数。

ret.retVal为"",表示签名失败;否则为返回的BASE64编码格式的用户证书。

5.6. 代码示例

语言:Javascript + Vue.js (为了兼容更多浏览器,语法并未采用ES6)

img4

img5

解决方案

SOLUTIONS

首页标题    UKey认证接口描述