From ee73ca0c088ac4a5a2faa469725b963876062bb6 Mon Sep 17 00:00:00 2001
From: lmm 流程简介: token换用户信息 将sso域名注册到APP应用中,并且提供appKey和secret 见接口文档
@@ -1119,13 +1119,13 @@
通过OAuth验证接口获取成员身份会有一定的时间开销。对于频繁获取成员身份的场景,建议采用如下方案: 注:https方式类似。 请求参数: 参数说明: 返回结果:
-因为应用嵌入在APP内部,此时APP应该是登录状态,在一系列校验好,会重定向到redirect_uri并且带着code和state1、APP支持标准的OAuth授权码模式支持
-
+2、提供appKey和secret给sso
-2、提供应用id和应用秘钥给sso
+
+
3、支持OAuth的三个接口
缓存方案建议
-
@@ -1169,7 +1169,7 @@
diff --git a/linkid/authentication/introduction/application-free-certification-README.md b/linkid/authentication/introduction/application-free-certification-README.md
index 3b3bf89..91992ea 100644
--- a/linkid/authentication/introduction/application-free-certification-README.md
+++ b/linkid/authentication/introduction/application-free-certification-README.md
@@ -1,11 +1,12 @@
# APP内应用免认证
>[准备工作](#0)
+>
>- [OAuth2.0授权码支持](#1)
->- [提供appKey和secret给sso](#2)
+>- [提供应用id和应用秘钥给sso](#2)
>- [支持OAuth的三个接口](#3)
-
+>
>[对接原理](#4)
-
+>
>[缓存方案建议](#5)
#### 准备工作
@@ -14,12 +15,13 @@
##### 1、APP支持标准的OAuth授权码模式支持
流程简介:
-- 获取code
-- code换token
-- token换用户信息
-##### 2、提供appKey和secret给sso
+- 获取code。
+- code换token。
+- token换用户信息。
+
+##### 2、提供应用id和应用秘钥给sso
-- 将sso域名注册到APP应用中,并且提供appKey和secret
+- 将sso域名注册到APP应用中,并且提供应用id和应用秘钥。
##### 3、支持OAuth的三个接口
见接口文档
@@ -31,8 +33,8 @@
#### 缓存方案建议
通过OAuth验证接口获取成员身份会有一定的时间开销。对于频繁获取成员身份的场景,建议采用如下方案:
-- 应用中的URL链接直接填写企业自己的页面地址
-- 成员操作跳转到步骤1的企业页面时,企业后台校验是否有标识成员身份的cookie信息,此cookie由企业生成
-- 如果没有匹配的cookie,则重定向到OAuth验证链接,获取成员的身份信息后,由企业后台植入标识成员身份的cookie信息
-- 根据cookie获取成员身份后,再进入相应的页面
+- 应用中的URL链接直接填写企业自己的页面地址。
+- 成员操作跳转到步骤1的企业页面时,企业后台校验是否有标识成员身份的cookie信息,此cookie由企业生成。
+- 如果没有匹配的cookie,则重定向到OAuth验证链接,获取成员的身份信息后,由企业后台植入标识成员身份的cookie信息。
+- 根据cookie获取成员身份后,再进入相应的页面。
diff --git a/linkid/authentication/introduction/cas-README.html b/linkid/authentication/introduction/cas-README.html
index 4182331..a15a4f9 100644
--- a/linkid/authentication/introduction/cas-README.html
+++ b/linkid/authentication/introduction/cas-README.html
@@ -1299,7 +1299,7 @@ String email=attributes.get("age"); //获取需࢘
diff --git a/linkid/authentication/introduction/oauth-README.html b/linkid/authentication/introduction/oauth-README.html
index 551d14b..6a352b6 100644
--- a/linkid/authentication/introduction/oauth-README.html
+++ b/linkid/authentication/introduction/oauth-README.html
@@ -1161,7 +1161,7 @@
diff --git a/linkid/authentication/public/interface/application-free-certification.html b/linkid/authentication/public/interface/application-free-certification.html
index fbe6006..c8452fa 100644
--- a/linkid/authentication/public/interface/application-free-certification.html
+++ b/linkid/authentication/public/interface/application-free-certification.html
@@ -1088,7 +1088,6 @@
APP内应用免认证接口
-OAuth2.0标准认证接口
@@ -1103,7 +1102,7 @@
请求示例:
- https://xxx.com.cn/oauth/authorize?client_id=[AppKey]&redirect_uri=[urlEncode(应用回调地址)]&response_type=code&scope=base_api&state=xxx
+ https://xxx.com.cn/oauth/authorize?client_id=xxx&redirect_uri=xxx&response_type=code&scope=base_api&state=xxx
@@ -1118,7 +1117,7 @@
client_id
是
-应用唯一标识,即应用注册时获得的 App Key
+应用唯一标识,即应用注册时获得的应用id
redirect_uri
@@ -1128,22 +1127,22 @@
response_type
是
-返回类型,请填写 code 。
+返回类型,请填写 code
scope
是
-作用域,与注册时匹配。 base_api 可以访问基础API且支持静默模式不弹出授权提醒; all 可以使用所有高级API。通过开放平台创建的应用默认授予 base_api 作用域,可申请 all 权限;在微哨管理平台创建的应用同时授予 base_api 和 all 权限。
+作用域,与注册时匹配。 base_api 可以访问基础API且支持静默模式不弹出授权提醒;
all 可以使用所有高级API。通过开放平台创建的应用默认授予 base_api 作用域,可申请 all 权限;
在微哨管理平台创建的应用同时授予 base_api 和 all 权限
state
是
-重定向后会带上 state 参数。开发者可以用此参数验证请求有效性,或记录用户请求授权页前的位置。同时此参数可用于防止跨站请求伪造(CSRF)攻击
+重定向后会带上 state 参数。开发者可以用此参数验证请求有效性,或记录用户请求授权页前的位置。
同时此参数可用于防止跨站请求伪造(CSRF)攻击
示例:
https://redirect_uri?code=xxxxx&state=xxx
@@ -1161,18 +1160,19 @@
请求⽅式: POST(HTTPS或HTTP)
请求地址: http://{server}/oauth/token
注:https方式类似。
请求参数:
-示例:
-grant_type=authorization_code&client_id=[AppKey]&client_secret=[AppSecret]&code=[code]&redirect_uri=[urlEncode(应用回调地址)]
+注:请求数据类型为Form表单(application/x-www-form-urlencoded)
+Form表单示例:
+grant_type=authorization_code&client_id=xxx&client_secret=xxx&code=xxx&redirect_uri=xxx
参数说明:
@@ -1187,22 +1187,22 @@ grant_type=authorization_code&client_id=[AppKey]&client_secret=[AppSecre
grant_type
是
-固定值 authorization_code。
+固定值 authorization_code
client_id
是
-应用唯一标识,即应用注册时获得的 App Key。
+应用唯一标识,即应用注册时获得的 应用id
client_secret
是
-应用密钥,即应用注册时获得的 App Secret。
+应用的秘钥,即应用注册时获得的应用秘钥
code
是
-授权票据,即第一步应用回调地址获得的 code 参数值
+授权码,即第一步应用回调地址获得的 code 参数值
redirect_uri
@@ -1241,6 +1241,14 @@ grant_type=authorization_code&client_id=[AppKey]&client_secret=[AppSecre
scope
作用域
+
+refresh_token
+刷新令牌
+
+
+token_type
+令牌类型
+
三、获取用户信息
@@ -1248,8 +1256,29 @@ grant_type=authorization_code&client_id=[AppKey]&client_secret=[AppSecre
获取用户信息。
请求⽅式: GET(HTTPS或HTTP)
-请求地址: http://{server}/profile?access_token=[AccessToken]
+请求地址: http://{server}/profile
注:https方式类似。
+请求参数:
+示例:
+http://xxx.com.cn/profile?access_token=xxx
+
+参数说明:
+
+
+
+参数
+是否必须
+说明
+
+
+
+
+access_token
+是
+令牌
+
+
+
返回结果:
{
"name": "张三",
@@ -1276,7 +1305,7 @@ grant_type=authorization_code&client_id=[AppKey]&client_secret=[AppSecre
@@ -1320,7 +1349,7 @@ grant_type=authorization_code&client_id=[AppKey]&client_secret=[AppSecre
diff --git a/linkid/authentication/public/interface/application-free-certification.md b/linkid/authentication/public/interface/application-free-certification.md
index 506016d..8c808f1 100644
--- a/linkid/authentication/public/interface/application-free-certification.md
+++ b/linkid/authentication/public/interface/application-free-certification.md
@@ -1,5 +1,4 @@
# APP内应用免认证接口
-# OAuth2.0标准认证接口
> [获取code](#1)
>
> [通过code换取token](#2)
@@ -22,21 +21,22 @@
```javascript
请求示例:
- https://xxx.com.cn/oauth/authorize?client_id=[AppKey]&redirect_uri=[urlEncode(应用回调地址)]&response_type=code&scope=base_api&state=xxx
+ https://xxx.com.cn/oauth/authorize?client_id=xxx&redirect_uri=xxx&response_type=code&scope=base_api&state=xxx
```
**参数说明:**
| **参数** | **是否必须** | **说明** |
| -------- | ------------ | -------------------------------------- |
-| client_id | 是 | 应用唯一标识,即应用注册时获得的 App Key |
+| client_id | 是 | 应用唯一标识,即应用注册时获得的应用id |
| redirect_uri | 是 | 授权后重定向的回调链接地址,注意需使用 urlEncode 对链接进行处理 |
-| response_type | 是 | 返回类型,请填写 code 。 |
-| scope | 是 | 作用域,与注册时匹配。 base_api 可以访问基础API且支持静默模式不弹出授权提醒; all 可以使用所有高级API。通过开放平台创建的应用默认授予 base_api 作用域,可申请 all 权限;在微哨管理平台创建的应用同时授予 base_api 和 all 权限。 |
-| state | 是 | 重定向后会带上 state 参数。开发者可以用此参数验证请求有效性,或记录用户请求授权页前的位置。同时此参数可用于防止跨站请求伪造(CSRF)攻击 |
+| response_type | 是 | 返回类型,请填写 code |
+| scope | 是 | 作用域,与注册时匹配。 base_api 可以访问基础API且支持静默模式不弹出授权提醒;
all 可以使用所有高级API。通过开放平台创建的应用默认授予 base_api 作用域,可申请 all 权限;
在微哨管理平台创建的应用同时授予 base_api 和 all 权限 |
+| state | 是 | 重定向后会带上 state 参数。开发者可以用此参数验证请求有效性,或记录用户请求授权页前的位置。
同时此参数可用于防止跨站请求伪造(CSRF)攻击 |
**返回结果:**
-因为应用嵌入在APP内部,此时APP应该是登录状态,在一系列校验好,会重定向到redirect_uri并且带着code和state
+因为应用嵌入在APP内部,此时APP应该是登录状态,在一系列校验后,会重定向到redirect_uri并且带着code和state
+
```javascript
示例:
https://redirect_uri?code=xxxxx&state=xxx
@@ -44,14 +44,13 @@
**参数说明:**
-| **参数** | **说明** |
-| -------- | ----------------------------------------------- |
-| code | 下发的code |
-| code | 请求code时带的参数 |
-
+| **参数** | **说明** |
+| -------- | ------------------ |
+| code | 下发的code |
+| state | 请求code时带的参数 |
-#### 二、通过 code 换取网页授权 AccessToken
+#### 二、通过 code 换取网页授权token
**请求⽅式:** POST(**HTTPS或HTTP**)
@@ -61,20 +60,21 @@
**请求参数:**
-```javascript
-示例:
-grant_type=authorization_code&client_id=[AppKey]&client_secret=[AppSecret]&code=[code]&redirect_uri=[urlEncode(应用回调地址)]
+注:请求数据类型为Form表单(application/x-www-form-urlencoded)
+```javascript
+Form表单示例:
+grant_type=authorization_code&client_id=xxx&client_secret=xxx&code=xxx&redirect_uri=xxx
```
**参数说明:**
| **参数** | **是否必须** | **说明** |
| -------- | ------------ | ------------------------- |
-| grant_type | 是 | 固定值 authorization_code。 |
-| client_id | 是 | 应用唯一标识,即应用注册时获得的 App Key。|
-| client_secret | 是 | 应用密钥,即应用注册时获得的 App Secret。 |
-| code | 是 | 授权票据,即第一步应用回调地址获得的 code 参数值 |
+| grant_type | 是 | 固定值 authorization_code |
+| client_id | 是 | 应用唯一标识,即应用注册时获得的 应用id |
+| client_secret | 是 | 应用的秘钥,即应用注册时获得的应用秘钥 |
+| code | 是 | 授权码,即第一步应用回调地址获得的 code 参数值 |
| redirect_uri | 是 | 应用回调地址 |
@@ -96,6 +96,8 @@ grant_type=authorization_code&client_id=[AppKey]&client_secret=[AppSecret]&code=
| access_token | 下发的token |
| expires_in | 有效期 |
| scope | 作用域 |
+| refresh_token | 刷新令牌 |
+| token_type | 令牌类型 |
#### 三、获取用户信息
@@ -104,12 +106,25 @@ grant_type=authorization_code&client_id=[AppKey]&client_secret=[AppSecret]&code=
**请求⽅式:** GET(**HTTPS或HTTP**)
-**请求地址:** http://{server}/profile?access_token=[AccessToken]
+**请求地址:** http://{server}/profile
注:https方式类似。
+**请求参数:**
+
+```javascript
+示例:
+http://xxx.com.cn/profile?access_token=xxx
+```
+
+**参数说明:**
+
+| **参数** | **是否必须** | **说明** |
+| ------------ | ------------ | -------- |
+| access_token | 是 | 令牌 |
**返回结果:**
+
```json
{
"name": "张三",
diff --git a/linkid/authentication/public/interface/cas-authentication.html b/linkid/authentication/public/interface/cas-authentication.html
index 3880c82..0ee369f 100644
--- a/linkid/authentication/public/interface/cas-authentication.html
+++ b/linkid/authentication/public/interface/cas-authentication.html
@@ -1291,7 +1291,7 @@ http://ljw.sso.rghall.com.cn/serviceValidate?ticket=S
diff --git a/linkid/authentication/public/interface/oauth-authentication.html b/linkid/authentication/public/interface/oauth-authentication.html
index 0d32da0..7d80d80 100644
--- a/linkid/authentication/public/interface/oauth-authentication.html
+++ b/linkid/authentication/public/interface/oauth-authentication.html
@@ -1858,7 +1858,7 @@ http://ljw.sso.rghall.com.cn/logout
diff --git a/linkid/dlmu/faq/faq.html b/linkid/dlmu/faq/faq.html
index ba13f8f..9e120ca 100644
--- a/linkid/dlmu/faq/faq.html
+++ b/linkid/dlmu/faq/faq.html
@@ -1134,7 +1134,7 @@
diff --git a/linkid/dlmu/introduction/index.html b/linkid/dlmu/introduction/index.html
index f1714eb..a2c2d5d 100644
--- a/linkid/dlmu/introduction/index.html
+++ b/linkid/dlmu/introduction/index.html
@@ -1144,7 +1144,7 @@
diff --git a/linkid/dlmu/public/interface/dlmu-external-api.html b/linkid/dlmu/public/interface/dlmu-external-api.html
index 25af2e7..221ad55 100644
--- a/linkid/dlmu/public/interface/dlmu-external-api.html
+++ b/linkid/dlmu/public/interface/dlmu-external-api.html
@@ -1307,7 +1307,7 @@ https://ljw.sso.rghall.com.cn/linkid/remote/permissio
diff --git a/linkid/label/faq/faq.html b/linkid/label/faq/faq.html
index d5c4726..498cf9b 100644
--- a/linkid/label/faq/faq.html
+++ b/linkid/label/faq/faq.html
@@ -1128,7 +1128,7 @@
diff --git a/linkid/label/introduction/index.html b/linkid/label/introduction/index.html
index 14ff43e..d38375e 100644
--- a/linkid/label/introduction/index.html
+++ b/linkid/label/introduction/index.html
@@ -1148,7 +1148,7 @@
diff --git a/linkid/label/public/interface/label-external-api.html b/linkid/label/public/interface/label-external-api.html
index fa41968..24dda13 100644
--- a/linkid/label/public/interface/label-external-api.html
+++ b/linkid/label/public/interface/label-external-api.html
@@ -1585,7 +1585,7 @@ https://ljw.sso.rghall.com.cn/linkid/api/aggregate/la
diff --git a/linkid/organization/faq/faq.html b/linkid/organization/faq/faq.html
index 24e938b..5497965 100644
--- a/linkid/organization/faq/faq.html
+++ b/linkid/organization/faq/faq.html
@@ -1128,7 +1128,7 @@
diff --git a/linkid/organization/introduction/index.html b/linkid/organization/introduction/index.html
index b9af82b..be311a0 100644
--- a/linkid/organization/introduction/index.html
+++ b/linkid/organization/introduction/index.html
@@ -1148,7 +1148,7 @@
diff --git a/linkid/organization/public/interface/organization-external-api.html b/linkid/organization/public/interface/organization-external-api.html
index 2d3bbe2..d73fd4b 100644
--- a/linkid/organization/public/interface/organization-external-api.html
+++ b/linkid/organization/public/interface/organization-external-api.html
@@ -1353,7 +1353,7 @@ https://ljw.sso.rghall.com.cn/linkid/api/organization
diff --git a/linkid/role/faq/faq.html b/linkid/role/faq/faq.html
index b3578a5..2073021 100644
--- a/linkid/role/faq/faq.html
+++ b/linkid/role/faq/faq.html
@@ -1128,7 +1128,7 @@
diff --git a/linkid/role/introduction/index.html b/linkid/role/introduction/index.html
index 1be6be2..f3d6ffc 100644
--- a/linkid/role/introduction/index.html
+++ b/linkid/role/introduction/index.html
@@ -1164,7 +1164,7 @@
diff --git a/linkid/role/public/interface/role-external-api.html b/linkid/role/public/interface/role-external-api.html
index 3ea95e9..cf7eecb 100644
--- a/linkid/role/public/interface/role-external-api.html
+++ b/linkid/role/public/interface/role-external-api.html
@@ -1489,7 +1489,7 @@ https://ljw.sso.rghall.com.cn/linkid/public/api/aggre
diff --git a/linkid/user/faq/faq.html b/linkid/user/faq/faq.html
index 789859f..ca58178 100644
--- a/linkid/user/faq/faq.html
+++ b/linkid/user/faq/faq.html
@@ -1128,7 +1128,7 @@
diff --git a/linkid/user/introduction/index.html b/linkid/user/introduction/index.html
index e3a3974..018fddf 100644
--- a/linkid/user/introduction/index.html
+++ b/linkid/user/introduction/index.html
@@ -1150,7 +1150,7 @@
diff --git a/linkid/user/public/interface/user-external-api.html b/linkid/user/public/interface/user-external-api.html
index c95efc0..ab45ee4 100644
--- a/linkid/user/public/interface/user-external-api.html
+++ b/linkid/user/public/interface/user-external-api.html
@@ -1871,7 +1871,7 @@
diff --git a/linkid/userorganizationpost/faq/faq.html b/linkid/userorganizationpost/faq/faq.html
index bcee453..f61ec20 100644
--- a/linkid/userorganizationpost/faq/faq.html
+++ b/linkid/userorganizationpost/faq/faq.html
@@ -1128,7 +1128,7 @@
diff --git a/linkid/userorganizationpost/introduction/index.html b/linkid/userorganizationpost/introduction/index.html
index 0f382b2..12075b7 100644
--- a/linkid/userorganizationpost/introduction/index.html
+++ b/linkid/userorganizationpost/introduction/index.html
@@ -1157,7 +1157,7 @@
diff --git a/linkid/userorganizationpost/public/interface/userorganizationpost-external-api.html b/linkid/userorganizationpost/public/interface/userorganizationpost-external-api.html
index 755b994..2ed86e6 100644
--- a/linkid/userorganizationpost/public/interface/userorganizationpost-external-api.html
+++ b/linkid/userorganizationpost/public/interface/userorganizationpost-external-api.html
@@ -1614,7 +1614,7 @@ http://ljw.sso.rghall.com.cn/linkid/api/aggregate/keT
diff --git a/quick-get-start/explain.html b/quick-get-start/explain.html
index dbac2c5..6de7d85 100644
--- a/quick-get-start/explain.html
+++ b/quick-get-start/explain.html
@@ -1193,7 +1193,7 @@
diff --git a/quick-get-start/face-docking.html b/quick-get-start/face-docking.html
index 96c4c0d..6ba71dd 100644
--- a/quick-get-start/face-docking.html
+++ b/quick-get-start/face-docking.html
@@ -1148,7 +1148,7 @@
diff --git a/quick-get-start/general-application-docking.html b/quick-get-start/general-application-docking.html
index 67aef38..e7221b0 100644
--- a/quick-get-start/general-application-docking.html
+++ b/quick-get-start/general-application-docking.html
@@ -1157,7 +1157,7 @@
diff --git a/quick-get-start/group-docking.html b/quick-get-start/group-docking.html
index 61f1821..5e86d8a 100644
--- a/quick-get-start/group-docking.html
+++ b/quick-get-start/group-docking.html
@@ -1142,7 +1142,7 @@
diff --git a/release-notes.html b/release-notes.html
index 01a206f..5ffc866 100644
--- a/release-notes.html
+++ b/release-notes.html
@@ -1185,7 +1185,7 @@
diff --git a/search_plus_index.json b/search_plus_index.json
index 877d76a..79e5872 100644
--- a/search_plus_index.json
+++ b/search_plus_index.json
@@ -1 +1 @@
-{"./":{"url":"./","title":"概述","keywords":"","body":"概述 SourceID(简称SID)对外开放用户、认证、组织、标签、群组、人脸、角色、三元组等数据接口,为学校各类应用提供标准的对接方式,以满足多样化的管理和服务场景。 API更新内容详见:版本发行说明。 典型对接场景 单点对接 对于学校已建应用,通过【认证接口】对接,可实现应用的单点登录。并且支持多种认证方式,密码认证、手机号认证、微信认证等,可让学校师生使用应用更加便捷,也便于应用统一管理。 人脸对接(人脸厂商、人脸应用) 1、人脸厂商对接 单厂商:当学校需要使用人脸应用/设备时,通过人脸厂商提供的【人脸厂商标准接口】,在SID中建立人脸库。由学校管理师生的人脸信息,可更好地保证人脸信息安全。多厂商:当学校需要使用多个厂商提供的人脸应用/设备时,可通过【人脸厂商标准接口】,实现多厂商对接。应用/设备使用人脸对比算法可在不同厂商间切换。可实现学校对不同人脸厂商资源进行管理。 2、人脸应用对接 当学校需要使用人脸应用/设备时,通过人脸应用提供的【人脸应用标准接口】,在SID中建立人脸库。由学校管理师生的人脸信息,可更好地保证人脸信息安全。同时,学校的应用/设备使用照片分析算法可在不同人脸应用间切换。与人脸厂商相比,人脸应用只向SID提供特性接口(照片分析),而人脸对比等算法由人脸厂商提供。 群组对接 学校可基于不同的身份类别、职务职称、岗位等维度灵活定义群组。同时,通过群组同步,身份与组织可感知变化,自动变更、自动同步,提高业务实时性,保障学校业务的顺利开展。 一般应用对接 对于一般管理/服务场景的应用,可直接调用标准接口,获取用户、组织、标签、群组、角色、三元组、人脸特征值等信息。 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-08 14:47:14 "},"quick-get-start/explain.html":{"url":"quick-get-start/explain.html","title":"名词解释","keywords":"","body":"名词解释 名词 解释 组织 带有层级关系的用户组。组织通过部门定义用户所在节点的层级关系 群组 带有层级关系的用户组,其中”用户组”是指“具有相似特性或相似权利的用户的集合”。“群组”与“组织”的区别在于,“组织”只能通过部门定义用户所在节点的层级关系,“群组”可以将“身份标签”、“身份类型”与“组织”结合,更加灵活地组合定义 三元组 组织、岗位(包含正式岗位、虚拟岗位等)、用户间的关系 client_id 应用id client_secret 应用秘钥 access_token 访问令牌,由SourceID颁发 JWT 全称Json web token。一个开放标准(RFC 7519),它定义了一种紧凑的、自包含的方式,用于作为JSON对象在各方之间安全地传输信息。该信息可以被验证和信任,因为它是数字签名的 人脸厂商 提供人脸算法(对比、静默活体检测、特征值与质量分析)的第三方 人脸应用 只提供少量特性人脸算法(如特征值与质量分析)的第三方 人脸厂商标准接口 由SourceID制定,在对接时需要人脸厂商向SourceID提供的标准接口 人脸应用标准接口 由SourceID制定,在对接时需要人脸应用向SourceID提供的标准接口 应用前端比对 人脸应用自身具备比对能力,在对接时无需使用SourceID提供的比对接口 应用在线比对 在线人脸应用不具备比对能力,在对接时需要使用SourceID提供的比对接口 FAQ 常见问题解答 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-08 14:48:39 "},"quick-get-start/general-application-docking.html":{"url":"quick-get-start/general-application-docking.html","title":"单点对接","keywords":"","body":"单点对接 SID向应用提供CAS和OAuth2.0两种单点登录认证方式: CAS单点对接说明 应用通过调用CAS认证接口,实现与SID的单点对接。 从结构上看,CAS 包含两个部分: CAS Server 和 CAS Client。CAS Server 需要独立部署,主要负责对用户的认证工作;CAS Client 负责处理对客户端受保护资源的访问请求,需要登录时,重定向到 CAS Server。应用和SID的角色分别对应CAS Client、CAS Server,因此,应用需实现CAS Client功能以对接SID(CAS Server)。 OAuth2.0单点对接说明 OAuth协议是一种安全协议,允许用户授权第三方应用访问其储存在“其他服务提供者”上的信息,而不需要将用户名和密码提供给第三方应用或分享用户数据的所有内容。 OAuth2.0协议描述了4种客户端应用程序获取访问令牌(代表用户对客户端访问其数据权限的许可)的模式,各种模式的应用场景如下: authorization code:授权码模式 功能最完整、流程最严密的授权模式,通常使用在公网的开放平台中。适用于有自己的服务器的应用,授权码是一个一次性临时凭证,用来换取 access_token 和 refresh_token。一旦换取成功,code 立即作废,不能再使用第二次。 resource owner password credentials:密码模式 一般在内部系统中使用,调用者以用户为单位。用户向客户端提供自己的用户名和密码,向“其他服务提供者”换取 access_token 。 client credentials:客户端模式 一般在内部系统之间的API调用,两个平台之间调用,调用者以平台为单位。如第三方,或者调用者是一个后端模块,没有用户界面时,可以使用客户端模式。鉴权服务器直接对客户端进行身份验证,验证通过后,返回 token。 implicit:简化模式 适用于纯静态页面应用。该模式下,access_token 容易泄露且不可刷新。 SID提供了授权码模式、密码模式、客户端模式接口与应用进行单点对接,接口详见:OAuth2.0认证接口。 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-07 15:07:24 "},"quick-get-start/face-docking.html":{"url":"quick-get-start/face-docking.html","title":"人脸对接","keywords":"","body":"人脸对接 人脸业务说明 SID人脸提供统一标准进行用户照片采集和入库,以及照片管理。通过对接多家厂商或应用,实现人脸照片分析、认证等功能,并对外提供人脸接口服务。 人脸对接说明 主要从以下3方面进行人脸对接: 人脸厂商对接。人脸厂商提供对接API(由SID制定),SID进行调用,实现照片分析、认证、静默活体检测等功能。 对接过程中,人脸厂商需按照【人脸厂商标准接口】实现相关接口,以供SID调用。 人脸应用对接。人脸应用提供API(由SID制定),SID进行调用,实现照片分析功能。相较于人脸厂商,人脸应用只向SID提供特性接口(照片分析),而SID所使用的认证等功能由人脸厂商提供。 对接过程中,人脸应用需按照【人脸应用标准接口】实现相关接口,以供SID调用。 人脸对外接口服务。SID提供人脸接口服务,服务使用者进行接口调用。 对接过程中,人脸服务使用者按照【人脸对外接口】调用API即可。 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-08 14:55:00 "},"quick-get-start/group-docking.html":{"url":"quick-get-start/group-docking.html","title":"群组对接","keywords":"","body":"群组对接 群组业务说明 用户在SID中新建一个群组并推送群组数据后,应用将通过其同步接口接收请求数据,并根据请求进行节点和人员的查询、新增、修改、删除,与SID同步。 对于学校不同应用的群组对接: 由锐捷制定标准同步接口,包括群组节点管理和人员管理,应用需实现该接口进行群组同步。适用于校内应用。 由应用制定标准同步接口,锐捷需进行适当的对接开发。适用于企业微信、钉钉等应用。 群组对接技术说明 群组同步方式:推送方式,即SID调用应用同步接口进行实时或定时增量推送,也可手动推送(增量和全量方式)。 对于校内应用,同步接口开发需采用RESTful方式。 对于企业微信、钉钉等应用,需联系锐捷研发,并提供组织或群组对接API,锐捷研发人员将对SID进行定制化开发。 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-07 11:08:38 "},"application-register.html":{"url":"application-register.html","title":"应用注册","keywords":"","body":"应用注册 应用在SID中注册后,SID将根据填写信息生成应用ID、应用秘钥(若有必要,可向锐捷研发人员索要)。应用注册步骤为: 1、新增对接应用。 2、填写应用基础信息。 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-07 17:36:28 "},"get-access-token.html":{"url":"get-access-token.html","title":"获取Token方式一:获取access_token","keywords":"","body":"获取access_token 说明 获取access_token是调用SourceID业务接口的第一步,相当于创建了一个登录凭证,相关业务API接口都需要依赖于access_token来鉴权调用者身份。因此开发者,在使用业务接口前,要明确access_token的颁发来源,使用正确的access_token。 获取token 请求方式: GET(HTTPS或HTTP) 请求地址:http://{server}/oauth2.0/accessToken?grant_type=client_credentials&client_id=xxx&client_secret=xxx 注:https方式类似。 请求参数包: 无 请求参数说明: 参数 必须 说明 grant_type 是 客户端模式,这里固定为client_credentials client_id 是 应用id client_secret 是 应用秘钥 scope 否 权限列表,以空格分隔,空为默认 返回结果: { \"access_token\": \"AT-1-IWyhZhU1hKKvWPddAJpdHRN2ECu08Ypo\", \"token_type\": \"bearer\", \"expires_in\": 28800, \"refresh_token\": \"RT-1-cvHg23sAYRfu-1h8e57U9PSGK1qyL-mW\" } 参数说明: 参数 说明 access_token 访问令牌 token_type 令牌类型 expires_in 令牌有效期 refresh_token 刷新令牌 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-07 19:39:59 "},"get-JWT.html":{"url":"get-JWT.html","title":"获取Token方式二:获取JWT","keywords":"","body":"获取JWT 说明 获取Json web token(JWT)和access_token类似,是获取凭证的另一种方式。是调用SourceID业务接口的第一步,相当于创建了一个登录凭证,相关业务API接口都需要依赖于JWT来鉴权调用者身份。因此开发者,在使用业务接口前,要明确JWT的颁发来源,使用正确的JWT。 获取token 请求方式: POST(HTTPS或HTTP) 请求地址: http://{server}/oauth2.0/jwt 注:https方式类似。 请求参数包: { \"username\":xxx, \"password\":xxx } 请求参数说明: 参数 必须 说明 username 是 应用唯一标识,对应应用ID password 是 应用秘钥 返回结果: { \"token\": \"xxx\", \"expires_in\": xxx } 参数说明: 参数 说明 token 访问令牌 expires_in 令牌有效期 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-07 19:40:37 "},"linkid/user/introduction/":{"url":"linkid/user/introduction/","title":"开发前须知","keywords":"","body":"开发前须知 用户接口规范说明 用户接口调用授权 用户数据获取授权 用户接口规范说明: 用户信息返回, 以国标为准, 属性名返回为大写, 文档示例仅为参考, 属性可随配置增减 分页接口, 分页参数属性是驼峰式, 以文档示例为准 分页接口, 数据内容部分,属性名返回为大写, 文档示例仅为参考, 属性可随配置增减 用户接口调用授权: 获取accessToken 设置请求头 Authorization: Bearer {access_token} 用户数据授权: ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-08 11:33:19 "},"linkid/user/public/interface/user-external-api.html":{"url":"linkid/user/public/interface/user-external-api.html","title":"用户信息对外接口","keywords":"","body":"用户信息对外API 用户信息对外api描述SID向应用提供的标准接口,以便外部应用调用。标准接口如下: 根据学工号获取身份平台用户信息 用户同步 微哨在用接口-应用同步用户信息 微哨在用接口-根据学工号查询用户信息 微哨在用接口-增量同步用户 一、根据学工号获取身份平台用户信息 根据学工号获取身份平台用户信息 请求⽅式: GET(HTTPS或HTTP) 请求地址: http://self.xxx.edu.cn/linkid/api/aggregate/user/public/userInfo/{userId} 注:https方式类似。 请求参数: userId: 学工号 参数说明: 参数 类型 是否必须 说明 userId String 是 用户的学工号 返回结果: { \"code\": 200, \"message\": \"OK\", \"data\": { \"XH\": \"2220184875\", \"XM\": \"张4875\", \"IDCARD\": \"3454566531\", \"BJM\": \"0\", \"SZBH\": \"433898\", \"ZZMM\": \"共青团员\", \"KLMC\": \"理工类\", \"CSD\": \"湖北\", \"objectId\": \"5d1c52e1ee25e001c51a1da5\", \"XSDQZTM\": \"导入待生效\", \"CSRQ\": \"2000-09-01\", \"SFZJLX\": \"居民身份证\", \"XB\": \"女性\", \"SZDW\": [\"201000\"], \"MZ\": \"汉族\", \"LASTCHANGEPASSWORDTIME\": \"2019-07-02T16:00:00.000+0000\" } } 参数说明: 参数 类型 说明 code int 返回状态code message String 返回状态消息 data 自定义对象 返回值的自定义对象 XH String 学号, 用户为学生时返回, 教工不返回 GH String 工号, 用户为教工时返回, 学生不返回 XM String 姓名 SFLBDM String 参照学校真实“标准”配置 LASTCHANGEPASSWORDTIME Double 上次修改密码时间 更多返回信息 更多返回信息含义,请查看标准 二、用户同步 当业务系统需要某个部门、班级的全部用户信息时,可以通过API同步身份平台的相关用户信息。 请求⽅式: POST(HTTPS或HTTP) 请求地址: http://self.xxx.edu.cn/linkid/api/aggregate/user/public/pageQueryUsers 注:https方式类似。 请求参数: { \"currentPage\": 1, \"pageSize\": 10 } 参数说明: 参数 类型 是否必须 说明 currentPage int 是 当前页 pageSize int 是 每页返回记录数 返回结果: { \"code\": 200, \"message\": \"OK\", \"data\": { \"userList\": [{ \"XH\": \"2220184875\", \"XM\": \"张4875\", \"IDCARD\": \"3454566531\", \"BJM\": \"0\", \"SZBH\": \"433898\", \"ZZMM\": \"共青团员\", \"KLMC\": \"理工类\", \"CSD\": \"湖北\", \"objectId\": \"5d1c52e1ee25e001c51a1da5\", \"XSDQZTM\": \"导入待生效\", \"CSRQ\": \"2000-09-01\", \"SFZJLX\": \"居民身份证\", \"XB\": \"女性\", \"SZDW\": [\"201000\"], \"MZ\": \"汉族\", \"LASTCHANGEPASSWORDTIME\": \"2019-07-02T16:00:00.000+0000\" } ], \"currentPage\": 1, \"pageSize\": 10, \"aggregatePageSortDtos\": null, \"totalPages\": 9, \"totalAmount\": 89 } } 参数说明: 参数 类型 说明 code int 返回状态code message String 返回状态消息 data 自定义对象 返回值的自定义对象 currentPage int 当前页 pageSize int 每页返回记录数 totalPages int 总页数 totalAmount int 总记录数 userList List 用户信息列表, 用户信息返回参考 根据学工号获取身份平台用户信息接口 更多返回信息 更多返回信息含义,请查看标准 三、微哨在用接口-应用同步用户信息 微哨通过配置认证api返回的属性, 获取对应的用户信息。 请求⽅式: POST(HTTPS或HTTP) 请求地址: http://self.xxx.edu.cn/linkid/service/user/applicationconfig/userinfo 注:https方式类似。 请求参数: { \"usertype\":\"02\", \"currentPage\":0, \"pageSize\":10 } 参数说明: 参数 类型 是否必须 说明 currentPage int 是 当前页 pageSize int 是 每页返回记录数 usertype string 是 人员类型, 默认:教职工01、本科生02、研究生03、临时人员05, 实际以学校现场配置位置 返回结果: { \"code\": 200, \"message\": \"OK\", \"data\": { \"totalAmount\": 1, \"userPropertyNameValueDtos\": [ [ { \"propertyValue\": \"女性\", \"propertyName\": \"XB\" }, { \"propertyValue\": \"中国\", \"propertyName\": \"GJ\" }, { \"propertyValue\": \"888888888888888888\", \"propertyName\": \"IDCARD\" }, { \"propertyValue\": \"\", \"propertyName\": \"SFZJYXQ\" }, { \"propertyValue\": \"1986-12-01\", \"propertyName\": \"CSRQ\" }, { \"propertyValue\": \"叶雪雪\", \"propertyName\": \"XM\" }, { \"propertyValue\": \"\", \"propertyName\": \"XMPY\" }, { \"propertyValue\": \"\", \"propertyName\": \"CYM\" }, { \"propertyValue\": \"中国共产党党员\", \"propertyName\": \"ZZMM\" }, { \"propertyValue\": \"1567111106\", \"propertyName\": \"XH\" }, { \"propertyValue\": \"02\", \"propertyName\": \"SFLBDM\" }, { \"propertyValue\": \"汉族\", \"propertyName\": \"MZ\" }, { \"propertyName\": \"EMAIL\" } ] ] } } 参数说明: 参数 类型 说明 code int 返回状态code message String 返回状态消息 data 自定义对象 返回值的自定义对象 totalAmount int 总记录数 userPropertyNameValueDtos List 用户信息列表 propertyName string 用户属性名称 propertyValue object 用户属性的值 更多用户属性 更多用户属性, 请查看标准 四、微哨在用接口-根据学工号查询用户信息 微哨通过配置认证api返回的属性, 获取对应的用户信息。 请求⽅式: POST(HTTPS或HTTP) 请求地址: http://self.xxx.edu.cn/linkid/api/user/public/userinfo/bypropertynames 注:https方式类似。 请求参数: { \"propertyNames\":[ \"GH\", \"XH\" ], \"value\":\"1\" } 参数说明: 参数 类型 是否必须 说明 propertyNames list 是 用户属性的名称, 根据学工号查询传GH和XH value string 是 用户属性的值, 学工号 返回结果: { \"code\": 200, \"message\": \"OK\", \"data\": [ { \"propertyValue\": \"居民身份证\", \"propertyName\": \"SFZJLXM\" }, { \"propertyValue\": true, \"propertyName\": \"ISINITIALPASSWORD\" }, { \"propertyValue\": \"男性\", \"propertyName\": \"XB\" }, { \"propertyValue\": \"中国\", \"propertyName\": \"GJ\" }, { \"propertyValue\": \"true\", \"propertyName\": \"ZHZT\" }, { \"propertyValue\": \"511623199802265719\", \"propertyName\": \"IDCARD\" }, { \"propertyValue\": \"\", \"propertyName\": \"SFZJYXQ\" }, { \"propertyValue\": \"1\", \"propertyName\": \"GH\" }, { \"propertyValue\": \"在职\", \"propertyName\": \"JZGZT\" }, { \"propertyValue\": \"2020-09-15\", \"propertyName\": \"CSRQ\" }, { \"propertyValue\": \"xs教职工测试14\", \"propertyName\": \"XM\" }, { \"propertyValue\": \"\", \"propertyName\": \"XMPY\" }, { \"propertyValue\": \"\", \"propertyName\": \"CYM\" }, { \"propertyValue\": \"群众\", \"propertyName\": \"ZZMM\" }, { \"propertyValue\": \"\", \"propertyName\": \"DZXX\" }, { \"propertyValue\": \"\", \"propertyName\": \"DH\" }, { \"propertyName\": \"YDDH\" }, { \"propertyValue\": \"\", \"propertyName\": \"CSD\" }, { \"propertyValue\": \"01\", \"propertyName\": \"SFLBDM\" }, { \"propertyValue\": \"2020-10-21T16:00:00.000+0000\", \"propertyName\": \"LASTCHANGEPASSWORDTIME\" }, { \"propertyValue\": \"汉族\", \"propertyName\": \"MZ\" }, { \"propertyName\": \"EMAIL\" }, { \"propertyValue\": [ \"RJXZZZ\" ], \"propertyName\": \"SZDW\" }, { \"propertyValue\": \"5f91215e74b038000764975d\", \"propertyName\": \"objectId\" } ] } 参数说明: 参数 类型 说明 code int 返回状态code message String 返回状态消息 data 自定义对象 返回值的自定义对象 propertyName string 用户属性名称 propertyValue object 用户属性的值 更多用户属性 更多用户属性, 请查看标准 五、微哨在用接口-增量同步用户 微哨增量从SourceId同步用户。 请求⽅式: POST(HTTPS或HTTP) 请求地址: http://self.xxx.edu.cn/linkid/api/user/dataSource/public/pageQuery/time 注:https方式类似。 请求参数: { \"current\":1, \"size\":\"1\", \"startTime\":\"2010-01-01 00:00:00\", \"endTime\":\"\" } 参数说明: 参数 类型 是否必须 说明 current list 是 当前页 size string 是 每页返回数据量 startTime string 是 查询这个时间之后有更新的用户数据, 格式:\"yyyy-MM-dd hh:mm:ss\" endTime string 否 查询这个时间之前有更新的用户数据,格式:\"yyyy-MM-dd hh:mm:ss\" 返回结果: { \"code\": 200, \"message\": \"OK\", \"data\": { \"total\": 100, \"users\": [ { \"GH\": \"R00166\", \"updatedTime\": 1604913327223, \"SFLBDM\": \"01\", \"szdwAndGwmc\": [ { \"szdw\": \"R5f91269d45fc080006eab46b\", \"gwmc\": null, \"type\": null, \"szdwSource\": \"RG_SourceID\" } ], \"isDeleted\": false, \"XM\": \"xs教职工测试14\", \"LABEL\": [], \"EMAIL\": null, \"SZDW\": [ \"R5f91269d45fc080006eab46b\" ] } ] } } 参数说明: 参数 类型 说明 code int 返回状态code message String 返回状态消息 data 自定义对象 返回值的自定义对象 total int 总数 GH string 用户属性名称 SFLBDM string 人员类型代码 XM string 姓名 SZDW list 所在单位代码, 一个人有多部门 szdwAndGwmc list 用户三元组数据 更多用户属性 更多用户属性, 请查看标准 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-08 19:07:47 "},"linkid/user/faq/faq.html":{"url":"linkid/user/faq/faq.html","title":"FAQ","keywords":"","body":"FAQ 待补充 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-11-30 10:33:38 "},"linkid/authentication/introduction/cas-README.html":{"url":"linkid/authentication/introduction/cas-README.html","title":"CAS单点对接","keywords":"","body":"CAS单点对接 准备工作 网络检查 应用注册、配置 集成CAS Client CAS单点对接 准备工作 在测试或对接之前,应用需做以下3点准备工作: 1、网络检查 检查网络是否互通(如DNS),不通则找学校业务负责人。 2、应用注册、配置 (1)应用注册。 (2)单点登录对接配置-进入配置。 (3)配置CAS单点登录对接相关信息。 注: 回调地址采用地址匹配模式,可匹配该地址的子集地址。 cas登出方式有两种方式: 前端登出(FRONT_CHANNEL):用户点击logout链接(链接地址为cas登出地址)时,浏览器跳转到cas登出地址,cas登出页面给对接应用发送jsonp的登出请求,达到登出效果。注意:前端登出不支持cas会话超时自动登出。 后端登出(BACK_CHANNEL):是当TGT超时时,或者用户通过链接访问cas登出地址时,cas服务器直接给应用服务器发送登出请求,以达到登出效果。 (4)启用配置。 3、集成CAS Client (1)配置maven环境依赖。 org.jasig.cas.client cas-client-core 3.5.0 也可从https://mvnrepository.com/artifact/org.jasig.cas.client/cas-client-core地址下载。 (2)配置应用程序部署描述文件 (web.xml) 说明: 下文内{server}表示sso地址,示例:http://ljw.sso.rghall.com.cn。 sso的登录地址、ticket验证地址、登出地址详见:CAS认证接口。 1)必备配置。设置serverName、监听类。serverName为登陆成功或者退出成功的应用回调地址。 serverName http://localhost:8080 org.jasig.cas.client.session.SingleSignOutHttpSessionListener 2)配置AuthenticationFilter(需要配置sso登录地址)。 AuthenticationFilter的作用是用于拦截SSO登陆请求的,当你提交的request符合SSO登陆规则,CAS client会通过这个filter将登陆请求转向到CAS server的登陆界面。因为这是第一步,所以它要在最上面。 CAS Authentication Filter org.jasig.cas.client.authentication.AuthenticationFilter casServerLoginUrl {server}/login CAS Authentication Filter /* 3)配置TicketValidationFilter(需要配置ticket验证地址)。 用于拦截登陆返回的跳转请求的。当CAS server确认登陆用户名密码后,会返回一个server ticket,这个ticket会由应用服务器上的CAS client再送回CAS server进行验证,用于防止仿冒攻击的。 CAS Validation Filter org.jasig.cas.client.validation.Cas30ProxyReceivingTicketValidationFilter casServerUrlPrefix {server}/p3 redirectAfterValidation true tolerance 5000 CAS Validation Filter /* 注: org.jasig.cas.client.validation.Cas30ProxyReceivingTicketValidationFilter为CAS3.0协议。CAS2.0协议请配置org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter,同时配置:casServerUrlPrefix为{server},不带“/p3”。 4)配置HttpServletRequestWrapperFilter。 目的是将CAS server返回的信息封装到Http request里面,这样客户端就可以用request.getRemoteUser()来获取用户名等信息了。 CAS HttpServletRequest Wrapper Filter org.jasig.cas.client.util.HttpServletRequestWrapperFilter CAS HttpServletRequest Wrapper Filter /* 5)配置AssertionThreadLocalFilter。 是用于前端程序(通常是前端脚本程序)访问,因为这个时候无法通过request来获取信息。 CAS Assertion Thread Local Filter org.jasig.cas.client.util.AssertionThreadLocalFilter CAS Assertion Thread Local Filter /* (6)配置SingleSignOutFilter。 用于拦截登出路径,清除登录信息。 CAS Single Sign Out Filter org.jasig.cas.client.session.SingleSignOutFilter CAS Single Sign Out Filter /* CAS单点对接 准备工作完成后,开发人员可进行测试或单点对接。 对接成功后,可使用如下代码获取登陆用户名和用户信息: //在应用程序中获取用户信息 AttributePrincipal principal = (AttributePrincipal)request.getUserPrincipal(); String username = principal.getName(); //获取用户属性的示例代码如下: Map attributes = principal.getAttributes(); String email=attributes.get(\"age\"); //获取需要的属性,key填属性名即可 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-08 16:55:26 "},"linkid/authentication/introduction/oauth-README.html":{"url":"linkid/authentication/introduction/oauth-README.html","title":"OAuth2.0单点对接","keywords":"","body":"OAuth2.0单点对接 准备工作 网络检查 应用注册、配置 OAuth2.0单点对接 准备工作 在测试或对接之前,应用需做以下2点准备工作: 1、网络检查 检查网络是否互通(如DNS),不通则找学校业务负责人。 2、应用注册、配置 (1)应用注册。 (2)单点登录对接配置-进入配置。 (3)配置OAuth2单点登录对接相关信息。 注: 回调地址采用地址匹配模式,可匹配该地址的子集地址。 目前的登出类型为前端登出(FRONT_CHANNEL)。即使用href引用登出地址的方式登出,登出后浏览器跳转到统一认证页面。这种方式要求应用的协议与cas的传输协议一致(当cas是https协议时,则应用也必须是https)。前端登出方式达不到cas会话超时自动登出的效果。 记录下应用ID、应用秘钥,以便应用请求SID认证接口。 (4)启用配置。 OAuth2.0单点对接 准备工作完成后,开发人员调用OAuth2.0认证接口可实现测试或单点对接。 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-08 15:15:02 "},"linkid/authentication/introduction/application-free-certification-README.html":{"url":"linkid/authentication/introduction/application-free-certification-README.html","title":"APP内应用免认证","keywords":"","body":"APP内应用免认证 准备工作 OAuth2.0授权码支持 提供appKey和secret给sso 支持OAuth的三个接口 对接原理 缓存方案建议 准备工作 在对接之前,应用需做以下3点准备工作: 1、APP支持标准的OAuth授权码模式支持 流程简介: 获取code code换token token换用户信息 2、提供appKey和secret给sso 将sso域名注册到APP应用中,并且提供appKey和secret 3、支持OAuth的三个接口 见接口文档 OAuth认证接口。 对接原理 缓存方案建议 通过OAuth验证接口获取成员身份会有一定的时间开销。对于频繁获取成员身份的场景,建议采用如下方案: 应用中的URL链接直接填写企业自己的页面地址 成员操作跳转到步骤1的企业页面时,企业后台校验是否有标识成员身份的cookie信息,此cookie由企业生成 如果没有匹配的cookie,则重定向到OAuth验证链接,获取成员的身份信息后,由企业后台植入标识成员身份的cookie信息 根据cookie获取成员身份后,再进入相应的页面 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-24 14:37:07 "},"linkid/authentication/public/interface/cas-authentication.html":{"url":"linkid/authentication/public/interface/cas-authentication.html","title":"CAS认证接口","keywords":"","body":"CAS认证接口 用户认证 请求验证ticket cas登出 一、用户认证 应用向SID认证服务器请求认证,SID返回认证页面。 请求⽅式: GET(HTTPS或HTTP) 请求地址: http://{server}/login 注:https方式类似。 请求参数: 请求示例: http://ljw.sso.rghall.com.cn/login?service=http://192.168.54.63:8080/user/index 参数说明: 参数 是否必须 说明 service 是 SID要跳转的地址,即SID下发ticket的地址 返回结果: 返回ticket,示例为: http://192.168.54.63:8080/user/index?ticket=ST-368-gChqIqVuq9j83YCG9dw4sh1KDaMrg-sso-fddcfb8db-z9ng2 参数说明: 参数 说明 ticket 票据。ticket参数在service指向的url里,由SID下发 二、请求验证ticket 应用携带SID下发的ticket,请求SID验证ticket的有效性,SID验证成功后返回用户信息。 1、CAS3.0协议请求验证ticket 请求⽅式: GET(HTTPS或HTTP) 请求地址: http://{server}/p3/serviceValidate 注:https方式类似。 请求参数: 请求示例: http://ljw.sso.rghall.com.cn/p3/serviceValidate?ticket=ST-368-gChqIqVuq9j83YCG9dw4sh1KDaMrg-sso-fddcfb8db-z9ng2&service=http://192.168.54.63:8080/user/index 参数说明: 参数 是否必须 说明 ticket 是 SID下发的票据 service 是 和用户验证中的service相同 返回结果: SID返回xml格式的用户信息,如下图: 参数说明: 参数 说明 用户信息 用户信息为xml格式,包括用户登录名。返回的用户属性可在SID中配置。 2、CAS2.0协议请求验证ticket。 请求⽅式: GET(HTTPS或HTTP) 请求地址: http://{server}/serviceValidate 注:https方式类似。 请求参数: 请求示例: http://ljw.sso.rghall.com.cn/serviceValidate?ticket=ST-368-gChqIqVuq9j83YCG9dw4sh1KDaMrg-sso-fddcfb8db-z9ng2&service=http://192.168.54.63:8080/user/index 参数说明: 参数 是否必须 说明 ticket 是 SID下发的票据 service 是 和用户验证中的service相同 返回结果: SID返回xml格式的用户信息,如下图: 参数说明: 参数 说明 用户信息 用户信息为xml格式,包括用户登录名。返回的用户属性可在SID中配置。 三、cas登出 CAS登出。 请求⽅式: GET(HTTPS或HTTP) 请求地址: http://{server}/logout 注:https方式类似。 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-08 16:55:31 "},"linkid/authentication/public/interface/oauth-authentication.html":{"url":"linkid/authentication/public/interface/oauth-authentication.html","title":"OAuth2.0认证接口","keywords":"","body":"OAuth认证接口 授权码模式 密码模式 客户端模式 微信公众号对接 单点登出 一、授权码模式 该模式的授权流程为: 1、跳转到认证中心认证用户。 2、使用code获取access_token。 3、获取用户信息。 1、用户认证 跳转到SID认证中心认证用户。 请求⽅式: GET(HTTPS或HTTP) 请求地址: http://{server}/oauth2.0/authorize 注:https方式类似。 请求参数: 请求示例: http://ljw.sso.rghall.com.cn/oauth2.0/authorize?response_type=code&client_id=test2&redirect_uri=http://192.168.54.63:8080/Oauth2/token 参数说明: 参数 是否必须 说明 response_type 是 授权码模式,这里固定为code client_id 是 应用id redirect_uri 是 应用回调地址 scope 否 权限列表,以空格分隔。 返回结果: 返回code示例: http://192.168.54.63:8080/Oauth2/token?code=OC-51--uDJ5NrI-8OB5wyn2NPXpgfIRLyCtGJT 参数说明: 参数 说明 code SID跳转到redirect_uri时,code参数会附带在该地址中 2、用code获取access_token 使用code获取access_token。 请求⽅式: POST(HTTPS或HTTP) 请求地址: http://{server}/oauth2.0/accessToken 注:https方式类似。 请求头(header): Content-Type:multipart/form-data 请求参数: { \"grant_type\":\"authorization_code\", \"client_id\":\"test2\", \"client_secret\":\"HDRWcOTg56mMty6GNsjF2OZXjwWrfI0Glz8sVJKSacl6QZMX5fX9gFQjkO2z-orn\", \"redirect_uri\":\"http://192.168.54.63:8080/user/index\", \"code\":\"OC-51--uDJ5NrI-8OB5wyn2NPXpgfIRLyCtGJT\" } 参数说明: 参数 是否必须 说明 grant_type 是 授权码模式,这里固定为authorization_code client_id 是 应用id client_secret 是 应用秘钥 redirect_uri 是 应用回调地址 code 是 授权码 返回结果: { \"access_token\":\"AT-98-kkxRFRAp7JP4HvKcooOlTjqEslglCNoU\", \"token_type\":\"bearer\", \"expires_in\":28800, \"refresh_token\":\"RT-7-XuigbD-eb4qSN0LwHBSixvpmv4zCzw21\" } 参数说明: 参数 是否必须 说明 access_token 是 访问令牌 token_type 是 令牌类型 expires_in 是 令牌有效期 refresh_token 否 刷新令牌,该参数只有在SID中将下发刷新令牌勾选为“是”时才会返回 注:获取refresh_token参数的值需先在SID中选择“下发刷新令牌”,如下图: 3、获取用户信息 使用access_token获取用户信息。 请求⽅式: GET/POST(HTTPS或HTTP) 请求地址: http://{server}/oauth2.0/profile 注:https方式类似。 请求头(header): Content-Type:multipart/form-data 注:使用get请求时,不用添加请求头。 请求参数: { \"access_token\":\"AT-98-kkxRFRAp7JP4HvKcooOlTjqEslglCNoU\" } 参数说明: 参数 是否必须 说明 access_token 是 访问令牌 返回结果(老师): { \"active\": true, \"attributes\": { \"DQZTM\": \"在任\", \"DWH\": \"网络信息与综合服务中心\", \"DWM\": \"306000\", \"GH\": \"20042020\", \"PRZWMC\": \"工程师\", \"SFLBDM\": \"01\", \"XBM\": \"男性\", \"XM\": \"xxxx\" \"SFLBMC\": \"xxx\" }, \"id\": \"20042020\", \"client_id\": xxx } 参数说明: 参数 说明 id 用户名 client_id 应用id attributes 用户属性列表 XM 姓名 XBM 性别 SFLBDM 身份类别代码 GH 工号 PRZWMC 职位名称 DWM 单位名 DWH 单位号 DQZTM 当前状态 ZWJBMC 职务级别名称 SFLBMC 身份类别名称 二、密码模式 该模式的授权流程为: 1、获取access_token。 2、获取用户信息。 3、使用刷新令牌获取access_token(该步骤可选)。 1、获取access_token 获取access_token。 请求⽅式: GET(HTTPS或HTTP) 请求地址: http://{server}/oauth2.0/accessToken 注:https方式类似。 请求参数: 请求示例: http://ljw.sso.rghall.com.cn/oauth2.0/accessToken?grant_type=password&client_id=test2&username=R1118&password=12345a 参数说明: 参数 是否必须 说明 grant_type 是 密码模式为password client_id 是 应用id username 是 用户名 password 是 密码 scope 否 权限列表,以空格分隔 返回结果: { \"access_token\": \"AT-1-IWyhZhU1hKKvWPddAJpdHRN2ECu08Ypo\", \"token_type\": \"bearer\", \"expires_in\": 28800, \"refresh_token\": \"RT-1-cvHg23sAYRfu-1h8e57U9PSGK1qyL-mW\" } 参数说明: 参数 是否必须 说明 access_token 是 访问令牌 token_type 是 令牌类型 expires_in 是 令牌有效期 refresh_token 否 刷新令牌,该参数只有在SID中将下发刷新令牌勾选为“是”时才会返回 2、获取用户信息 使用access_token获取用户信息。 请求⽅式: GET/POST(HTTPS或HTTP) 请求地址: http://{server}/oauth2.0/profile 注:https方式类似。 请求头(header): Content-Type:multipart/form-data 注:使用get请求时,不用添加请求头。 请求参数: { \"access_token\":\"AT-1-IWyhZhU1hKKvWPddAJpdHRN2ECu08Ypo\" } 参数说明: 参数 是否必须 说明 access_token 是 访问令牌 返回结果(老师为例): { \"attributes\": { \"DQZTM\": \"在任\", \"DWH\": \"网络信息与综合服务中心\", \"DWM\": \"306000\", \"GH\": \"20042020\", \"PRZWMC\": \"工程师\", \"SFLBDM\": \"01\", \"XBM\": \"男性\", \"XM\": \"xxxx\" \"SFLBMC\": \"xxx\" }, \"id\": \"20042020\" } 参数说明: 参数 说明 id 用户名 attributes 用户属性列表 XM 姓名 XBM 性别 SFLBDM 身份类别代码 GH 工号 PRZWMC 职位名称 DWM 单位名 DWH 单位号 DQZTM 当前状态 ZWJBMC 职务级别名称 SFLBMC 身份类别名称 3、使用刷新令牌获取access_token 通过刷新令牌获取access_token。 请求⽅式: GET/POST(HTTPS或HTTP) 请求地址: http://{server}/oauth2.0/accessToken 注:https方式类似。 请求头(header): Content-Type:multipart/form-data 注:使用get请求时,不用添加请求头。 请求参数: { \"grant_type\":\"refresh_token\", \"client_id\":\"test2\", \"client_secret\":\"JXuRHUGzt5TEoKZGof4Dxg-cOPFotpWhu--cujis8JO0Y7qqN4EUhr4kybc7nDPB\", \"refresh_token\":\"RT-7-XuigbD-eb4qSN0LwHBSixvpmv4zCzw21\" } 参数说明: 参数 是否必须 说明 grant_type 是 固定为refresh_token client_id 是 应用id client_secret 是 应用秘钥 refresh_token 是 刷新令牌 返回结果: { \"access_token\": \"AT-1-IWyhZhU1hKKvWPddAJpdHRN2ECu08Ypo\", \"token_type\": \"bearer\", \"expires_in\": 28800 } 参数说明: 参数 说明 access_token 访问令牌 token_type 令牌类型 expires_in 令牌有效期 三、客户端模式 该模式的授权流程为: 1、获取access_token。 1、获取access_token 获取access_token。 请求⽅式: GET(HTTPS或HTTP) 请求地址: http://{server}/oauth2.0/accessToken 注:https方式类似。 请求参数: 请求示例: http://ljw.sso.rghall.com.cn/oauth2.0/accessToken?grant_type=client_credentials&client_id=test2&client_secret=JXuRHUGzt5TEoKZGof4Dxg-cOPFotpWhu--cujis8JO0Y7qqN4EUhr4kybc7nDPB 参数说明: 参数 是否必须 说明 grant_type 是 客户端模式,这里固定为client_credentials client_id 是 应用id client_secret 是 应用秘钥 scope 否 权限列表,以空格分隔 返回结果: { \"access_token\": \"AT-1-IWyhZhU1hKKvWPddAJpdHRN2ECu08Ypo\", \"token_type\": \"bearer\", \"expires_in\": 28800 } 参数说明: 参数 说明 access_token 访问令牌 token_type 令牌类型 expires_in 令牌有效期 四、微信公众号对接 1、跳转认证 跳转到SID认证中心认证用户。 请求⽅式: GET(HTTPS或HTTP) 请求地址: http://{server}/oauth2.0/authorize 注:https方式类似。 请求参数: 请求示例: http://ljw.sso.rghall.com.cn/oauth2.0/authorize?response_type=code&client_id=test2&redirect_uri=xxx&openid=xxx&from=xxx 参数说明: 参数 是否必须 说明 response_type 是 授权码模式,值为code client_id 是 应用id redirect_uri 是 应用回调地址 openid 否 用户的微信openid, openid和unionid只需传一个 unionid 否 用户的微信unionid, openid和unionid只需要传一个 from 是 认证来源, 默认为应用的appid scope 否 权限列表,以空格分隔 返回结果: 返回code 参数说明: 参数 说明 code 授权码。SID跳转到redirect_uri时,code参数会附带在该地址中 子应用按照OAuth2.0 授权码模式接入,具体接口请参考:授权码模式 五、单点登出 登出地址为/logout。 请求⽅式: GET(HTTPS或HTTP) 请求地址: http://{server}/logout 注:https方式类似。 请求示例: http://ljw.sso.rghall.com.cn/logout ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-08 17:01:41 "},"linkid/authentication/public/interface/application-free-certification.html":{"url":"linkid/authentication/public/interface/application-free-certification.html","title":"APP内应用免认证接口","keywords":"","body":"APP内应用免认证接口 OAuth2.0标准认证接口 获取code 通过code换取token 通过token换取用户信息 一、获取code Sid请求APP获取code的接口 请求⽅式: GET(HTTPS或HTTP) 请求地址: https://xxx.com.cn/oauth/authorize 注:https方式类似。 请求参数: 请求示例: https://xxx.com.cn/oauth/authorize?client_id=[AppKey]&redirect_uri=[urlEncode(应用回调地址)]&response_type=code&scope=base_api&state=xxx 参数说明: 参数 是否必须 说明 client_id 是 应用唯一标识,即应用注册时获得的 App Key redirect_uri 是 授权后重定向的回调链接地址,注意需使用 urlEncode 对链接进行处理 response_type 是 返回类型,请填写 code 。 scope 是 作用域,与注册时匹配。 base_api 可以访问基础API且支持静默模式不弹出授权提醒; all 可以使用所有高级API。通过开放平台创建的应用默认授予 base_api 作用域,可申请 all 权限;在微哨管理平台创建的应用同时授予 base_api 和 all 权限。 state 是 重定向后会带上 state 参数。开发者可以用此参数验证请求有效性,或记录用户请求授权页前的位置。同时此参数可用于防止跨站请求伪造(CSRF)攻击 返回结果: 因为应用嵌入在APP内部,此时APP应该是登录状态,在一系列校验好,会重定向到redirect_uri并且带着code和state 示例: https://redirect_uri?code=xxxxx&state=xxx 参数说明: 参数 说明 code 下发的code code 请求code时带的参数 二、通过 code 换取网页授权 AccessToken 请求⽅式: POST(HTTPS或HTTP) 请求地址: http://{server}/oauth/token 注:https方式类似。 请求参数: 示例: grant_type=authorization_code&client_id=[AppKey]&client_secret=[AppSecret]&code=[code]&redirect_uri=[urlEncode(应用回调地址)] 参数说明: 参数 是否必须 说明 grant_type 是 固定值 authorization_code。 client_id 是 应用唯一标识,即应用注册时获得的 App Key。 client_secret 是 应用密钥,即应用注册时获得的 App Secret。 code 是 授权票据,即第一步应用回调地址获得的 code 参数值 redirect_uri 是 应用回调地址 返回结果: { \"access_token\": \"fDanz0ydkCqVsgSoze7mrCnwJIsN0dL\", \"expires_in\": \"1209600\", \"scope\": \"base_api\", \"refresh_token\": \"HhbiRKzjVnKdvGfmuGjvh3Clm4AIMqV8\", \"token_type\": \"Bearer\" } 参数说明: 参数 说明 access_token 下发的token expires_in 有效期 scope 作用域 三、获取用户信息 获取用户信息。 请求⽅式: GET(HTTPS或HTTP) 请求地址: http://{server}/profile?access_token=[AccessToken] 注:https方式类似。 返回结果: { \"name\": \"张三\", \"student_number\": \"zhangsan\" } 参数说明: 参数 说明 name 姓名 student_number 学工号 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-24 14:37:07 "},"linkid/authentication/faq/faq.html":{"url":"linkid/authentication/faq/faq.html","title":"FAQ","keywords":"","body":"FAQ 对接前提:检查网络是否互通 对接前提:检查网络是否互通(不通则找学校业务负责人) 1、查看是否能Ping通sso域名,示例如图: (1)通,联系锐捷方人员找出报错原因并解决。 (2)不通,继续查看是否设置了DNS,示例如图: 上图中IPv4 DNS服务器没有值,因此未设置DNS。 1)设置了DNS,联系锐捷方人员找出报错原因并解决。 2)未设置DNS(没有DNS联系学校业务负责人获取)时,请设置DNS,设置方式示例如图: 在上图中的首选DNS服务器中设置DNS。 设置好DNS后重新调试,若仍出现报错信息,联系锐捷方人员找出报错信息并解决。 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-07 15:32:50 "},"linkid/organization/introduction/":{"url":"linkid/organization/introduction/","title":"开发前须知","keywords":"","body":"开发前须知 组织接口规范说明 组织接口调用授权 组织数据获取授权 组织接口规范说明: 各类数据内容返回, 属性名为驼峰式, 以文档示例为准 分页接口, 分页参数属性是驼峰式, 以文档示例为准 组织接口调用授权: 获取accessToken 设置请求头 Authorization: Bearer {access_token} 组织数据授权: ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-08 11:38:27 "},"linkid/organization/public/interface/organization-external-api.html":{"url":"linkid/organization/public/interface/organization-external-api.html","title":"组织信息对外接口","keywords":"","body":"组织信息对外API 组织信息对外api描述SID向应用提供的标准接口,以便外部应用调用。标准接口如下: 根据组织id获取所有部门id 根据部门id查询部门详细信息 一、根据组织id获取所有部门id 当业务系统要同步身份平台的部门信息时, 需要根据组织查询所有部门id 请求⽅式: POST(HTTPS或HTTP) 请求地址: http://self.xxx.edu.cn/linkid/api/organization/public/findAllSonOrganizationIds 注:https方式类似。 请求参数: [\"RJXZZZ\"] 参数说明: 参数 类型 是否必须 说明 request body 列表 是 组织id 返回结果: { \"code\": 200, \"message\": \"OK\", \"data\": [ \"RJXZZZ\", \"R5f91237eef72960006ea0d2d\" ] } 参数说明: 参数 类型 说明 code int 返回状态code message String 返回状态消息 data 自定义对象 返回值为部门id列表 二、根据部门id查询部门详细信息 当业务系统要同步身份平台的部门信息时, 需要根据组织查询所有部门id, 然后根据部门id查询部门详细信息 请求⽅式: GET(HTTPS或HTTP) 请求地址: http://self.xxx.edu.cn/linkid/api/organization/public/findById/{id} 注:https方式类似。 请求参数: 请求示例: https://ljw.sso.rghall.com.cn/linkid/api/organization/public/findById/R5f91237eef72960006ea0d2d 参数说明: 参数 类型 是否必须 说明 id string 是 部门id 返回结果: { \"code\": 200, \"message\": \"OK\", \"data\": { \"id\": \"R5f91237eef72960006ea0d2d\", \"code\": \"a\", \"desc\": null, \"name\": \"a\", \"parent\": \"RJXZZZ\", \"category\": \"未分类部门\", \"createUser\": null, \"address\": null, \"tel\": null, \"official\": true, \"version\": null, \"isDeleted\": false, \"updatedTime\": \"2020-10-22T06:15:26.598+0000\", \"organizationIndex\": 1 } } 参数说明: 参数 类型 说明 code int 返回状态code message String 返回状态消息 data 自定义对象 返回值为部门id列表 id string 部门id code string 部门编码 desc string 部门描述 name string 部门名称 parent string 父部门id category string 部门分类 createUser string 创建人 address string 部门地址 tel string 部门电话 official boolean 是否正式部门 version string 数据版本, 增量采集数据使用 isDeleted boolean 部门是否删除 updatedTime string 部门更新时间 organizationIndex int 部门排序 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-07 20:00:05 "},"linkid/organization/faq/faq.html":{"url":"linkid/organization/faq/faq.html","title":"FAQ","keywords":"","body":"FAQ 待补充 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-11-30 10:33:38 "},"linkid/label/introduction/":{"url":"linkid/label/introduction/","title":"开发前须知","keywords":"","body":"开发前须知 标签接口规范说明 标签接口调用授权 标签数据获取授权 标签接口规范说明: 各类数据内容返回, 属性名为驼峰式, 以文档示例为准 分页接口, 分页参数属性是驼峰式, 以文档示例为准 标签接口调用授权: 获取accessToken 设置请求头 Authorization: Bearer {access_token} 标签数据授权: ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-08 11:40:45 "},"linkid/label/public/interface/label-external-api.html":{"url":"linkid/label/public/interface/label-external-api.html","title":"标签对外接口","keywords":"","body":"标签对外API 标签信息对外api描述SID向应用提供的标准接口,以便外部应用调用。标准接口如下: 查询所有标签分类 通过身份标签分类查询身份标签列表 分页获取标签下的用户 一、查询所有标签分类 当业务系统要同步身份平台的标签信息时, 需要先获取所有的标签分类, 然后根据分类id去获取所有标签 请求⽅式: POST(HTTPS或HTTP) 请求地址: http://self.xxx.edu.cn/linkid/api/aggregate/label/public/find/label/type 注:https方式类似。 请求参数: { \"isAcquiredParents\": true, \"hasDefaultNode\": false, } 参数说明: 参数 类型 是否必须 说明 isAcquiredParents boolean 是 表示当前接⼝是标签分类获取上级分类,当前该功能要求只展示第⼀层分类,且第⼀个元素⽂案展示为-,如果不是就展示所有有权限看到的分类树 hasDefaultNode boolean 是 表示是否在节点树最后加上默认分类节点 返回结果: { code: 200, data: [{ // 分情况展示 key: '-', title: '-' }, { key: 1, title: 分类1 }, { key: 2, title:‘ 分类2’, children: [{ key: 3, title: '分类2.1' }] }, { // 分情况展示 key: 5, title: '默认分类' }] } 参数说明: 参数 类型 说明 code int 返回状态code message String 返回状态消息 data 自定义对象 返回值为部门id列表 key string 标签分类id title string 标签分类名称 二、通过身份标签分类查询身份标签列表 当业务系统要同步身份平台的标签信息时, 需要先获取所有的标签分类, 然后根据分类id去获取所有标签 请求⽅式: GET(HTTPS或HTTP) 请求地址: http://self.xxx.edu.cn/linkid/api/aggregate/label/public/find/by/typeId/{标签分类id} 注:https方式类似。 请求参数: 请求示例: https://ljw.sso.rghall.com.cn/linkid/api/aggregate/label/public/find/by/typeId/5f91237eef72960006ea0d2d 参数说明: 参数 类型 是否必须 说明 typeId string 是 标签分类id 返回结果: { \"code\": 200, \"message\": \"OK\", \"data\": [{ \"id\": \"5dfcbc94432aa42fecac5907\", \"name\": \"xcv\", \"describe\": null, \"applicationId\": null, \"createUser\": \"5c7776dfedd9a9952b3b44c2\", \"organizationId\": \"R5dc275fddc04fa681a724671\", \"organizationName\": \"XXXX\", \"createTime\": \"2019.12.20 20:20\", \"suppleList\": [\"5afc83b4a32ab41ad8ef8411\", \"5afc83b4a32ab41ad8ef8412\"], \"labelTypeId\": \"5df986b4432aa40dd8ee88de\", \"showStatus\": \"public\", \"public\": true }] } 参数说明: 参数 类型 说明 code int 返回状态code message String 返回状态消息 data 自定义对象 返回值为部门id列表 id string 标签id name string 标签名称 describe string 标签描述 createUser string 标签维护人 organizationId string 标签所属部门id organizationName string 标签所属部门名称 suppleList string 标签补充名单, 人员objectId列表 createTime string 标签创建时间 labelTypeId boolean 标签所属分类id showStatus string 标签是否公开展示, “public” 公开, 其他否 public boolean 标签是否公开展示, true 公开, 其他否 三、分页获取标签下的用户 分页获取标签下用户信息 请求⽅式: GET(HTTPS或HTTP) 请求地址: http://self.xxx.edu.cn/linkid/api/user/public/pageQueryUsersByLabelId 注:https方式类似。 请求参数: 示例:https://idself26.rghall.com.cn/linkid/api/user/public/pageQueryUsersByLabelId?number=1&size=10&labelId=5f57697b437baa0006942c68 参数说明: 参数 类型 是否必须 说明 number list 是 当前请求页 size string 是 每页返回值 labelId string 否 标签id 返回结果: { \"code\": 200, \"message\": \"OK\", \"data\": { \"totalElements\": 20, \"totalPages\": 20, \"currentPage\": 1, \"pageSize\": 1, \"content\": [ { \"SFZJYXQ\": \"\", \"DH\": \"\", \"IDCARD\": \"330202199504081118\", \"ZZMM\": \"中国共产党党员\", \"EMAIL\": null, \"JZGZT\": \"在职\", \"szdwAndGwmc\": [ { \"szdw\": \"R5fa3bca7d71c090006a9f6f7\", \"gwmc\": null, \"type\": null, \"szdwSource\": \"RG_SourceID\" }, { \"szdw\": \"R5fab5d6c5951ed000666a80a\", \"gwmc\": null, \"type\": \"rule\", \"szdwSource\": \"RG_SourceID\" }, { \"szdw\": \"R5fab5dc65951ed000666a810\", \"gwmc\": null, \"type\": \"rule\", \"szdwSource\": \"RG_SourceID\" }, { \"szdw\": \"R5fab5e395951ed000666a817\", \"gwmc\": null, \"type\": \"rule\", \"szdwSource\": \"RG_SourceID\" }, { \"szdw\": \"R5fab5e8e5951ed000666a81a\", \"gwmc\": null, \"type\": \"rule\", \"szdwSource\": \"RG_SourceID\" }, { \"szdw\": \"R5fab5f2e5951ed000666a821\", \"gwmc\": null, \"type\": \"rule\", \"szdwSource\": \"RG_SourceID\" } ], \"isDeleted\": false, \"CSD\": \"\", \"CYM\": \"\", \"XMPY\": \"\", \"LABEL\": [ \"5f57697b437baa0006942c68\" ], \"SZDW\": [ \"R5fa3bca7d71c090006a9f6f7\", \"R5fab5d6c5951ed000666a80a\", \"R5fab5dc65951ed000666a810\", \"R5fab5e395951ed000666a817\", \"R5fab5e8e5951ed000666a81a\", \"R5fab5f2e5951ed000666a821\" ], \"GH\": \"1987121\", \"GJ\": \"中国\", \"YDDH\": \"11111111111\", \"XB\": \"女性\", \"MZ\": \"汉族\", \"CSRQ\": null, \"SFZJLXM\": \"居民身份证\", \"SFLBDM\": \"01\", \"XM\": \"许晴\", \"DZXX\": \"\", \"TEL\": \"13603537730\", \"LASTCHANGEPASSWORDTIME\": \"2020-09-07T16:00:00.000+0000\", \"SFLBMC\": \"教职工\" } ] } } 参数说明: 参数 类型 说明 code int 返回状态code message String 返回状态消息 data 自定义对象 返回值的自定义对象 totalElements int 总数 totalPages int 总页数 currentPage int 当前页 pageSize int 每页返回数据 content list 用户列表 GH string 用户属性名称 SFLBDM string 人员类型代码 XM string 姓名 SZDW list 所在单位代码, 一个人有多部门 szdwAndGwmc list 用户三元组数据 LABEL list 用户身上的标签id列表 更多用户属性 更多用户属性, 请查看标准 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-08 17:12:20 "},"linkid/label/faq/faq.html":{"url":"linkid/label/faq/faq.html","title":"FAQ","keywords":"","body":"FAQ 待补充 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-11-30 10:33:38 "},"group/introduction/":{"url":"group/introduction/","title":"开发前须知","keywords":"","body":"开发前须知 应用同步接口开发步骤 该开发步骤主要针对校内应用,应用需根据SID提供的群组对接API开发接口,实现群组同步。 STEP 1:获取APPID、APPSECRET,验证SID请求数据的合法性。验证方法参考:群组推送安全验证。 APPID、APPSECRET是锐捷和应用方约定(任一方提供时,另一方与其保持一致即可)的一组数据。 STEP 2:开发同步接口。 同步接口开发需实现9个接口,便于SID调用,接口分为两类: 群组节点管理 创建群组节点:新建一个群组节点。 更新群组节点:更新某个群组节点的信息。 删除群组节点:删除某个群组节点。 查询某个群组节点:查询某个群组节点及子节点信息。 人员管理 创建成员:新建一个人员信息。 更新成员:更新某个人员的信息。 删除成员:删除某个人员信息。 查询成员:查看某个人员的信息。 获取群组节点下成员:查询某个群组节点下有哪些人员。 STEP 3:建立群组并推送群组数据。 定义并发布一个群组。 建立群组推送任务。 推送群组数据。 STEP 4:测试并修改已编写的接口。 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-07 11:09:57 "},"group/procedure/define-group.html":{"url":"group/procedure/define-group.html","title":"定义并发布一个群组","keywords":"","body":"定义并发布一个群组 新建群组基本信息 创建群组节点 发布群组 定义并发布一个群组将在某个群组分类(避免定义太多群组后,不好管理等问题)下新建一个群组,包括群组基本信息、群组节点、人员,并发布该群组。当群组状态为“已发布”时,该群组数据才能被推送。 新建群组基本信息 新建一个群组的基本信息,包括群组名称、群组分类、群组描述。在身份->群组管理->群组,点击“群组”按钮,即可编辑基本信息。 创建群组节点 进入某个群组。在身份->群组管理->进入群组,点击“进入群组”按钮,即可进入某个群组创建群组节点。 新建群组节点。进入群组后,点击“群组节点管理”标题下的“+”按钮,即可开始编辑群组节点。 选择节点模板。共有6种模板可供选择。 选择群组的数据来源。以“1:1镜像源结构”模板为例,点击“选择组织部门”按钮,选择作为数据源的部门,点击“确定”按钮后,可看到已选的数据源。其中,人员匹配条件用来筛选已选择数据源节点上的用户。 预览群组节点和群组节点上的用户。该步骤可预览群组结构以及每个节点内的人员清单。 查看已创建的群组信息。在结果预览页面,点击“保存”按钮,即可看到新增的群组信息。 发布群组 发布群组。在身份->群组管理->发布当前群组,点击“发布当前群组”按钮,群组状态将变为“已发布”。群组发布后,即可推送该群组数据。 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-11-30 10:33:38 "},"group/procedure/create-push-task.html":{"url":"group/procedure/create-push-task.html","title":"建立群组推送任务","keywords":"","body":"建立群组推送任务 建立群组推送任务将创建一个推送群组数据的任务,执行该任务,即可手动或自动同步数据。 新增数据推送任务。在服务->数据推送服务->新增数据推送任务,点击“新增数据推送任务”按钮,可进入任务配置页面。 配置任务名称、对接参数、自动推送策略。 配置需推送的群组数据,具体分为群组节点和用户: (1)选择需推送的群组节点。点击“选择群组视图”,选择某个已发布的群组,该群组中的节点将会被推送给应用; (2)选择需推送的用户和需同步的用户属性。首先选择需推送的用户类型(身份类型);其次,在“操作”列中点击“选择”按钮,弹出SID用户数据项;最后,选择需与应用端同步的用户属性,点击“确定”按钮保存信息。 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-11-30 10:33:38 "},"group/procedure/push-task.html":{"url":"group/procedure/push-task.html","title":"推送群组数据","keywords":"","body":"推送群组数据 手动推送群组数据 设置自动推送 推送群组数据为SID通过调用应用同步接口,实现与应用的群组同步。 群组推送支持自动同步和手动同步。其中, 自动同步分为每日定时增量同步和实时增量同步。 手动同步分为增量同步和全量同步。 手动推送群组数据 手动推送群组数据分为全量推送和增量推送,其中, 全量推送:推送当前群组的所有数据。 增量推送:推送当前群组相较于上次成功推送数据的变化信息。 在服务->数据推送服务,点击下图操作列中“增量推送”或者“全量推送”按钮,与应用增量或全量同步。 查看当前群组相较于上次成功推送数据的变化信息,点击“立即推送”按钮,可执行推送。 说明: 全量推送时,对于未变动的节点或用户,SID需先调用应用的查询接口,查询有无节点或用户信息,不存在时调用新增接口,应用进行新增操作;存在则调用更新接口,应用进行更新操作。 设置自动推送 只有完成一次数据推送后,保证所有配置是正常的情况下,才能打开自动推送。自动推送只有增量推送方式。 打开自动推送按钮。在服务->数据推送服务->自动推送,点击“自动推送”按钮,设置任务为自动推送。 定时增量、或者实时增量推送数据。点击自动推送按钮后,界面会自动弹出一个配置框,选择每日定时增量、或者实时增量即可。 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-11-30 10:33:38 "},"group/develop/safety-verification.html":{"url":"group/develop/safety-verification.html","title":"群组推送安全验证","keywords":"","body":"群组推送安全验证 SID调用应用接口时,应用需要验证请求的合法性。其中,涉及到的术语、验证原理、验证步骤如下: 术语 术语 介绍 APPID 应用的唯一标识。SID与应用约定的数据 APPSECURITY 应用的密钥。SID与应用约定的数据 Timestamp 时间戳(北京时间毫秒数)。SID调用API时生成的时间戳,附带在SID请求数据中 Signature MD5签名。由(APPID+APPSECURITY+Timestamp)字符串经过MD5后生成。附带在SID请求数据中 验证原理 SID在调⽤应用接口时,会携带Signature和Timestamp。Signature是SID获取到的APPID、APPSECURITY,以及Timestamp三个值通过MD5后形成的。应⽤在接收到SID调用请求时,会通过相同的⽅式(应用将自身的APPID、APPSECURITY和接收到的Timestamp进行MD5形成一个MD5值,并与请求中的Signature匹配)验证请求是否合法。 验证步骤 获取SID请求数据中的Signature、Timestamp。 将APPID、APPSECURITY与SID请求数据中的Timestamp进行MD5加密,形成MD5值。 MD5值形成过程如下: APPID = 12345, APPSECURITY=derfs, Timestamp=1589102903474 , 即12345derfs1589102903474通过md5加密后形成32位⼩写签名。 md5 -s 12345derfs1589102903474 # MD5 (\"12345derfs1589102903474\") = 0e5d920d35e426875dba18f1a0e694a3 将第二步中的MD5值与SID请求数据中的Signature进行比较,相同,则SID请求合法,否则,请求不合法。 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-11-30 10:33:38 "},"group/develop/node-management.html":{"url":"group/develop/node-management.html","title":"群组节点管理","keywords":"","body":"群组节点管理 查询某个群组节点 创建群组节点 更新群组节点 删除群组节点 应用端开发人员需实现群组节点管理相关接口,与SID进行节点同步。 查询某个群组节点 查询某个群组节点及对应子节点信息。 SID调用“创建群组节点”、“更新群组节点”、“删除群组节点”等接口时,会先调用该接口,执行查询操作,提高群组推送的容错性。 请求⽅式:POST(HTTPS或HTTP) 请求地址:http://{server}/app/department/get 注:https方式类似。 请求头: header: Signature (通过MD5获取到的签名值) header: Timestamp(当前时间戳) 请求参数: { \"id\": \"xxxxx\", \"isNeedChildren\": false } 参数说明: 参数 是否必须 说明 id 是 节点id isNeedChildren 是 是否需要获取当前节点下的⼦节点:true-是,false-否 返回结果: { \"errcode\": 200, \"errmsg\": \"ok\", \"department\": [ { \"id\": \"xxxxx\", \"name\": \"锐捷⽹络\", \"code\": \"xxx\", \"parentid\": \"xxxxxx\", \"order\": 1 }, { \"id\": \"xxxxx\", \"name\": \"身份产品管理事业部\", \"code\": \"xxx\", \"parentid\": \"xxxxxx\", \"order\": 1 } ] } 参数说明: 参数 说明 errcode 返回码,成功为200 errmsg 对返回码的文本描述内容 department 节点信息列表 id 节点id name 节点名称 code 节点code parentid 节点⽗亲id order 节点顺序 创建群组节点 新建一个群组节点。 请求⽅式:POST(HTTPS或HTTP) 请求地址:http://{server}/app/department/create 注:https方式类似。 请求头: header: Signature (通过MD5获取到的签名值) header: Timestamp(当前时间戳) 请求参数: { \"name\": \"锐捷⽹络\", \"parentid\": \"xxxxxx\", \"code\": \"1234\", \"order\": 1, \"id\": \"xxxxx\" } 参数说明: 参数 是否必须 说明 name 是 节点名称 parentid 是 节点⽗亲id code 是 节点code order 否 同层节点顺序 id 是 节点 id 返回结果: { \"errcode\": 200, \"errmsg\": \"created\", \"id\": \"xxxxx\" } 参数说明: 参数 说明 errcode 返回码,成功为200 errmsg 对返回码的文本描述内容 id 节点id 更新群组节点 更新某个群组节点的信息。 请求⽅式:POST(HTTPS或HTTP) 请求地址:http://{server}/app/department/update 注:https方式类似。 请求头: header: Signature (通过MD5获取到的签名值) header: Timestamp(当前时间戳) 请求参数: { \"id\": \"xxxxx\", \"name\": \"锐捷⽹络\", \"code\": \"1234\", \"parentid\": \"xxxxxx\", \"order\": 1 } 参数说明: 参数 是否必须 说明 id 是 节点 id name 是 节点名称 code 是 节点code parentid 是 节点⽗亲id order 是 节点顺序 返回结果: { \"errcode\": 200, \"errmsg\": \"updated\" } 参数说明: 参数 说明 errcode 返回码,成功为200 errmsg 对返回码的文本描述内容 删除群组节点 删除某个群组节点。 请求⽅式:GET(HTTPS或HTTP) 请求地址:http://{server}/app/department/delete/{id} 注:https方式类似。 请求头: header: Signature (通过MD5获取到的签名值) header: Timestamp(当前时间戳) 参数说明: 参数 是否必须 说明 id 是 节点 id 返回结果: { \"errcode\": 200, \"errmsg\": \"deleted\" } 参数说明: 参数 说明 errcode 返回码,成功为200 errmsg 对返回码的文本描述内容 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-07 19:58:17 "},"group/develop/personnel-management.html":{"url":"group/develop/personnel-management.html","title":"人员管理","keywords":"","body":"成员管理 查询成员 创建成员 更新成员 删除成员 获取群组节点下成员 应用端开发人员需实现成员管理相关接口,与SID进行人员同步。 查询成员 查询某个人员信息。 SID调用“创建成员”、“更新成员”、“删除成员”等接口时,会先调用该接口,执行查询操作,提高群组推送的容错性。 请求⽅式:GET(HTTPS或HTTP) 请求地址:http://{server}/app/user/get/{id} 注:https方式类似。 请求头: header: Signature (通过MD5获取到的签名值) header: Timestamp(当前时间戳) 参数说明: 参数 是否必须 说明 id 是 学号或工号 返回结果: { \"errcode\":200, \"errmsg\":\"ok\", \"userInfo\":{ \"userId\": \"YT001\", \"name\": \"xxx\", \"xb\": \"1\", \"tel\": \"18732990023\", \"sflbdm\":\"01\", \"departments\":[\"xxxx1\",\"xxxx2\"], \"department\":[\"xxxx1\",\"xxxx2\"] } } 参数说明: 参数 是否必须 说明 errcode 是 返回码,成功为200 errmsg 是 对返回码的文本描述内容 userInfo 是 用户信息 userId 是 学号或⼯号 name 是 用户姓名 xb 否 用户性别:1-⼥,2-男,3-不知 tel 否 ⽤户绑定手机号 sflbdm 是 ⽤户身份类别代码 departments 是 ⽤户所属部⻔ID列表 department 是 ⽤户所属部⻔Code列表 创建成员 新建一个人员信息。 请求⽅式:POST(HTTPS或HTTP) 请求地址:http://{server}/app/user/create 注:https方式类似。 请求头: header: Signature (通过MD5获取到的签名值) header: Timestamp(当前时间戳) 请求参数:说明:在SID中可以配置用户同步信息,即要与应用同步哪些用户属性。 { \"userId\": \"YT001\", \"name\": \"xxx\", \"xb\": \"1\", \"tel\": \"18732990023\", \"sflbdm\":\"01\", \"departments\":[\"xxxx1\",\"xxxx2\"], \"department\":[\"xxxx1\",\"xxxx2\"] } 参数说明: 参数 是否必须 说明 userId 是 学号或⼯号 name 是 用户姓名 xb 否 用户性别:1-⼥,2-男,3-不知 tel 否 ⽤户绑定手机号 sflbdm 是 ⽤户身份类别代码 departments 是 ⽤户所属部⻔ID列表 department 是 ⽤户所属部⻔Code列表 返回结果: { \"errcode\": 200, \"errmsg\": \"created\" } 参数说明: 参数 说明 errcode 返回码,成功为200 errmsg 对返回码的文本描述内容 更新成员 更新某个人员的信息。 请求⽅式:POST(HTTPS或HTTP) 请求地址:http://{server}/app/user/update 注:https方式类似。 请求头: header: Signature (通过MD5获取到的签名值) header: Timestamp(当前时间戳) 请求参数:说明:在SID中可以配置用户同步信息,即要与应用同步哪些用户属性。 { \"userId\": \"YT001\", \"name\": \"xxx\", \"xb\": \"1\", \"tel\": \"18732990023\", \"sflbdm\":\"01\", \"departments\":[\"xxxx1\",\"xxxx2\"], \"department\":[\"xxxx1\",\"xxxx2\"], } 参数说明: 参数 是否必须 说明 userId 是 学号或⼯号 name 是 用户姓名 xb 否 用户性别:1-⼥,2-男,3-不知 tel 否 ⽤户绑定手机号 sflbdm 是 ⽤户身份类别代码 departments 是 ⽤户所属部⻔ID列表 department 是 ⽤户所属部⻔Code列表 返回结果: { \"errcode\": 200, \"errmsg\": \"updated\" } 参数说明: 参数 说明 errcode 返回码,成功为200 errmsg 对返回码的文本描述内容 删除成员 删除某个人员信息。 请求⽅式:GET(HTTPS或HTTP) 请求地址:http://{server}/app/user/delete/{id} 注:https方式类似。 请求头: header: Signature (通过MD5获取到的签名值) header: Timestamp(当前时间戳) 参数说明: 参数 是否必须 说明 id 是 学号或工号 返回结果: { \"errcode\": 200, \"errmsg\": \"deleted\" } 参数说明: 参数 说明 errcode 返回码,成功为200 errmsg 对返回码的文本描述内容 获取群组节点下成员 查询某个群组节点下有哪些人员。 请求⽅式:GET(HTTPS或HTTP) 请求地址:http://{server}/app/user/simplelist/{departmentId} 注:https方式类似。 请求头: header: Signature (通过MD5获取到的签名值) header: Timestamp(当前时间戳) 参数说明: 参数 是否必须 说明 departmentId 是 部门id 返回结果: { \"errcode\":200, \"errmsg\":\"ok\", \"userlist\": [ { \"userId\": \"YT001\", \"name\": \"xxx\", \"xb\": \"1\", \"tel\": \"18732990023\", \"sflbdm\":\"01\", \"departments\":[\"xxxx1\",\"xxxx2\"], \"department\":[\"xxxx1\",\"xxxx2\"] } ] } 参数说明: 参数 是否必须 说明 errcode 是 返回码,成功为200 errmsg 是 对返回码的文本描述内容 userlist 是 ⽤户信息列表 userId 是 学号或⼯号 name 是 用户姓名 xb 否 用户性别:1-⼥,2-男,3-不知 tel 否 ⽤户绑定手机号 sflbdm 是 ⽤户身份类别代码 departments 是 ⽤户所属部⻔ID列表 department 是 ⽤户所属部⻔Code列表 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-23 16:09:39 "},"group/faq/":{"url":"group/faq/","title":"FAQ","keywords":"","body":"FAQ 群组人员删除后,是否自动删除应用端人员 群组人员删除后,是否自动删除应用端人员 视SID是否配置群组回收站而定。 配置回收站:群组人员删除后,不会自动删除应用端人员。 未配置回收站:群组人员删除后,将自动删除应用端人员。 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-11-30 10:33:38 "},"faceid/introduction/":{"url":"faceid/introduction/","title":"开发前须知","keywords":"","body":"开发前须知 人脸实施对接步骤 上图中整体流程为: 锐捷实施人员准备和部署人脸组件服务器。 人脸对接。 人脸厂商对接:厂商方开发由SID制定的【人脸厂商标准接口】,开发完成后,SID调用相关接口实现对接。 人脸应用对接:应用方开发由SID制定的【人脸应用标准接口】,开发完成后,SID调用相关接口实现对接。 人脸对外服务:应用调用SID提供的【人脸对外接口】,进行人脸对接。 人脸组件的服务器准备和部署 具体部署步骤详见:SID人脸环境部署。 人脸厂商、人脸应用对接 人脸厂商对接需开发的接口详见:人脸厂商标准接口。 人脸应用对接需开发的接口详见:人脸应用标准接口。 人脸对外接口应用对接步骤 应用使用SID的人脸服务,即调用人脸对外接口,需在接口调用前进行以下步骤: STEP 1:管理端注册应用。 STEP 2:认证API调用配置。 “进入配置”,然后进行认证API调用配置。 记录下应用的应用ID、应用秘钥,并启用“认证API调用配置”。 STEP 3:配置人脸服务。 点击人脸服务配置的“进入配置”,进而配置人脸服务。 根据页面导航,配置应用的人脸服务(注:应用同步用户数据、应用数据转换必须配置) STEP 4:根据应用的应用ID(对应username)、应用秘钥(对应password)获取token,获取方式请参考:获取JWT。 STEP 5:将token加入Header中,测试或对接人脸服务公共接口。 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-08 19:01:35 "},"faceid/public/interface/face-external-api.html":{"url":"faceid/public/interface/face-external-api.html","title":"人脸对外接口","keywords":"","body":"人脸对外接口 该部分描述SID应向应用提供的标准接口,以便外部应用调用。标准接口如下: 1:1 认证 1:N 认证 增量同步照片 增量同步特征值 通过用户id和照片类型查询照片 检查照片质量 通过用户id list查询用户照片 上传照片 一、1:1 认证接口(特征值或照片) 应用上传一张照片或特征值与 SID中保存的底库照片或特征值进行比对。 请求⽅式: POST(HTTPS或HTTP) 请求地址: http://{server}/faceid/public/auth/compare/userId 注:https方式类似。 请求参数: { \"featureB\":\"xTKzP.....ACAPw==\", \"imageB\":{ \"image\":\"/9j/4AAQSkZJRgAB......OMCuquxOVH//2Q==\", \"ext\":\"jpg\" }, \"userId\" : \"testface\" } 参数说明: 参数 类型 是否必须 说明 featureB String 是 照片的特征值 imageB 自定义对象 是 照片对象 userId String 是 用户的学工号 image String 是 照片的base64 ext String 是 照片后缀 返回结果: { \"code\": 200, \"message\": \"OK\", \"data\": { \"userId\": \"testface\", \"image\": \"/group1/M00/00/09/rBEITl-XwYCAD1-MAAHfytyTzvE998.jpg\", \"score\": 0.9973, \"appScore\": 0.63, \"hasPass\": true, \"hasPermission\": null } } 参数说明: 参数 类型 说明 code int 返回状态code message String 返回状态消息 data 自定义对象 返回值的自定义对象 userId String 用户学工号 image String 照片对应的存储存储路径 score Double 相似值 appScore Double 厂商相似值标准 hasPass Boolean 照片是否通过 二、1:N 认证接口(特征值或照片) 应用上传一张照片,返回与这张照片相似度最高的用户信息,进行1:N 认证。 请求⽅式: POST(HTTPS或HTTP) 请求地址: http://{server}/faceid/public/auth/search 注:https方式类似。 请求参数: { \"feature\":\"xTKzPP6I4......AACAPw==\", \"file\":{ \"image\":\"/9j/4AAQSkZJRgAB......OMCuquxOVH//2Q==\", \"ext\":\"jpg\" } } 参数说明: 参数 类型 是否必须 说明 feature String 与 image 任选一个 照片的特征值 image String 与 feature任选一个 照片的base64 ext String 与image一致 照片的后缀 返回结果: { \"code\": 200, \"message\": \"OK\", \"data\": { \"userId\": \"testface\", \"image\": \"/group1/M00/00/09/rBEITl-XwYCAD1-MAAHfytyTzvE998.jpg\", \"score\": 0.9973356 } } 参数说明: 参数 类型 说明 code int 返回状态code message String 返回状态消息 data 自定义对象 返回值的自定义对象 userId String 用户学工号 image String 照片对应的存储路径 score Double 相似值 三、增量同步照片接口(水印或不加水印) 应用根据时间戳增量同步特征值接口。 请求⽅式: POST(HTTPS或HTTP) 请求地址: http://{server}/faceid/public/face/findIncreaseUserFaceImage 注:https方式类似。 请求参数: { \"currentPage\":1, \"timeStamp\":2, \"pageSize\":20, \"types\":[\"100\"] } 参数说明: 参数 类型 是否必须 说明 currentPage int 是 分页页码 pageSize int 是 分页每页大小 timeStamp long 是 应用上次同步照片的时间。SID从该时间戳以后开始同步照片 types List 是 照片类型code 返回结果: { \"code\": 200, \"message\": \"OK\", \"data\": { \"pageSize\": 10, \"pageNum\": 1, \"totalAmount\": 3, \"results\": [ { \"userId\": \"james\", \"faceId\": \"5f70993cecf37300063840c2\", \"imageUrl\": \"/group1/M00/00/05/rBEITl9wmT2AGYY7AADBdIqeHWk671.jpg\", \"timeStamp\": 1603768753929, \"face\": [ { \"type\": \"100\", \"image\": \"/9j/4AAQS......RghD83GR//Z\", \"fileName\": \"rBEITl9wmT2AGYY7AADBdIqeHWk671.jpg\", \"updateTime\": 1601214816398 } ], \"deleted\": false }, { \"userId\": \"5f86c39d9d72dd0006678544\", \"faceId\": \"5f86c3dfebd1ae000631fa04\", \"imageUrl\": \"/group1/M00/00/07/rBEITl-Gw-CALhSGAAFlVfs2oiA611.jpg\", \"timeStamp\": 1603768052435, \"face\": [ { \"type\": \"100\", \"image\": \"/9j/4AAQSkZJRgAB......OMCuquxOVH//2Q==\", \"fileName\": \"rBEITl-Gw-CALhSGAAFlVfs2oiA611.jpg\", \"updateTime\": 1607937942726 } ], \"deleted\": true } ] } } 参数说明: 参数 类型 说明 code int 返回状态code message String 返回状态消息 data 自定义对象 返回值的自定义对象 pageSize int 分页每页长度 pageNum int 分页页码 totalAmount int 需要同步照片的人员总数 results.userId String 学工号 results.faceId String 用户id results.imageUrl String 回显照片的存储路径 results.timeStamp long 照片变动时间戳(毫秒) results.deleted boolean 照片是否被删除。 true=删除,false=新增或修改 results.face.type String 照片类型code results.face.image String 照片base64 results.face.fileName String 照片名称 results.face.updateTime long 照片上传时间 注:照片类型code: 底库照片=100 (支持字符串 01),生活照=201,职业照=202。 四、增量同步特征值接口 增量同步特征值接口。 请求⽅式: POST(HTTPS或HTTP) 请求地址: http://{server}/faceid/public/face/findIncreaseUserFace 注:https方式类似。 请求参数: { \"currentPage\":1, \"pageSize\":100, \"timeStamp\":0 } 参数说明: 参数 类型 是否必须 说明 currentPage int 是 分页页码 pageSize int 是 分页每页大小 timeStamp long 是 应用上次同步照片的时间。SID从该时间戳以后开始同步照片 返回结果: { \"code\": 200, \"message\": \"OK\", \"data\": { \"pageSize\": 100, \"pageNum\": 1, \"totalAmount\": 1, \"orders\": null, \"results\": [ { \"userId\": \"testface\", \"imageUrl\": \"/group1/M00/00/09/rBEITl-XkxaAIRZjAAFRPYtJz1g042.jpg\", \"timeStamp\": 1603769154390, \"images\": [ { \"feature\": \"1utfPYb5ur2ADCg97r......ACAPw==\", \"type\": \"100\", \"updateTime\": 1603769129918 } ], \"deleted\": false } ] } } 参数说明: 参数 类型 说明 code int 返回状态code message String 返回状态消息 data 自定义对象 返回值的自定义对象 pageSize int 分页每页长度 pageNum int 分页页码 totalAmount int 照片总数 results.userId String 学工号 results.imageUrl String 回显照片的存储路径 results.timeStamp long 照片变动时间戳(毫秒) results.deleted boolean 照片是否被删除。true=删除,false=新增或修改 results.images.type String 照片类型code results.images.feature String 照片特征值 results.images.updateTime long 照片特征值计算时间 注:照片类型code: 底库照片=100,生活照=201,职业照=202。 五、通过用户id和照片类型查询照片 1、返回照片路径 通过用户id和照片类型查询照片返回照片路径。 请求⽅式: POST(HTTPS或HTTP) 请求地址: http://{server}/faceid/public/face/searchFaceByUserIdAndType 注:https方式类似。 请求参数: { \"userId\" : \"testface\", \"type\":100 } 参数说明: 参数 类型 是否必须 说明 userId String 是 学工号 type int 是 照片分类code 返回结果: { \"code\": 200, \"message\": \"OK\", \"data\": { \"userId\": \"testface\", \"path\": \"/group1/M00/00/09/rBEITl-XwYCAD1-MAAHfytyTzvE998.jpg\" } } 参数说明: 参数 类型 说明 code int 返回状态code message String 返回状态消息 data 自定义对象 返回值的自定义对象 userId String 学工号 path String 照片在存储上的路径 注:照片类型code: 底库照片=100,生活照=201,职业照=202。 2、返回照片base64 通过用户id和照片类型查询照片返回照片的base64。 请求⽅式: POST(HTTPS或HTTP) 请求地址: http://{server}/faceid/public/face/searchFaceByUserIdAndTypeImage 注:https方式类似。 请求参数: { \"userId\" : \"testface\", \"type\":100 } 参数说明: 参数 类型 是否必须 说明 userId String 是 学工号 type String 是 照片分类code 返回结果: { \"code\": 200, \"message\": \"OK\", \"data\": { \"userId\": \"testface\", \"path\": \"/group1/M00/00/09/rBEITl-XwYCAD1-MAAHfytyTzvE998.jpg\", \"image\": \"/9j/4AAQ.....YbGf/Z\" } } 参数说明: 参数 类型 说明 code int 返回状态code message String 返回状态消息 data 自定义对象 返回值的自定义对象 userId String 学工号 path String 照片在存储上的路径 image String 照片base64 注:照片类型code: 底库照片=100,生活照=201,职业照=202。 六、检查照片质量 检查照片质量。 请求⽅式: POST(HTTPS或HTTP) 请求地址: http://{server}/faceid/public/face/quality 注:https方式类似。 请求参数: { \"file\" : { \"image\":\"/9j/4AAQ......EQBERAf/Z\", \"ext\":\"jpg\" } } 参数说明: 参数 类型 是否必须 说明 file.image String 是 照片base64 file.ext String 是 照片后缀 返回结果: { \"code\": 200, \"message\": \"OK\", \"data\": { \"qualityScores\": \"0.7168,0.5429,0.0000,0.0002,0.9148,0.5352,0.0008,0.9664,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,-1.3611,4.4754,-2.4668,137.0000,327.0000,284.0000,284.0000,1.0000,0.9830,0.8736,0.0000,0.0000,0.0000,0.0000,4c0c864175cc13c0526e021f798fa3cf\", \"scores\": [ 0.63, 0.51, 0.0 ], \"scoresInfo\": [ { \"position\": 1, \"explain\": \"总分\" }, { \"position\": 2, \"explain\": \"光照分\" }, { \"position\": 3, \"explain\": \"口罩分\" } ], \"manufactureName\": \"云从\", \"isQualified\": true, \"unqualifiedReason\": \"\" } } 参数说明: 参数 类型 说明 code int 返回状态code message String 返回状态消息 data 自定义对象 返回值的自定义对象 qualityScores String 照片质量分 scores List 照片质量分合格标准 scoresInfo List 表明每个位置的质量分含义 manufactureName String 厂商名称 isQualified boolean 照片是否符合标准 unqualifiedReason String 不符合标准的原因 注:qualityScores 字符串中的各类分数是根据 “,”(逗号)隔开的。计算总分是否合格的方法如下: 根据 scoresInfo获取总分的位置(position)为 1。然后在质量分(qualityScores)中获取第一位分数为 0.7168,在 合格标准中(scores) 获取总分标准为 0.63。因为 0.7168 > 0.63, 所以质量合格。 七、通过用户id list查询用户照片 通过用户id list查询用户照片。当用户(userIds) 长度超过10个时,取前10个用户的学工号返回 请求⽅式: POST(HTTPS或HTTP) 请求地址: http://{server}/faceid/public/face/findAllImageBase64ByUserIds 注:https方式类似。 请求参数: { \"userIds\": [\"testface\"], \"types\": [\"100\"] } 参数说明: 参数 类型 是否必须 说明 userIds List 是 学工号 types List 是 照片分类code 返回结果: { \"code\": 200, \"message\": \"OK\", \"data\": [ { \"userId\": \"testface\", \"imageUrl\": \"/group1/M00/00/09/rBEITl-XwYCAD1-MAAHfytyTzvE998.jpg\", \"userFaceFileDtos\": [ { \"type\": \"100\", \"image\": \"/9j/4AAYXk...../2OEQdm5gYbGf/Z\", \"fileName\": \"rBEITl-XwYCAD1-MAAHfytyTzvE998.jpg\", \"timeStamp\": 0 } ] } ] } 参数说明: 参数 类型 说明 code int 返回状态code message String 返回状态消息 data 自定义对象 返回值的自定义对象 userId String 学工号 imageUrl String 回显照片的存储路径 userFaceFileDtos.type String 照片类型 userFaceFileDtos.timeStamp long 照片变动时间戳(毫秒) image String 照片base64 注:照片类型code: 底库照片=100,生活照=201,职业照=202。 八、上传照片(通过类型+用户id) 上传照片(通过类型+用户id)。 请求⽅式: POST(HTTPS或HTTP) 请求地址: http://{server}/faceid/public/face/image 注:https方式类似。 请求参数: { \"ext\":\"jpg\", \"type\":100, \"userId\":\"2009082\", \"image\":\"/9j/4AAQS....Gf/Z\" } 参数说明: 参数 类型 是否必须 说明 userId String 是 学工号 type String 是 照片分类code ext String 是 照片后缀 image String 是 照片base64编码 返回结果: { \"code\": 200, \"message\": \"OK\", \"data\": { \"userId\": \"2009082\", \"path\": \"/group1/M00/00/18/rBEITl-iGcOAd-uEAAHfytyTzvE908.jpg\" } } 参数说明: 参数 类型 说明 code int 返回状态code message String 返回状态消息 data 自定义对象 返回值的自定义对象 userId String 学工号 path String 上传照片的存储路径 注:照片类型code: 底库照片=100,生活照=201,职业照=202。 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-07 20:02:51 "},"faceid/manufacturer/interface/manufacture.html":{"url":"faceid/manufacturer/interface/manufacture.html","title":"人脸厂商标准接口","keywords":"","body":"人脸厂商标准接口 该部分描述厂商应向SID提供的标准接口,以便SID调用。 1:1 认证 1:N 认证 静默活体检测 照片分析(特征值与质量分析) 照片查询 照片删除 照片修改 照片增加 1. 1:1 认证 使用用户底库照片与用户现场照片进行比对 请求⽅式: POST 请求地址: http://{server}/staticdb/search/compare 请求头: 请求参数: { \"app_id\":\"system\", \"app_secret\":\"12345\", \"imageA\":\"YmFzZTY0IGltYWdlCg==\", \"imageB\":\"YmFzZTY0IGltYWdlCg==\" } 参数说明: 参数 是否必须 说明 app_id 是 应用id app_secret 是 应用secret imgA 是 用户现场照片base64编码。和featureA字段二选一,传了imgA就不用传featureA imgB 是 用户底库照片base64编码。和featureB字段二选一,传了imgB就不用传featureB featureA 否 特征值A和imgA字段二选一 featureB 否 特征值A和imgB字段二选一 返回结果: { \"info\": \"success\", \"result\": 0, \"score\": 0.999 } 参数说明: 参数 说明 info 返回信息描述,成功为success,失败为错误描述信息 result 返回码0成功,返回其他值为失败 score 比对结果分数 2. 1:N 认证 使用用户现场与全部用户进行比对返回最相似的用户 请求⽅式: POST 请求地址: http://{server}/staticdb/search/multiple 请求头: 请求参数: { \"app_id\":\"system\", \"app_secret\":\"12345\", \"groupId\":\"\", \"topN\":2, \"img\":\"\" } 参数说明: 参数 是否必须 说明 app_id 是 应用id app_secret 是 应用secret groupId 否 人脸库编号 topN 是 返回比对结果最相似的数量,由高到低,例如:2 img 是 图片base64 返回结果: { \"faces\": [ { \"groupId\": \"xyb01\", \"score\": 0.9987342, \"userId\": \"5f97b281c049c70006c5dd8a\" }, { \"groupId\": \"xyb01\", \"score\": 0.40020594, \"userId\": \"5f918741309dea0007d74af5\" } ], \"info\": \"success\", \"result\": 0 } 参数说明: 参数 说明 info 返回信息描述,成功为success,失败为错误描述信息 result 返回码0成功,返回其他值为失败 faces[] 比对结果列表 faces结构 参数 说明 groupId 人脸库编号 score 比对结果分数 userId 用户id 3. 静默活体检测 静默活体是在用户无感的情况下直接进行活体校验。不需要用户做任何动作,判断图片中的人脸是否来自于真人活体,有效抵御纸质翻拍照、电子翻拍照以及视频翻拍等各种攻击方式 请求⽅式: POST 请求地址: http://{server}/liveness/action 请求头: 请求参数: { \"app_id\":\"system\", \"app_secret\":\"12345\", \"param\":\"YmFzZTY0IGltYWdlCg==\" } 参数说明: 参数 是否必须 说明 app_id 是 应用id app_secret 是 应用secret param 是 需要检测的照片。格式为base64字符串 返回结果: { \"extInfo\": 1, \"info\": \"动作活体检测耗时:127 攻击类型:1\", \"result\": 0 } 参数说明: 参数 说明 info 返回信息描述,成功为success,失败为失败描述信息 result 返回码0成功,返回其他值为失败 extInfo 攻击类型 1 通过活体检测,其他值为失败 4. 照片分析(特征值与质量分析) 分析照片特征值和质量分数 请求⽅式: POST 请求地址: http://{server}/staticdb/search/feature 请求头: 请求参数: { \"app_id\":\"system\", \"app_secret\":\"12345\", \"img\":\"YmFzZTY0IGltYWdlCg==\" } 参数说明: 参数 是否必须 说明 app_id 是 应用id app_secret 是 应用secret groupId 否 人脸库编号 img 是 图片base64 返回结果: { \"feature\": \"MzQxZmFzZDQxMjM0MTIzNDEyCg==\", \"info\": \"success\", \"qualityScores\": \"0.7341,0.6496,0.0000,0.0008,0.9145,0.5783,0.0005,0.9721,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,-2.7956,0.9578,-1.3971,97.0000,155.0000,199.0000,199.0000,1.0000,0.9635,0.8536,0.0000,0.0000,0.0000,0.0000,0240bea626980479fdcf0e30a248032d\", \"result\": 0 } 参数说明: 参数 说明 info 返回信息描述,成功为success,失败为错误描述信息 result 返回码0成功,返回其他值为失败 feature 照片特征值 qualityScores 照片质量评分,逗号间隔开 结构化信息(qualityScores)按逗号分割,其中每一位数字所代表的具体信息如下: [0]人脸质量总分 0.65 [1]光照分,越大表示光照越适合 推荐范围0.2-0.8 [2]口罩分,分数越大表示越不可能戴口罩 [3]人脸遮挡分数,返回0.0-1.0的分数,越大表示越有可能被遮挡 [4]清晰度分,越大表示越清晰 推荐范围0.65-1.0 [5]是否戴眼镜分数,越大表示越可能戴眼镜 推荐范围0.0-0.5 [6]闭嘴分数,越大表示越可能是闭嘴 推荐范围0.0-0.5 [7]人脸特征点质量分数,越大表示人脸越清晰 0.6 [8]空 [9]戴墨镜的置信分,分数越高,表示戴墨镜的可能性越大 推荐范围0.0-0.5 [10] 年龄 [11] 性别 1 男 2 女 [12] 国籍 1 中国人 2 外国人 [13] 年龄段 1 小孩 2 中年人 4 老人 [14] 正脸侧脸 1.0 [15] 人种 1 黄种人 2 黑种人 4 白种人 8 新疆人 [16] 人脸旋转角-抬头低头角度 pitch [17] 人脸旋转角-左右旋转角度 yaw [18] 人脸旋转角-平面内偏头角度 roll [19] 人脸框 x [20] 人脸框 y [21] 人脸框 width [22] 人脸框 height [23] 是否黑白打印纸张,越大表示越可能是真人 [24] 左眼睁眼分数, 越大表示左眼越可能是睁眼,推荐范围0.5-1.0 [25] 右眼睁眼分数, 越大表示右眼越可能是睁眼,推荐范围0.5-1.0 5. 照片查询 根用户id查询照片信息 请求⽅式: POST 请求地址: http://{server}/face/get 请求头: 请求参数: { \"app_id\":\"system\", \"app_secret\":\"12345\", \"groupId\":\"xyb01\", \"userId\":\"testface\" } 参数说明: 参数 是否必须 说明 app_id 是 应用id app_secret 是 应用secret groupId 否 人脸库编号 userId 是 用户id 返回结果: { \"groupId\": \"xyb01\", \"info\": \"success\", \"qualityScore\": \"0.7341,0.6496,0.0000,0.0008,0.9145,0.5783,0.0005,0.9721,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,-2.7956,0.9578,-1.3971,97.0000,155.0000,199.0000,199.0000,1.0000,0.9635,0.8536,0.0000,0.0000,0.0000,0.0000,0240bea626980479fdcf0e30a248032d\", \"result\": 0, \"userId\": \"testface\" } 失败例子 { \"info\": \"查询人脸错误,错误信息[record not found]\", \"result\": 20010009 } 参数说明: 参数 说明 info 返回信息描述,成功为success,失败为错误描述信息 result 返回码0成功,返回其他值为失败 groupId 人脸库编号 qualityScore 照片质量评分 userId 用户id 6. 照片删除 根据用户id删除照片 请求⽅式: POST 请求地址: http://{server}/face/remove 请求头: 请求参数: { \"app_id\":\"system\", \"app_secret\":\"12345\", \"groupId\":\"xyb01\", \"userId\":\"testface\" } 参数说明: 参数 是否必须 说明 app_id 是 应用id app_secret 是 应用secret groupId 否 人脸库编号 userId 是 用户id 返回结果: { \"info\": \"success\", \"result\": 0 } 参数说明: 参数 说明 info 返回信息描述,成功为success,失败为错误描述信息 result 返回码0成功,返回其他值为失败 7. 照片修改 根据用户id更新照片信息 请求⽅式: POST 请求地址: http://{server}/face/updatefeature 请求头: 请求参数: { \"app_id\":\"system\", \"app_secret\":\"12345\", \"groupId\":\"xyb01\", \"userId\":\"testface\", \"img\":\"YmFzZTY0IGltYWdlCg==\" } 参数说明: 参数 是否必须 说明 app_id 是 应用id app_secret 是 应用secret groupId 否 人脸库编号 img 是 图片base64 返回结果: { \"info\": \"success\", \"result\": 0 } 参数说明: 参数 说明 info 返回信息描述,成功为success,失败为错误描述信息 result 返回码0成功,返回其他值为失败 8. 照片增加 添加一张用户的人脸照片 请求⽅式: POST 请求地址: http://{server}/face/add 请求头: 请求参数: { \"app_id\":\"system\", \"app_secret\":\"12345\", \"groupId\":\"xyb01\", \"userId\":\"testface\", \"img\":\"YmFzZTY0IGltYWdlCg==\" } 参数说明: 参数 是否必须 说明 app_id 是 应用id app_secret 是 应用secret groupId 否 人脸库编号 userId 是 用户id img 是 图片base64 返回结果: { \"info\": \"success\", \"result\": 0, \"userId\": \"testface\" } 参数说明: 参数 说明 info 返回信息描述,成功为success,失败为错误描述信息 result 返回码0成功,返回其他值为失败 userId 用户id ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-11-30 10:33:38 "},"faceid/manufacturer/interface/application.html":{"url":"faceid/manufacturer/interface/application.html","title":"人脸应用标准接口","keywords":"","body":"人脸应用标准接口 1. 照片分析(特征值与质量分析) 分析照片特征值和质量分数 请求⽅式: POST 请求地址: http://{server}/staticdb/search/feature 请求头: 请求参数: { \"app_id\":\"system\", \"app_secret\":\"12345\", \"img\":\"YmFzZTY0IGltYWdlCg==\" } 参数说明: 参数 是否必须 说明 app_id 是 应用id app_secret 是 应用secret groupId 否 人脸库编号 img 是 图片base64 返回结果: { \"feature\": \"MzQxZmFzZDQxMjM0MTIzNDEyCg==\", \"info\": \"success\", \"qualityScores\": \"0.7341,0.6496,0.0000,0.0008,0.9145,0.5783,0.0005,0.9721,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,-2.7956,0.9578,-1.3971,97.0000,155.0000,199.0000,199.0000,1.0000,0.9635,0.8536,0.0000,0.0000,0.0000,0.0000,0240bea626980479fdcf0e30a248032d\", \"result\": 0 } 参数说明: 参数 说明 info 返回信息描述,成功为success,失败为错误描述信息 result 返回码0成功,返回其他值为失败 feature 照片特征值 qualityScores 照片质量评分,逗号间隔开 结构化信息(qualityScores)按逗号分割,其中每一位数字所代表的具体信息如下: [0]人脸质量总分 0.65 [1]光照分,越大表示光照越适合 推荐范围0.2-0.8 [2]口罩分,分数越大表示越不可能戴口罩 [3]人脸遮挡分数,返回0.0-1.0的分数,越大表示越有可能被遮挡 [4]清晰度分,越大表示越清晰 推荐范围0.65-1.0 [5]是否戴眼镜分数,越大表示越可能戴眼镜 推荐范围0.0-0.5 [6]闭嘴分数,越大表示越可能是闭嘴 推荐范围0.0-0.5 [7]人脸特征点质量分数,越大表示人脸越清晰 0.6 [8]空 [9]戴墨镜的置信分,分数越高,表示戴墨镜的可能性越大 推荐范围0.0-0.5 [10] 年龄 [11] 性别 1 男 2 女 [12] 国籍 1 中国人 2 外国人 [13] 年龄段 1 小孩 2 中年人 4 老人 [14] 正脸侧脸 1.0 [15] 人种 1 黄种人 2 黑种人 4 白种人 8 新疆人 [16] 人脸旋转角-抬头低头角度 pitch [17] 人脸旋转角-左右旋转角度 yaw [18] 人脸旋转角-平面内偏头角度 roll [19] 人脸框 x [20] 人脸框 y [21] 人脸框 width [22] 人脸框 height [23] 是否黑白打印纸张,越大表示越可能是真人 [24] 左眼睁眼分数, 越大表示左眼越可能是睁眼,推荐范围0.5-1.0 [25] 右眼睁眼分数, 越大表示右眼越可能是睁眼,推荐范围0.5-1.0 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-11-30 10:33:38 "},"faceid/deployment/deployment.html":{"url":"faceid/deployment/deployment.html","title":"人脸实施部署文档","keywords":"","body":"SourceID人脸环境部署 前言 概述 本文主要书写SourceID产品人脸部分及相关依赖在进行安装部署时,如何进行安装部署,将相关的步骤进行描述说明。 SourceID产品具体安装详见:svn://192.168.54.191/ykt/RG_LinkID项目管理/SID业务学习文档/部署实施/高教方案/BS-00-SourceId1.6.4版本安装部署手册.docx。 修订记录 日期 版本 修订说明 作者 2020年04月26日 V1.0 第一次发布 陆勇思 注:集群部署模式中所有操作均在Master主节点服务器上执行,单机部署就直接在服务器上执行,服务器登录账号只能用root账号操作,集群模式下master主节点与node节点服务器的密码要保持一致。 一、 资源准备 1、 硬件资源: 服务器节点 服务器系统版本 网络 CPU核数 内存容量 硬盘磁盘容量 说明 服务器A CentOS 7.6.1810 与C互通 16核 32G 系统盘50G,数据盘500G 必须安装有英伟达显卡,用于安装人脸厂商服务器 服务器B CentOS 7.6.1810 与C互通 16核 32G 系统盘50G,数据盘500G 作为FastDFS服务器 服务器C CentOS 7.6.1810 与B互通 16核 32G 系统盘50G,数据盘500G 一到多台,部署SourceID以及人脸组件,根据时间需要 2、 软件资源: Centos7系统、英伟达显卡驱动、云从服务端软件、KAD部署包、FaceId-Task镜像。 SecureCRT或Xshell、winscp等远程工具。 3、 外部资源: 云从license。 二、 总体顺序 1、 云从服务器安装系统以及显卡驱动,收集机器码。 2、 云从官网申请license。 3、 服务器安装license,启动云从服务端。 4、 作为FastDFS的服务器安装操作系统,通过KAD部署FastDFS组件。 5、 用于部署SourceID的服务器安装好操作系统后,通过KAD部署SourceID服务。 6、 部署FaceId-Task组件。 三、 部署CloudCore_FaceEngine服务(云从) 1、 准备服务器 服务器需要安装有英伟达显卡,适用系统: centos7.2、centos7.3。 2、 安装显卡驱动 2.1、按照步骤 2.1.1、 检查BIOS中的Secure Boot设置,将该值设置成disable 2.1.2、 查看显卡型号 lspci | grep -i vga lspci -v -s 83:00.0 2.1.3、 官网上搜索并下载对应驱动https://www.geforce.cn/drivers 2.1.4、 将下载的驱动上传到服务器 ## 通过winscp等工具或者lrzsz命令 mkdir /opt/cloudCore cd /opt/cloudCore yum install lrzsz rz ## 然后选择文件 2.1.5、 安装gcc yum -y install gcc 2.1.6、 安装kernel-devel ##查看当前内核版本号 uname -r ## 访问http://rpm.pbone.net/index.php3,查找内核版本对应的kernel-devel包 wget ftp://ftp.pbone.net/mirror/dl.central.org/dl/linuxdev/centos7/x86_64/kernel-devel-3.10.0-957.el7.x86_64.rpm ## 需要先安装perl工具 yum install perl rpm -ivh kernel-devel-2.6.32-431.el6.x86_64.rpm 2.1.7、 安装dkms yum -y install dkms ## 如果这一步提示没有对应的包,可以通过以下方法安装: yum install perl* perl -v yum install epel-release yum --enablerepo=epel install dkms 2.1.8、 关闭图形界面并重启 sudo service lightdm stop ## 重启: reboot 2.1.9、 安装驱动 ## 进入到驱动存放的路径 ./NVIDIA-Linux-x86_64-440.64.run --kernel-source-path=/usr/src/kernels/3.10.0-1062.18.1.el7.x86_64 -k $(uname -r) -dkms ## /usr/src/kernels/3.10.0-1062.18.1.el7.x86_64为kernel安装后的地址,根据自己的版本确定 ## 选项基本选择默认,其中覆盖安装选择覆盖 2.1.10、 重启图形界面(可选) sudo service lightdm start ## 重启 reboot 2.1.11、检查是否安装完成,执行命令后出现以下内容说明安装完成 nvidia-smi 2.2 常见问题: 2.2.1、 Unable to load the 'nvidia-drm' kernel module 未安装dkms,执行上方步骤6 检查BIOS中的Secure Boot设置,该值需要设置成disable 2.2.2、 kernel版本和内核版本不一致导致 Failed to run `/usr/sbin/dkms build -m nvidia -v 440.64 -k 3.10.0-957.el7.x86_64`: Error! Echo Your kernel headers for kernel 3.10.0-957.el7.x86_64 cannot be found at /lib/modules/3.10.0-957.el7.x86_64/build or /lib/modules/3.10.0-957.el7.x86_64/source. You can use the --kernelsourcedir option to tell DKMS where it's located. 解决方案: yum install “kernel-devel-uname-r == $(uname -r)” ## 安装kernel时使用上方的命令,当yum源中没有对应版本的时候,会导致安装的版本不匹配,此时可以先卸载,再参照上方步骤5重新安装,卸载命令: yum remove kernel-devel-版本号 3、 收集机器码,申请license 3.1、 收集机器码 cd /opt/cloudCore ## 选择文件 rz ## 解压Linux激活工具 tar xzvf User_UkeyLinux_v1.8.tar.gz ## 进入目录 cd UkeyLinux ## 执行./activator,输入2,收集机器码。 ./activator 文件下载 3.2、生成v2c文件 登陆授权官网:https://ai.cloudwalk.cn fingerprint.c2v文件样例: 将fingerprint.c2v文件内的全部内容复制,粘贴至“请输入设备ID号”处,然后点击“确认”,平台会生成v2c.txt文件。 3.3、 激活授权 cd /opt/cloudCore/UkeyLinux rz ##选择文件 ./activator 下载v2c文件,得到v2c.txt文件,上传至云从服务器。 云从服务器主机,执行./activator,输入4,输入v2c.txt,即可完成授权激活。 3.4、检查授权状态 执行./UkeyCheck,检查授权状态,核对申请的授权是否正确。 4、 启动云从服务端 (1)关闭防火墙 ##服务运行需要将防火墙关闭,如果需要永久关闭可执行如下两条命令,执行信息。 systemctl stop firewalld ##临时关闭防火 安装程序默认 systemctl disable firewalld ##永久关闭防火墙 (2)安装包准备 将 CloudCore_FaceEngine 安装程序拷贝至/home/(用户)目录,目录可任意指定。 登录服务器并cd进入目录。 首先解压 CloudCore_FaceEngine.tar.gz 引擎安装包。 执行命令:tar xzvf FaceGo.tar.gz。 解压后修改文件权限:chmod 777 *。 (3)该目录下的文件需要修改: /{filepath}/FaceGo/AlgorithmRecog/config/extra_conf_gpu.txt GpuID:GPU个数-1,一个GPU配0,两个GPU配1。 nDetectThread=3: #人脸检测线程数,GPU个数*3。 nFeatureThread=1: #特征提取线程数,GPU个数*1。 Tip:只需要修改extra_conf_gpu.txt一个文件。 (4)启动 在主程序目录下执行./start.sh,出现如下标识说明启动成功。 (5)登录页面 地址:ip:7100/page;用户名/密码:admin/admin。登录成功后配置需要使用的人脸库,此人脸库名称会在后面人脸组件上对应配置。 四、 KAD部署FastDFS 1、 KAD工具安装 (1)在线安装 yum install -y http://172.17.8.20:8081/repository/files/ruijie/kad/release/kad-1.6.0-1.x86_64.rpm ## 具体版本根据实际情况确定 (2)离线安装 ##将KAD安装包复制到/opt目录下 cd /opt tar xzvf sourceid-kad-r1.6.4.tar.gz -C /opt/kad 2、 修改配置文件 /opt/kad/workspace/k8s/conf/all.yml中的FastDFS配置参数。 新增:FDFS_USE_TRUNK_FILE: \"false\",防止出现图片获取不到的情况。 3、 执行部署 kad-play playbooks/fdfs/setup.yml 4、 查看部署状态 ps -aux |grep fdfs_storaged ps -aux |grep fdfs_trackerd ## 查看fdfs_storaged,fdfs_trackerd两个服务状态 systemctl status fdfs_storaged systemctl status fdfs_trackerd 5、 卸载(可选) 如果需要卸载,执行以下命令。 kad-play playbooks/fdfs/clean.yml 如果kad工具无法卸载,可以使用网上的方式进行卸载。 链接地址:https://blog.csdn.net/weixin_37380784/article/details/94732272 五、 KAD部署SourceID 1、 KAD工具安装 yum install -y http://172.17.8.20:8081/repository/files/ruijie/kad/release/kad-1.6.0-1.x86_64.rpm #### 具体版本根据实际情况确定 2、 修改配置文件 (1)在/opt/kad/workspace/ruijie-sourceid/conf/all.yml文件添加人脸组件: SOURCEID_FACEID_ENABLED: \"yes\" 配置域名 (2)kad.yml添加人脸组件及版本号: 版本号根据实际情况修改 /opt/kad/down/sourceid-kad-r1.6.4/kad.yml faceid: {name: \"sourceid/faceid\", version: \"1.8.0R1\"}, faceid-display: {name: \"sourceid/faceid-display\", version: \"sid0.1\"}, 3、 修改配置文件 人脸组件版本可能需要安装最新版,而kad工具打包时只打包了当时的配置文件和数据库脚本,因此需要手工修改配置文件。 /opt/kad/workspace/ruijie-sourceid/conf/sourceid/faceid/application-pro.yml 修改该文件的ycface配置,包括云从地址以及云从上配置的人脸库groupIds 4、 部署SourceID kad-play playbooks/sourceid/prepare.yml kad-play playbooks/sourceid/setup.yml 5、 检测状态 kubectl -n ruijie-sourceid get pod 六、 手工部署faceId-task和wsoauth 1、 准备yml文件 注意根据服务器情况合理分配cpu内存等,faceid-task项目只能单pod部署 wsoauth.yml 下载文件 apiVersion: extensions/v1beta1 kind: Deployment metadata: name: rg-wsoauth namespace: ruijie-sourceid spec: replicas: 1 template: metadata: labels: service: rg-wsoauth spec: containers: - name: rg-wsoauth image: id.ruijie.com.cn:25082/sourceid/wsoauth:1.8.0p10 imagePullPolicy: IfNotPresent env: - name: JAVA_OPT_EXT value: \"-Xms1024m -Xmx1024m\" resources: limits: cpu: 1 memory: 1Gi requests: cpu: 1 memory: 1Gi ports: - containerPort: 8580 volumeMounts: - mountPath: /ruijie/sourceid/wsoauth/conf name: conf imagePullSecrets: - name: regsecret volumes: - name: conf hostPath: path: /home/ruijie/ruijie-sourceid/sourceid/wsoauth/conf --- apiVersion: v1 kind: Service metadata: name: rg-wsoauth namespace: ruijie-sourceid spec: selector: service: rg-wsoauth ports: - port: 80 targetPort: 8580 --- apiVersion: extensions/v1beta1 kind: Ingress metadata: name: rg-wsoath-ingress namespace: ruijie-sourceid spec: rules: - host: self.wzu.edu.cn http: paths: - path: /wsoauth backend: serviceName: rg-wsoauth servicePort: 80 faceid-task.yml 下载文件 apiVersion: extensions/v1beta1 kind: Deployment metadata: name: rg-faceid-task namespace: ruijie-sourceid spec: replicas: 1 template: metadata: labels: service: rg-faceid-task spec: containers: - name: rg-faceid-task image: id.ruijie.com.cn:25082/sourceid/faceid-task:1.8.0 imagePullPolicy: IfNotPresent env: - name: JAVA_OPT_EXT value: \"-Xms512m -Xmx2048m\" resources: limits: cpu: 2 memory: 3Gi requests: cpu: 1 memory: 2Gi ports: - containerPort: 8903 volumeMounts: - mountPath: /ruijie/sourceid/faceid-task/conf name: conf imagePullSecrets: - name: regsecret volumes: - name: conf hostPath: path: /home/ruijie/ruijie-sourceid/sourceid/faceid-task/conf --- apiVersion: v1 kind: Service metadata: name: rg-faceid-task namespace: ruijie-sourceid spec: selector: service: rg-faceid-task ports: - port: 80 targetPort: 8903 2、 新增配置文件 目前配置文件放在/home/ruijie/ruijie-sourceid/sourceid 路径下,如果没有配置文件,镜像启动时会异常。 Tip:如果k8s集群有多台,则每台机器上都需要配置,配置文件需要手工修改数据库链接等配置。 下载文件 3、 修改配置 rg.sync.image:任务运行间隔时间 identity.user-id:从linkid获取的用户id的key identity.client-id:支持人脸同步的client identity.get-users:获取用户id的接口 4、 部署应用 ## 通过yml文件创建pod kubectl create -f /opt/kad/workspace/ruijie-sourceid/yaml/faceid-task/faceid-task.yml kubectl create -f /opt/kad/workspace/ruijie-sourceid/yaml/wsoauth/wsoauth.yml 5、 检测状态 kubectl -n ruijie-sourceid get pod ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-08 17:20:53 "},"faceid/faq/faq.html":{"url":"faceid/faq/faq.html","title":"FAQ","keywords":"","body":"FAQ 待补充 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-11-30 10:33:38 "},"linkid/role/introduction/":{"url":"linkid/role/introduction/","title":"开发前须知","keywords":"","body":"开发前须知 角色接口规范说明 角色接口调用授权 创建应用角色 标签数据授权 用户数据授权 角色接口规范说明: 各类数据内容返回, 属性名为驼峰式, 以文档示例为准 分页接口, 分页参数属性是驼峰式, 以文档示例为准 角色接口调用授权: 获取accessToken 设置请求头 Authorization: Bearer {access_token} 创建应用角色 1、编辑应用 2、配置应用角色 3、新增角色 4、进行角色映射 标签数据授权 标签数据授权 用户数据授权 用户数据授权 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-08 14:43:17 "},"linkid/role/public/interface/role-external-api.html":{"url":"linkid/role/public/interface/role-external-api.html","title":"角色对外接口","keywords":"","body":"角色对外API 角色对外api描述SID向应用提供的标准接口,以便外部应用调用。标准接口如下: 创建应用角色接口 查询应用生成的角色 查询用户在某个应用匹配的应用角色 查询用户在所有应用匹配的应用角色 一、创建应用角色接口 当业务系统需要在SourceId创建应用角色时调用 请求⽅式: POST(HTTPS或HTTP) 请求地址: http://self.xxx.edu.cn/linkid/public/api/aggregate/app/remote/role/create 注:https方式类似。 请求参数: { \"roleName\":\"应用生成的角色名称\", \"roleCode\":\"应用生成的角色编号\", \"roleDescriber\":\"应用生成的角色的描述\" } 参数说明: 参数 类型 是否必须 说明 roleName string 是 应用生成的角色名称 roleCode string 是 应用生成的角色编号 roleDescriber string 否 应用生成的角色的描述 返回结果: { \"code\": 200, \"message\": \"OK\", \"data\": true } 参数说明: 参数 类型 说明 code int 返回状态code message String 返回状态消息 data boolean 保存结果 二、查询应用生成的角色 业务系统调用接口, 查询应用系统关联的角色 请求⽅式: GET(HTTPS或HTTP) 请求地址: http://self.xxx.edu.cn/linkid/public/api/aggregate/app/remote/role/find 注:https方式类似。 请求参数: 请求示例: https://ljw.sso.rghall.com.cn/linkid/public/api/aggregate/app/remote/role/find 返回结果: { \"code\": 200, \"message\": \"OK\", \"data\": [ { \"id\": \"应用角色ID\", \"appId\": \"应用系统的ID\", \"roleName\": \"应用角色名称\", \"roleCode\": \"应用角色编号\", \"roleDescriber\": \"应用角色描述\" } ] } 参数说明: 参数 类型 说明 code int 返回状态code message String 返回状态消息 data 自定义对象 返回值为部门id列表 id string 应用角色ID appId string 应用系统的ID roleName string 应用角色名称 roleCode string 应用角色编号 roleDescriber string 应用角色描述 三、查询用户在某个应用匹配的应用角色 查询用户在某个应用匹配的应用角色 请求⽅式: GET(HTTPS或HTTP) 请求地址: http://self.xxx.edu.cn/linkid/public/api/aggregate/app/remote/role/find/user/{userId} 注:https方式类似。 请求参数: 示例:http://ljw.sso.rghall.com.cn/linkid/public/api/aggregate/app/remote/role/find/user/12345 参数说明: 参数 类型 是否必须 说明 userId string 是 学工号 返回结果: { \"code\": 200, \"message\": \"OK\", \"data\": [ { \"id\": \"应用角色ID\", \"appId\": \"应用系统的ID\", \"roleName\": \"应用角色名称\", \"roleCode\": \"应用角色编号\", \"roleDescriber\": \"应用角色描述\" } ] } 参数说明: 参数 类型 说明 code int 返回状态code message String 返回状态消息 data 自定义对象 返回值为部门id列表 id string 应用角色ID appId string 应用系统的ID roleName string 应用角色名称 roleCode string 应用角色编号 roleDescriber string 应用角色描述 四、查询用户在所有应用匹配的应用角色 查询用户在某个应用匹配的应用角色 请求⽅式: GET(HTTPS或HTTP) 请求地址: http://self.xxx.edu.cn/linkid/api/aggregate/app/remote/public/role/find/user/{userId} 注:https方式类似。 请求参数: 示例: http://ljw.sso.rghall.com.cn/linkid/api/aggregate/app/remote/public/role/find/user/12345 参数说明: 参数 类型 是否必须 说明 userId string 是 学工号 返回结果: { \"code\": 200, \"message\": \"OK\", \"data\": [ { \"id\": \"应用角色ID\", \"appId\": \"应用系统的ID\", \"roleName\": \"应用角色名称\", \"roleCode\": \"应用角色编号\", \"roleDescriber\": \"应用角色描述\" } ] } 参数说明: 参数 类型 说明 code int 返回状态code message String 返回状态消息 data 自定义对象 返回值为部门id列表 id string 应用角色ID appId string 应用系统的ID roleName string 应用角色名称 roleCode string 应用角色编号 roleDescriber string 应用角色描述 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-17 14:12:30 "},"linkid/role/faq/faq.html":{"url":"linkid/role/faq/faq.html","title":"FAQ","keywords":"","body":"FAQ 待补充 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-11-30 10:33:38 "},"linkid/userorganizationpost/introduction/":{"url":"linkid/userorganizationpost/introduction/","title":"开发前须知","keywords":"","body":"开发前须知 三元组接口规范说明 三元组接口调用授权 组织数据授权 用户数据授权 标签数据授权 岗位数据授权 角色接口规范说明: 各类数据内容返回, 属性名为驼峰式, 以文档示例为准 分页接口, 分页参数属性是驼峰式, 以文档示例为准 角色接口调用授权: 获取accessToken 设置请求头 Authorization: Bearer {access_token} 组织数据授权 组织数据授权 用户数据授权 用户数据授权 标签数据授权 标签数据授权 岗位数据授权 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-11-30 10:33:39 "},"linkid/userorganizationpost/public/interface/userorganizationpost-external-api.html":{"url":"linkid/userorganizationpost/public/interface/userorganizationpost-external-api.html","title":"三元组对外接口","keywords":"","body":"三元组对外API 三元组对外api描述SID向应用提供的标准接口,以便外部应用调用。标准接口如下: 增量获取组织信息 增量获取岗位信息 增量获取用户信息 增量获取三元组关系 一、增量获取组织信息 当业务系统需要在SourceId, 增量获取组织信息 请求⽅式: GET(HTTPS或HTTP) 请求地址: http://self.xxx.edu.cn/linkid/api/aggregate/keTan/public/findOrganizationsByDate?timestamp={timestamp} 注:https方式类似。 请求参数: http://ljw.sso.rghall.com.cn/linkid/api/aggregate/keTan/public/findOrganizationsByDate?timestamp=1601000903868 参数说明: 参数 类型 是否必须 说明 timestamp long 是 时间戳 返回结果: //有数据 { \"errno\": 0, \"error\": null, \"entities\": [ { \"organizeId\": \"a\", \"organizeName\": \"a\", \"parentOrganizeId\": \"RJXZZZ\", \"independent\": false, \"timestamp\": 1603347326598, \"disabled\": false }, { \"organizeId\": \"aaaaa\", \"organizeName\": \"aaa\", \"parentOrganizeId\": \"\", \"independent\": true, \"timestamp\": 1604302576033, \"disabled\": true }, { \"organizeId\": \"bbb\", \"organizeName\": \"bbb\", \"parentOrganizeId\": \"\", \"independent\": true, \"timestamp\": 1604302581061, \"disabled\": true } ], \"total\": 3 } //无数据 { \"errno\": 1, \"error\": \"没有需要同步的组织数据\", \"entities\": null, \"total\": 0 } 参数说明: 参数 类型 说明 errno int 返回状态, 0 成功, 1 失败 error String 返回状态消息 entities 自定义对象 自定义对象 total int 总记录数 organizeId string 部门id organizeName string 部门名称 parentOrganizeId string 父部门id independent boolean 是否独立,true 没有父部门 disabled boolean 是否有效,true 有效, false无效 timestamp long 时间戳 二、增量获取岗位信息 业务系统调用接口, 增量获取岗位信息 请求⽅式: GET(HTTPS或HTTP) 请求地址: http://self.xxx.edu.cn/linkid/api/aggregate/keTan/public/findPostsByDate?timestamp={timestamp} 注:https方式类似。 请求参数: 请求示例: http://ljw.sso.rghall.com.cn/linkid/api/aggregate/keTan/public/findPostsByDate?timestamp=1601000903868 参数说明: 参数 类型 是否必须 说明 timestamp long 是 时间戳 返回结果: { \"errno\": 0, \"error\": null, \"entities\": [ { \"postCode\": \"88\", \"postName\": \"测试\", \"formal\": false, \"timestamp\": 1603260786072, \"disabled\": false }, { \"postCode\": \"61\", \"postName\": \"在校生\", \"formal\": false, \"timestamp\": 1604646910939, \"disabled\": false }, { \"postCode\": \"62\", \"postName\": \"校友\", \"formal\": false, \"timestamp\": 1604646926142, \"disabled\": false }, { \"postCode\": \"aaa\", \"postName\": \"aaaa\", \"formal\": false, \"timestamp\": 1605099529978, \"disabled\": false } ], \"total\": 4 } 参数说明: 参数 类型 说明 errno int 返回状态, 0 成功, 1 失败 error String 返回状态消息 entities 自定义对象 返回值为部门id列表 postCode string 岗位编码 postName string 岗位名称 formal boolean 是否正式岗位, true 是, false 否 timestamp long 时间戳 disabled boolean 是否有效, true有效, false无效 三、增量获取用户信息 查询用户在某个应用匹配的应用角色 请求⽅式: GET(HTTPS或HTTP) 请求地址: http://self.xxx.edu.cn/linkid/api/aggregate/keTan/public/findUsersByDate?timestamp={timestamp} 注:https方式类似。 请求参数: 示例: http://ljw.sso.rghall.com.cn/linkid/api/aggregate/keTan/public/findUsersByDate?timestamp=1601000903868 参数说明: 参数 类型 是否必须 说明 timestamp long 是 时间戳 返回结果: { \"errno\": 0, \"error\": null, \"entities\": [ { \"account\": \"00000002\", \"name\": \"gzx123\", \"email\": \"null\", \"phone\": \"13305902541\", \"timestamp\": 1601458338487, \"disabled\": true }, { \"account\": \"1987121\", \"name\": \"郭知\", \"email\": \"null\", \"phone\": \"13305902541\", \"timestamp\": 1602666383817, \"disabled\": true } ], \"total\": 2 } 参数说明: 参数 类型 说明 errno int 返回状态, 0 成功, 1 失败 error String 返回状态消息 entities 自定义对象 返回值为部门id列表 account string 学工号 name string 姓名 email string 邮箱 phone string 手机号 timestamp long 时间戳 disabled boolean 是否有效, true有效, false无效 四、增量获取三元组关系接口 查询用户在某个应用匹配的应用角色 请求⽅式: GET(HTTPS或HTTP) 请求地址: http://self.xxx.edu.cn/linkid/api/aggregate/keTan/public/findUserOrganizationPost?timestamp={timestamp} 注:https方式类似。 请求参数: 示例: http://ljw.sso.rghall.com.cn/linkid/api/aggregate/keTan/public/findUserOrganizationPost?timestamp=1601000903868 参数说明: 参数 类型 是否必须 说明 timestamp long 是 时间戳 返回结果: { \"errno\": 0, \"error\": null, \"entities\": [ { \"account\": \"vincent\", \"postCode\": \"10\", \"deptCode\": null, \"userCode\": null, \"timestamp\": 1601458338487, \"disabled\": true }, { \"account\": \"vincent\", \"postCode\": \"10\", \"deptCode\": null, \"userCode\": null, \"timestamp\": 1602666383817, \"disabled\": true } ], \"total\": 2 } 参数说明: 参数 类型 说明 errno int 返回状态, 0 成功, 1 失败 error String 返回状态消息 entities 自定义对象 返回值为部门id列表 account string 学工号 postCode string 岗位编码 deptCode string 编码编码 userCode 废弃 废弃 timestamp long 时间戳 disabled boolean 是否有效, true有效, false无效 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-07 20:06:02 "},"linkid/userorganizationpost/faq/faq.html":{"url":"linkid/userorganizationpost/faq/faq.html","title":"FAQ","keywords":"","body":"FAQ 待补充 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-11-30 10:33:39 "},"linkid/dlmu/introduction/":{"url":"linkid/dlmu/introduction/","title":"开发前须知","keywords":"","body":"开发前须知 接口规范说明 接口调用授权 接口规范说明: 各类数据内容返回, 属性名为驼峰式, 以文档示例为准 分页接口, 分页参数属性是驼峰式, 以文档示例为准 接口调用授权: 获取accessToken 设置请求头 Authorization: Bearer {access_token} ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-08 17:25:12 "},"linkid/dlmu/public/interface/dlmu-external-api.html":{"url":"linkid/dlmu/public/interface/dlmu-external-api.html","title":"其他接口","keywords":"","body":"其他接口 查询所有对接的应用 查询用户的入口授权 一、查询所有对接的应用 门户应用获取已对接的应用列表, 展示应用相关信息 请求⽅式: GET(HTTPS或HTTP) 请求地址: http://self.xxx.edu.cn/linkid/api/aggregate/app/public/find/clientId/name/all 注:https方式类似。 请求参数: 请求示例: https://ljw.sso.rghall.com.cn/linkid/api/aggregate/app/public/find/clientId/name/all 返回结果: { \"code\": 200, \"message\": \"OK\", \"data\": [ { \"clientId\": \"OC4wNS4wNS4wNy4wMC4wMy4wMS4wMS4w\", \"name\": \"智慧身份源系统\", \"url\": \"http://id.ruijie.com.cn\", \"describe\": \"智慧身份源系统\", \"isDeleted\": false }, { \"clientId\": \"11111111111111\", \"name\": \"11111111111111111\", \"url\": \"http://www.1111111.com\", \"describe\": \"11111111111111111111111\", \"isDeleted\": false } ] } 参数说明: 参数 类型 说明 code int 返回状态code message String 返回状态消息 data 自定义对象 自定义对象 clientId string 应用的clientId name string 应用名称 url string 应用url describe string 应用描述 isDeleted boolean 是否已删除, true:已删除, false: 未删除 二、查询用户有入口授权的应用 查询用户的有入口授权的应用 请求⽅式: GET(HTTPS或HTTP) 请求地址: http://self.xxx.edu.cn/linkid/remote/permission/entrance/public/find/entancePermissions/{userId} 注:https方式类似。 请求参数: 请求示例: https://ljw.sso.rghall.com.cn/linkid/remote/permission/entrance/public/find/entancePermissions/admin 返回结果: { \"code\": 200, \"message\": \"OK\", \"data\": [ { \"clientId\": \"OC4wNS4wNS4wNy4wMC4wMy4wMS4wMS4w\", \"name\": \"智慧身份源系统\", \"url\": \"http://id.ruijie.com.cn\", \"describe\": \"智慧身份源系统\", \"isDeleted\": null }, { \"clientId\": \"11111111111111\", \"name\": \"11111111111111111\", \"url\": \"http://www.1111111.com\", \"describe\": \"11111111111111111111111\", \"isDeleted\": null } ] } 参数说明: 参数 类型 说明 code int 返回状态code message String 返回状态消息 data 自定义对象 自定义对象 clientId string 应用的clientId name string 应用名称 url string 应用url describe string 应用描述 isDeleted null 无用字段 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-16 17:37:08 "},"linkid/dlmu/faq/faq.html":{"url":"linkid/dlmu/faq/faq.html","title":"FAQ","keywords":"","body":"FAQ 待补充 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-11-30 10:33:38 "},"release-notes.html":{"url":"release-notes.html","title":"发行说明","keywords":"","body":"发行说明 SID对外开放API包含不同的发行版本,本文档将描述每个版本新增、修改、废弃3部分所包含的接口。 1.7.2版本 新增接口 群组对外接口 修改接口 废弃接口 1.8.0版本 新增接口 人脸对外接口 人脸厂商标准接口 人脸应用标准接口 修改接口 废弃接口 1.7.2版本 一、新增接口 SourceID 1.7.2中添加了以下接口: 1、群组对外接口 创建群组节点、更新群组节点、删除群组节点、查询某个群组节点 创建成员、更新成员、删除成员、查询成员、获取群组节点下成员 待补充 二、修改接口 SourceID 1.7.2中更新了以下接口: 无 三、废弃接口 SourceID 1.7.2中删除了以下接口: 无 1.8.0版本 一、新增接口 SourceID 1.8.0中添加了以下接口: 1、人脸对外接口 1:1 认证、1:N 认证、增量同步照片、增量同步特征值、通过用户id和照片类型查询照片、检查照片质量、通过用户id list查询用户照片、上传照片 2、人脸厂商标准接口 1:1 认证、1:N 认证、静默活体检测、照片分析(特征值与质量分析)、照片查询、照片删除、照片修改、照片增加 3、人脸应用标准接口 照片分析(特征值与质量分析) 待补充 二、修改接口 SourceID 1.7.2中更新了以下接口: 无 三、废弃接口 SourceID 1.7.2中删除了以下接口: 无 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-08 17:27:26 "},"appendix/global-error-code.html":{"url":"appendix/global-error-code.html","title":"全局错误码","keywords":"","body":"全局错误码 SID常用的错误码如下: 错误码 说明 204 返回值为空 401 认证失败 412 业务自定义异常(业务正常进行的条件不具备),例如:根据userId查询用户详细信息时,返回用户id不存在 500 服务器内部异常,例如:服务器访问数据失败 更多错误码详见: HTTP 响应代码。 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-04 18:41:28 "},"appendix/interface-performance.html":{"url":"appendix/interface-performance.html","title":"接口性能","keywords":"","body":"接口性能 人脸模块 人脸模块 1:1 认证接口(特征值或照片),按厂商性能: (90tps * 50k)= 5M,2pod 1:N 认证接口(特征值或照片),按厂商性能: (90tps * 50k)= 5M,2pod 全量同步照片接口(水印或不加水印),分页查询每页最多10条: 10tps, 2pod 增量同步照片接口(水印或不加水印): 10tps, 2pod 全量同步应用特征值接口,分页查询每页最多3000条: 20tps,2pod 增量同步特征值接口, 分页查询每页最多3000条: 20tps,2pod 通过用户id和照片类型查询照片返回url: 100tps,2pod 通过用户id和照片类型查询照片返回base64照片(添加水印或不加水印): (50*100kb)= 10M 照片质量分析 : (90tps * 50k)= 5M,2pod 通过用户id list查询用户照片(水印或不加水印): 10tps, 2pod 上传照片(通过类型+用户id): 100tps,2pod ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-11-30 10:33:38 "},"appendix/faq/faq.html":{"url":"appendix/faq/faq.html","title":"FAQ","keywords":"","body":"FAQ 待补充 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-04 18:34:44 "}}
\ No newline at end of file
+{"./":{"url":"./","title":"概述","keywords":"","body":"概述 SourceID(简称SID)对外开放用户、认证、组织、标签、群组、人脸、角色、三元组等数据接口,为学校各类应用提供标准的对接方式,以满足多样化的管理和服务场景。 API更新内容详见:版本发行说明。 典型对接场景 单点对接 对于学校已建应用,通过【认证接口】对接,可实现应用的单点登录。并且支持多种认证方式,密码认证、手机号认证、微信认证等,可让学校师生使用应用更加便捷,也便于应用统一管理。 人脸对接(人脸厂商、人脸应用) 1、人脸厂商对接 单厂商:当学校需要使用人脸应用/设备时,通过人脸厂商提供的【人脸厂商标准接口】,在SID中建立人脸库。由学校管理师生的人脸信息,可更好地保证人脸信息安全。多厂商:当学校需要使用多个厂商提供的人脸应用/设备时,可通过【人脸厂商标准接口】,实现多厂商对接。应用/设备使用人脸对比算法可在不同厂商间切换。可实现学校对不同人脸厂商资源进行管理。 2、人脸应用对接 当学校需要使用人脸应用/设备时,通过人脸应用提供的【人脸应用标准接口】,在SID中建立人脸库。由学校管理师生的人脸信息,可更好地保证人脸信息安全。同时,学校的应用/设备使用照片分析算法可在不同人脸应用间切换。与人脸厂商相比,人脸应用只向SID提供特性接口(照片分析),而人脸对比等算法由人脸厂商提供。 群组对接 学校可基于不同的身份类别、职务职称、岗位等维度灵活定义群组。同时,通过群组同步,身份与组织可感知变化,自动变更、自动同步,提高业务实时性,保障学校业务的顺利开展。 一般应用对接 对于一般管理/服务场景的应用,可直接调用标准接口,获取用户、组织、标签、群组、角色、三元组、人脸特征值等信息。 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-08 14:47:14 "},"quick-get-start/explain.html":{"url":"quick-get-start/explain.html","title":"名词解释","keywords":"","body":"名词解释 名词 解释 组织 带有层级关系的用户组。组织通过部门定义用户所在节点的层级关系 群组 带有层级关系的用户组,其中”用户组”是指“具有相似特性或相似权利的用户的集合”。“群组”与“组织”的区别在于,“组织”只能通过部门定义用户所在节点的层级关系,“群组”可以将“身份标签”、“身份类型”与“组织”结合,更加灵活地组合定义 三元组 组织、岗位(包含正式岗位、虚拟岗位等)、用户间的关系 client_id 应用id client_secret 应用秘钥 access_token 访问令牌,由SourceID颁发 JWT 全称Json web token。一个开放标准(RFC 7519),它定义了一种紧凑的、自包含的方式,用于作为JSON对象在各方之间安全地传输信息。该信息可以被验证和信任,因为它是数字签名的 人脸厂商 提供人脸算法(对比、静默活体检测、特征值与质量分析)的第三方 人脸应用 只提供少量特性人脸算法(如特征值与质量分析)的第三方 人脸厂商标准接口 由SourceID制定,在对接时需要人脸厂商向SourceID提供的标准接口 人脸应用标准接口 由SourceID制定,在对接时需要人脸应用向SourceID提供的标准接口 应用前端比对 人脸应用自身具备比对能力,在对接时无需使用SourceID提供的比对接口 应用在线比对 在线人脸应用不具备比对能力,在对接时需要使用SourceID提供的比对接口 FAQ 常见问题解答 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-08 14:48:39 "},"quick-get-start/general-application-docking.html":{"url":"quick-get-start/general-application-docking.html","title":"单点对接","keywords":"","body":"单点对接 SID向应用提供CAS和OAuth2.0两种单点登录认证方式: CAS单点对接说明 应用通过调用CAS认证接口,实现与SID的单点对接。 从结构上看,CAS 包含两个部分: CAS Server 和 CAS Client。CAS Server 需要独立部署,主要负责对用户的认证工作;CAS Client 负责处理对客户端受保护资源的访问请求,需要登录时,重定向到 CAS Server。应用和SID的角色分别对应CAS Client、CAS Server,因此,应用需实现CAS Client功能以对接SID(CAS Server)。 OAuth2.0单点对接说明 OAuth协议是一种安全协议,允许用户授权第三方应用访问其储存在“其他服务提供者”上的信息,而不需要将用户名和密码提供给第三方应用或分享用户数据的所有内容。 OAuth2.0协议描述了4种客户端应用程序获取访问令牌(代表用户对客户端访问其数据权限的许可)的模式,各种模式的应用场景如下: authorization code:授权码模式 功能最完整、流程最严密的授权模式,通常使用在公网的开放平台中。适用于有自己的服务器的应用,授权码是一个一次性临时凭证,用来换取 access_token 和 refresh_token。一旦换取成功,code 立即作废,不能再使用第二次。 resource owner password credentials:密码模式 一般在内部系统中使用,调用者以用户为单位。用户向客户端提供自己的用户名和密码,向“其他服务提供者”换取 access_token 。 client credentials:客户端模式 一般在内部系统之间的API调用,两个平台之间调用,调用者以平台为单位。如第三方,或者调用者是一个后端模块,没有用户界面时,可以使用客户端模式。鉴权服务器直接对客户端进行身份验证,验证通过后,返回 token。 implicit:简化模式 适用于纯静态页面应用。该模式下,access_token 容易泄露且不可刷新。 SID提供了授权码模式、密码模式、客户端模式接口与应用进行单点对接,接口详见:OAuth2.0认证接口。 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-07 15:07:24 "},"quick-get-start/face-docking.html":{"url":"quick-get-start/face-docking.html","title":"人脸对接","keywords":"","body":"人脸对接 人脸业务说明 SID人脸提供统一标准进行用户照片采集和入库,以及照片管理。通过对接多家厂商或应用,实现人脸照片分析、认证等功能,并对外提供人脸接口服务。 人脸对接说明 主要从以下3方面进行人脸对接: 人脸厂商对接。人脸厂商提供对接API(由SID制定),SID进行调用,实现照片分析、认证、静默活体检测等功能。 对接过程中,人脸厂商需按照【人脸厂商标准接口】实现相关接口,以供SID调用。 人脸应用对接。人脸应用提供API(由SID制定),SID进行调用,实现照片分析功能。相较于人脸厂商,人脸应用只向SID提供特性接口(照片分析),而SID所使用的认证等功能由人脸厂商提供。 对接过程中,人脸应用需按照【人脸应用标准接口】实现相关接口,以供SID调用。 人脸对外接口服务。SID提供人脸接口服务,服务使用者进行接口调用。 对接过程中,人脸服务使用者按照【人脸对外接口】调用API即可。 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-08 14:55:00 "},"quick-get-start/group-docking.html":{"url":"quick-get-start/group-docking.html","title":"群组对接","keywords":"","body":"群组对接 群组业务说明 用户在SID中新建一个群组并推送群组数据后,应用将通过其同步接口接收请求数据,并根据请求进行节点和人员的查询、新增、修改、删除,与SID同步。 对于学校不同应用的群组对接: 由锐捷制定标准同步接口,包括群组节点管理和人员管理,应用需实现该接口进行群组同步。适用于校内应用。 由应用制定标准同步接口,锐捷需进行适当的对接开发。适用于企业微信、钉钉等应用。 群组对接技术说明 群组同步方式:推送方式,即SID调用应用同步接口进行实时或定时增量推送,也可手动推送(增量和全量方式)。 对于校内应用,同步接口开发需采用RESTful方式。 对于企业微信、钉钉等应用,需联系锐捷研发,并提供组织或群组对接API,锐捷研发人员将对SID进行定制化开发。 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-07 11:08:38 "},"application-register.html":{"url":"application-register.html","title":"应用注册","keywords":"","body":"应用注册 应用在SID中注册后,SID将根据填写信息生成应用ID、应用秘钥(若有必要,可向锐捷研发人员索要)。应用注册步骤为: 1、新增对接应用。 2、填写应用基础信息。 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-07 17:36:28 "},"get-access-token.html":{"url":"get-access-token.html","title":"获取Token方式一:获取access_token","keywords":"","body":"获取access_token 说明 获取access_token是调用SourceID业务接口的第一步,相当于创建了一个登录凭证,相关业务API接口都需要依赖于access_token来鉴权调用者身份。因此开发者,在使用业务接口前,要明确access_token的颁发来源,使用正确的access_token。 获取token 请求方式: GET(HTTPS或HTTP) 请求地址:http://{server}/oauth2.0/accessToken?grant_type=client_credentials&client_id=xxx&client_secret=xxx 注:https方式类似。 请求参数包: 无 请求参数说明: 参数 必须 说明 grant_type 是 客户端模式,这里固定为client_credentials client_id 是 应用id client_secret 是 应用秘钥 scope 否 权限列表,以空格分隔,空为默认 返回结果: { \"access_token\": \"AT-1-IWyhZhU1hKKvWPddAJpdHRN2ECu08Ypo\", \"token_type\": \"bearer\", \"expires_in\": 28800, \"refresh_token\": \"RT-1-cvHg23sAYRfu-1h8e57U9PSGK1qyL-mW\" } 参数说明: 参数 说明 access_token 访问令牌 token_type 令牌类型 expires_in 令牌有效期 refresh_token 刷新令牌 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-07 19:39:59 "},"get-JWT.html":{"url":"get-JWT.html","title":"获取Token方式二:获取JWT","keywords":"","body":"获取JWT 说明 获取Json web token(JWT)和access_token类似,是获取凭证的另一种方式。是调用SourceID业务接口的第一步,相当于创建了一个登录凭证,相关业务API接口都需要依赖于JWT来鉴权调用者身份。因此开发者,在使用业务接口前,要明确JWT的颁发来源,使用正确的JWT。 获取token 请求方式: POST(HTTPS或HTTP) 请求地址: http://{server}/oauth2.0/jwt 注:https方式类似。 请求参数包: { \"username\":xxx, \"password\":xxx } 请求参数说明: 参数 必须 说明 username 是 应用唯一标识,对应应用ID password 是 应用秘钥 返回结果: { \"token\": \"xxx\", \"expires_in\": xxx } 参数说明: 参数 说明 token 访问令牌 expires_in 令牌有效期 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-07 19:40:37 "},"linkid/user/introduction/":{"url":"linkid/user/introduction/","title":"开发前须知","keywords":"","body":"开发前须知 用户接口规范说明 用户接口调用授权 用户数据获取授权 用户接口规范说明: 用户信息返回, 以国标为准, 属性名返回为大写, 文档示例仅为参考, 属性可随配置增减 分页接口, 分页参数属性是驼峰式, 以文档示例为准 分页接口, 数据内容部分,属性名返回为大写, 文档示例仅为参考, 属性可随配置增减 用户接口调用授权: 获取accessToken 设置请求头 Authorization: Bearer {access_token} 用户数据授权: ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-08 11:33:19 "},"linkid/user/public/interface/user-external-api.html":{"url":"linkid/user/public/interface/user-external-api.html","title":"用户信息对外接口","keywords":"","body":"用户信息对外API 用户信息对外api描述SID向应用提供的标准接口,以便外部应用调用。标准接口如下: 根据学工号获取身份平台用户信息 用户同步 微哨在用接口-应用同步用户信息 微哨在用接口-根据学工号查询用户信息 微哨在用接口-增量同步用户 一、根据学工号获取身份平台用户信息 根据学工号获取身份平台用户信息 请求⽅式: GET(HTTPS或HTTP) 请求地址: http://self.xxx.edu.cn/linkid/api/aggregate/user/public/userInfo/{userId} 注:https方式类似。 请求参数: userId: 学工号 参数说明: 参数 类型 是否必须 说明 userId String 是 用户的学工号 返回结果: { \"code\": 200, \"message\": \"OK\", \"data\": { \"XH\": \"2220184875\", \"XM\": \"张4875\", \"IDCARD\": \"3454566531\", \"BJM\": \"0\", \"SZBH\": \"433898\", \"ZZMM\": \"共青团员\", \"KLMC\": \"理工类\", \"CSD\": \"湖北\", \"objectId\": \"5d1c52e1ee25e001c51a1da5\", \"XSDQZTM\": \"导入待生效\", \"CSRQ\": \"2000-09-01\", \"SFZJLX\": \"居民身份证\", \"XB\": \"女性\", \"SZDW\": [\"201000\"], \"MZ\": \"汉族\", \"LASTCHANGEPASSWORDTIME\": \"2019-07-02T16:00:00.000+0000\" } } 参数说明: 参数 类型 说明 code int 返回状态code message String 返回状态消息 data 自定义对象 返回值的自定义对象 XH String 学号, 用户为学生时返回, 教工不返回 GH String 工号, 用户为教工时返回, 学生不返回 XM String 姓名 SFLBDM String 参照学校真实“标准”配置 LASTCHANGEPASSWORDTIME Double 上次修改密码时间 更多返回信息 更多返回信息含义,请查看标准 二、用户同步 当业务系统需要某个部门、班级的全部用户信息时,可以通过API同步身份平台的相关用户信息。 请求⽅式: POST(HTTPS或HTTP) 请求地址: http://self.xxx.edu.cn/linkid/api/aggregate/user/public/pageQueryUsers 注:https方式类似。 请求参数: { \"currentPage\": 1, \"pageSize\": 10 } 参数说明: 参数 类型 是否必须 说明 currentPage int 是 当前页 pageSize int 是 每页返回记录数 返回结果: { \"code\": 200, \"message\": \"OK\", \"data\": { \"userList\": [{ \"XH\": \"2220184875\", \"XM\": \"张4875\", \"IDCARD\": \"3454566531\", \"BJM\": \"0\", \"SZBH\": \"433898\", \"ZZMM\": \"共青团员\", \"KLMC\": \"理工类\", \"CSD\": \"湖北\", \"objectId\": \"5d1c52e1ee25e001c51a1da5\", \"XSDQZTM\": \"导入待生效\", \"CSRQ\": \"2000-09-01\", \"SFZJLX\": \"居民身份证\", \"XB\": \"女性\", \"SZDW\": [\"201000\"], \"MZ\": \"汉族\", \"LASTCHANGEPASSWORDTIME\": \"2019-07-02T16:00:00.000+0000\" } ], \"currentPage\": 1, \"pageSize\": 10, \"aggregatePageSortDtos\": null, \"totalPages\": 9, \"totalAmount\": 89 } } 参数说明: 参数 类型 说明 code int 返回状态code message String 返回状态消息 data 自定义对象 返回值的自定义对象 currentPage int 当前页 pageSize int 每页返回记录数 totalPages int 总页数 totalAmount int 总记录数 userList List 用户信息列表, 用户信息返回参考 根据学工号获取身份平台用户信息接口 更多返回信息 更多返回信息含义,请查看标准 三、微哨在用接口-应用同步用户信息 微哨通过配置认证api返回的属性, 获取对应的用户信息。 请求⽅式: POST(HTTPS或HTTP) 请求地址: http://self.xxx.edu.cn/linkid/service/user/applicationconfig/userinfo 注:https方式类似。 请求参数: { \"usertype\":\"02\", \"currentPage\":0, \"pageSize\":10 } 参数说明: 参数 类型 是否必须 说明 currentPage int 是 当前页 pageSize int 是 每页返回记录数 usertype string 是 人员类型, 默认:教职工01、本科生02、研究生03、临时人员05, 实际以学校现场配置位置 返回结果: { \"code\": 200, \"message\": \"OK\", \"data\": { \"totalAmount\": 1, \"userPropertyNameValueDtos\": [ [ { \"propertyValue\": \"女性\", \"propertyName\": \"XB\" }, { \"propertyValue\": \"中国\", \"propertyName\": \"GJ\" }, { \"propertyValue\": \"888888888888888888\", \"propertyName\": \"IDCARD\" }, { \"propertyValue\": \"\", \"propertyName\": \"SFZJYXQ\" }, { \"propertyValue\": \"1986-12-01\", \"propertyName\": \"CSRQ\" }, { \"propertyValue\": \"叶雪雪\", \"propertyName\": \"XM\" }, { \"propertyValue\": \"\", \"propertyName\": \"XMPY\" }, { \"propertyValue\": \"\", \"propertyName\": \"CYM\" }, { \"propertyValue\": \"中国共产党党员\", \"propertyName\": \"ZZMM\" }, { \"propertyValue\": \"1567111106\", \"propertyName\": \"XH\" }, { \"propertyValue\": \"02\", \"propertyName\": \"SFLBDM\" }, { \"propertyValue\": \"汉族\", \"propertyName\": \"MZ\" }, { \"propertyName\": \"EMAIL\" } ] ] } } 参数说明: 参数 类型 说明 code int 返回状态code message String 返回状态消息 data 自定义对象 返回值的自定义对象 totalAmount int 总记录数 userPropertyNameValueDtos List 用户信息列表 propertyName string 用户属性名称 propertyValue object 用户属性的值 更多用户属性 更多用户属性, 请查看标准 四、微哨在用接口-根据学工号查询用户信息 微哨通过配置认证api返回的属性, 获取对应的用户信息。 请求⽅式: POST(HTTPS或HTTP) 请求地址: http://self.xxx.edu.cn/linkid/api/user/public/userinfo/bypropertynames 注:https方式类似。 请求参数: { \"propertyNames\":[ \"GH\", \"XH\" ], \"value\":\"1\" } 参数说明: 参数 类型 是否必须 说明 propertyNames list 是 用户属性的名称, 根据学工号查询传GH和XH value string 是 用户属性的值, 学工号 返回结果: { \"code\": 200, \"message\": \"OK\", \"data\": [ { \"propertyValue\": \"居民身份证\", \"propertyName\": \"SFZJLXM\" }, { \"propertyValue\": true, \"propertyName\": \"ISINITIALPASSWORD\" }, { \"propertyValue\": \"男性\", \"propertyName\": \"XB\" }, { \"propertyValue\": \"中国\", \"propertyName\": \"GJ\" }, { \"propertyValue\": \"true\", \"propertyName\": \"ZHZT\" }, { \"propertyValue\": \"511623199802265719\", \"propertyName\": \"IDCARD\" }, { \"propertyValue\": \"\", \"propertyName\": \"SFZJYXQ\" }, { \"propertyValue\": \"1\", \"propertyName\": \"GH\" }, { \"propertyValue\": \"在职\", \"propertyName\": \"JZGZT\" }, { \"propertyValue\": \"2020-09-15\", \"propertyName\": \"CSRQ\" }, { \"propertyValue\": \"xs教职工测试14\", \"propertyName\": \"XM\" }, { \"propertyValue\": \"\", \"propertyName\": \"XMPY\" }, { \"propertyValue\": \"\", \"propertyName\": \"CYM\" }, { \"propertyValue\": \"群众\", \"propertyName\": \"ZZMM\" }, { \"propertyValue\": \"\", \"propertyName\": \"DZXX\" }, { \"propertyValue\": \"\", \"propertyName\": \"DH\" }, { \"propertyName\": \"YDDH\" }, { \"propertyValue\": \"\", \"propertyName\": \"CSD\" }, { \"propertyValue\": \"01\", \"propertyName\": \"SFLBDM\" }, { \"propertyValue\": \"2020-10-21T16:00:00.000+0000\", \"propertyName\": \"LASTCHANGEPASSWORDTIME\" }, { \"propertyValue\": \"汉族\", \"propertyName\": \"MZ\" }, { \"propertyName\": \"EMAIL\" }, { \"propertyValue\": [ \"RJXZZZ\" ], \"propertyName\": \"SZDW\" }, { \"propertyValue\": \"5f91215e74b038000764975d\", \"propertyName\": \"objectId\" } ] } 参数说明: 参数 类型 说明 code int 返回状态code message String 返回状态消息 data 自定义对象 返回值的自定义对象 propertyName string 用户属性名称 propertyValue object 用户属性的值 更多用户属性 更多用户属性, 请查看标准 五、微哨在用接口-增量同步用户 微哨增量从SourceId同步用户。 请求⽅式: POST(HTTPS或HTTP) 请求地址: http://self.xxx.edu.cn/linkid/api/user/dataSource/public/pageQuery/time 注:https方式类似。 请求参数: { \"current\":1, \"size\":\"1\", \"startTime\":\"2010-01-01 00:00:00\", \"endTime\":\"\" } 参数说明: 参数 类型 是否必须 说明 current list 是 当前页 size string 是 每页返回数据量 startTime string 是 查询这个时间之后有更新的用户数据, 格式:\"yyyy-MM-dd hh:mm:ss\" endTime string 否 查询这个时间之前有更新的用户数据,格式:\"yyyy-MM-dd hh:mm:ss\" 返回结果: { \"code\": 200, \"message\": \"OK\", \"data\": { \"total\": 100, \"users\": [ { \"GH\": \"R00166\", \"updatedTime\": 1604913327223, \"SFLBDM\": \"01\", \"szdwAndGwmc\": [ { \"szdw\": \"R5f91269d45fc080006eab46b\", \"gwmc\": null, \"type\": null, \"szdwSource\": \"RG_SourceID\" } ], \"isDeleted\": false, \"XM\": \"xs教职工测试14\", \"LABEL\": [], \"EMAIL\": null, \"SZDW\": [ \"R5f91269d45fc080006eab46b\" ] } ] } } 参数说明: 参数 类型 说明 code int 返回状态code message String 返回状态消息 data 自定义对象 返回值的自定义对象 total int 总数 GH string 用户属性名称 SFLBDM string 人员类型代码 XM string 姓名 SZDW list 所在单位代码, 一个人有多部门 szdwAndGwmc list 用户三元组数据 更多用户属性 更多用户属性, 请查看标准 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-08 19:07:47 "},"linkid/user/faq/faq.html":{"url":"linkid/user/faq/faq.html","title":"FAQ","keywords":"","body":"FAQ 待补充 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-11-30 10:33:38 "},"linkid/authentication/introduction/cas-README.html":{"url":"linkid/authentication/introduction/cas-README.html","title":"CAS单点对接","keywords":"","body":"CAS单点对接 准备工作 网络检查 应用注册、配置 集成CAS Client CAS单点对接 准备工作 在测试或对接之前,应用需做以下3点准备工作: 1、网络检查 检查网络是否互通(如DNS),不通则找学校业务负责人。 2、应用注册、配置 (1)应用注册。 (2)单点登录对接配置-进入配置。 (3)配置CAS单点登录对接相关信息。 注: 回调地址采用地址匹配模式,可匹配该地址的子集地址。 cas登出方式有两种方式: 前端登出(FRONT_CHANNEL):用户点击logout链接(链接地址为cas登出地址)时,浏览器跳转到cas登出地址,cas登出页面给对接应用发送jsonp的登出请求,达到登出效果。注意:前端登出不支持cas会话超时自动登出。 后端登出(BACK_CHANNEL):是当TGT超时时,或者用户通过链接访问cas登出地址时,cas服务器直接给应用服务器发送登出请求,以达到登出效果。 (4)启用配置。 3、集成CAS Client (1)配置maven环境依赖。 org.jasig.cas.client cas-client-core 3.5.0 也可从https://mvnrepository.com/artifact/org.jasig.cas.client/cas-client-core地址下载。 (2)配置应用程序部署描述文件 (web.xml) 说明: 下文内{server}表示sso地址,示例:http://ljw.sso.rghall.com.cn。 sso的登录地址、ticket验证地址、登出地址详见:CAS认证接口。 1)必备配置。设置serverName、监听类。serverName为登陆成功或者退出成功的应用回调地址。 serverName http://localhost:8080 org.jasig.cas.client.session.SingleSignOutHttpSessionListener 2)配置AuthenticationFilter(需要配置sso登录地址)。 AuthenticationFilter的作用是用于拦截SSO登陆请求的,当你提交的request符合SSO登陆规则,CAS client会通过这个filter将登陆请求转向到CAS server的登陆界面。因为这是第一步,所以它要在最上面。 CAS Authentication Filter org.jasig.cas.client.authentication.AuthenticationFilter casServerLoginUrl {server}/login CAS Authentication Filter /* 3)配置TicketValidationFilter(需要配置ticket验证地址)。 用于拦截登陆返回的跳转请求的。当CAS server确认登陆用户名密码后,会返回一个server ticket,这个ticket会由应用服务器上的CAS client再送回CAS server进行验证,用于防止仿冒攻击的。 CAS Validation Filter org.jasig.cas.client.validation.Cas30ProxyReceivingTicketValidationFilter casServerUrlPrefix {server}/p3 redirectAfterValidation true tolerance 5000 CAS Validation Filter /* 注: org.jasig.cas.client.validation.Cas30ProxyReceivingTicketValidationFilter为CAS3.0协议。CAS2.0协议请配置org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter,同时配置:casServerUrlPrefix为{server},不带“/p3”。 4)配置HttpServletRequestWrapperFilter。 目的是将CAS server返回的信息封装到Http request里面,这样客户端就可以用request.getRemoteUser()来获取用户名等信息了。 CAS HttpServletRequest Wrapper Filter org.jasig.cas.client.util.HttpServletRequestWrapperFilter CAS HttpServletRequest Wrapper Filter /* 5)配置AssertionThreadLocalFilter。 是用于前端程序(通常是前端脚本程序)访问,因为这个时候无法通过request来获取信息。 CAS Assertion Thread Local Filter org.jasig.cas.client.util.AssertionThreadLocalFilter CAS Assertion Thread Local Filter /* (6)配置SingleSignOutFilter。 用于拦截登出路径,清除登录信息。 CAS Single Sign Out Filter org.jasig.cas.client.session.SingleSignOutFilter CAS Single Sign Out Filter /* CAS单点对接 准备工作完成后,开发人员可进行测试或单点对接。 对接成功后,可使用如下代码获取登陆用户名和用户信息: //在应用程序中获取用户信息 AttributePrincipal principal = (AttributePrincipal)request.getUserPrincipal(); String username = principal.getName(); //获取用户属性的示例代码如下: Map attributes = principal.getAttributes(); String email=attributes.get(\"age\"); //获取需要的属性,key填属性名即可 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-08 16:55:26 "},"linkid/authentication/introduction/oauth-README.html":{"url":"linkid/authentication/introduction/oauth-README.html","title":"OAuth2.0单点对接","keywords":"","body":"OAuth2.0单点对接 准备工作 网络检查 应用注册、配置 OAuth2.0单点对接 准备工作 在测试或对接之前,应用需做以下2点准备工作: 1、网络检查 检查网络是否互通(如DNS),不通则找学校业务负责人。 2、应用注册、配置 (1)应用注册。 (2)单点登录对接配置-进入配置。 (3)配置OAuth2单点登录对接相关信息。 注: 回调地址采用地址匹配模式,可匹配该地址的子集地址。 目前的登出类型为前端登出(FRONT_CHANNEL)。即使用href引用登出地址的方式登出,登出后浏览器跳转到统一认证页面。这种方式要求应用的协议与cas的传输协议一致(当cas是https协议时,则应用也必须是https)。前端登出方式达不到cas会话超时自动登出的效果。 记录下应用ID、应用秘钥,以便应用请求SID认证接口。 (4)启用配置。 OAuth2.0单点对接 准备工作完成后,开发人员调用OAuth2.0认证接口可实现测试或单点对接。 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-08 15:15:02 "},"linkid/authentication/introduction/application-free-certification-README.html":{"url":"linkid/authentication/introduction/application-free-certification-README.html","title":"APP内应用免认证","keywords":"","body":"APP内应用免认证 准备工作 OAuth2.0授权码支持 提供应用id和应用秘钥给sso 支持OAuth的三个接口 对接原理 缓存方案建议 准备工作 在对接之前,应用需做以下3点准备工作: 1、APP支持标准的OAuth授权码模式支持 流程简介: 获取code。 code换token。 token换用户信息。 2、提供应用id和应用秘钥给sso 将sso域名注册到APP应用中,并且提供应用id和应用秘钥。 3、支持OAuth的三个接口 见接口文档 OAuth认证接口。 对接原理 缓存方案建议 通过OAuth验证接口获取成员身份会有一定的时间开销。对于频繁获取成员身份的场景,建议采用如下方案: 应用中的URL链接直接填写企业自己的页面地址。 成员操作跳转到步骤1的企业页面时,企业后台校验是否有标识成员身份的cookie信息,此cookie由企业生成。 如果没有匹配的cookie,则重定向到OAuth验证链接,获取成员的身份信息后,由企业后台植入标识成员身份的cookie信息。 根据cookie获取成员身份后,再进入相应的页面。 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-28 10:58:02 "},"linkid/authentication/public/interface/cas-authentication.html":{"url":"linkid/authentication/public/interface/cas-authentication.html","title":"CAS认证接口","keywords":"","body":"CAS认证接口 用户认证 请求验证ticket cas登出 一、用户认证 应用向SID认证服务器请求认证,SID返回认证页面。 请求⽅式: GET(HTTPS或HTTP) 请求地址: http://{server}/login 注:https方式类似。 请求参数: 请求示例: http://ljw.sso.rghall.com.cn/login?service=http://192.168.54.63:8080/user/index 参数说明: 参数 是否必须 说明 service 是 SID要跳转的地址,即SID下发ticket的地址 返回结果: 返回ticket,示例为: http://192.168.54.63:8080/user/index?ticket=ST-368-gChqIqVuq9j83YCG9dw4sh1KDaMrg-sso-fddcfb8db-z9ng2 参数说明: 参数 说明 ticket 票据。ticket参数在service指向的url里,由SID下发 二、请求验证ticket 应用携带SID下发的ticket,请求SID验证ticket的有效性,SID验证成功后返回用户信息。 1、CAS3.0协议请求验证ticket 请求⽅式: GET(HTTPS或HTTP) 请求地址: http://{server}/p3/serviceValidate 注:https方式类似。 请求参数: 请求示例: http://ljw.sso.rghall.com.cn/p3/serviceValidate?ticket=ST-368-gChqIqVuq9j83YCG9dw4sh1KDaMrg-sso-fddcfb8db-z9ng2&service=http://192.168.54.63:8080/user/index 参数说明: 参数 是否必须 说明 ticket 是 SID下发的票据 service 是 和用户验证中的service相同 返回结果: SID返回xml格式的用户信息,如下图: 参数说明: 参数 说明 用户信息 用户信息为xml格式,包括用户登录名。返回的用户属性可在SID中配置。 2、CAS2.0协议请求验证ticket。 请求⽅式: GET(HTTPS或HTTP) 请求地址: http://{server}/serviceValidate 注:https方式类似。 请求参数: 请求示例: http://ljw.sso.rghall.com.cn/serviceValidate?ticket=ST-368-gChqIqVuq9j83YCG9dw4sh1KDaMrg-sso-fddcfb8db-z9ng2&service=http://192.168.54.63:8080/user/index 参数说明: 参数 是否必须 说明 ticket 是 SID下发的票据 service 是 和用户验证中的service相同 返回结果: SID返回xml格式的用户信息,如下图: 参数说明: 参数 说明 用户信息 用户信息为xml格式,包括用户登录名。返回的用户属性可在SID中配置。 三、cas登出 CAS登出。 请求⽅式: GET(HTTPS或HTTP) 请求地址: http://{server}/logout 注:https方式类似。 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-08 16:55:31 "},"linkid/authentication/public/interface/oauth-authentication.html":{"url":"linkid/authentication/public/interface/oauth-authentication.html","title":"OAuth2.0认证接口","keywords":"","body":"OAuth认证接口 授权码模式 密码模式 客户端模式 微信公众号对接 单点登出 一、授权码模式 该模式的授权流程为: 1、跳转到认证中心认证用户。 2、使用code获取access_token。 3、获取用户信息。 1、用户认证 跳转到SID认证中心认证用户。 请求⽅式: GET(HTTPS或HTTP) 请求地址: http://{server}/oauth2.0/authorize 注:https方式类似。 请求参数: 请求示例: http://ljw.sso.rghall.com.cn/oauth2.0/authorize?response_type=code&client_id=test2&redirect_uri=http://192.168.54.63:8080/Oauth2/token 参数说明: 参数 是否必须 说明 response_type 是 授权码模式,这里固定为code client_id 是 应用id redirect_uri 是 应用回调地址 scope 否 权限列表,以空格分隔。 返回结果: 返回code示例: http://192.168.54.63:8080/Oauth2/token?code=OC-51--uDJ5NrI-8OB5wyn2NPXpgfIRLyCtGJT 参数说明: 参数 说明 code SID跳转到redirect_uri时,code参数会附带在该地址中 2、用code获取access_token 使用code获取access_token。 请求⽅式: POST(HTTPS或HTTP) 请求地址: http://{server}/oauth2.0/accessToken 注:https方式类似。 请求头(header): Content-Type:multipart/form-data 请求参数: { \"grant_type\":\"authorization_code\", \"client_id\":\"test2\", \"client_secret\":\"HDRWcOTg56mMty6GNsjF2OZXjwWrfI0Glz8sVJKSacl6QZMX5fX9gFQjkO2z-orn\", \"redirect_uri\":\"http://192.168.54.63:8080/user/index\", \"code\":\"OC-51--uDJ5NrI-8OB5wyn2NPXpgfIRLyCtGJT\" } 参数说明: 参数 是否必须 说明 grant_type 是 授权码模式,这里固定为authorization_code client_id 是 应用id client_secret 是 应用秘钥 redirect_uri 是 应用回调地址 code 是 授权码 返回结果: { \"access_token\":\"AT-98-kkxRFRAp7JP4HvKcooOlTjqEslglCNoU\", \"token_type\":\"bearer\", \"expires_in\":28800, \"refresh_token\":\"RT-7-XuigbD-eb4qSN0LwHBSixvpmv4zCzw21\" } 参数说明: 参数 是否必须 说明 access_token 是 访问令牌 token_type 是 令牌类型 expires_in 是 令牌有效期 refresh_token 否 刷新令牌,该参数只有在SID中将下发刷新令牌勾选为“是”时才会返回 注:获取refresh_token参数的值需先在SID中选择“下发刷新令牌”,如下图: 3、获取用户信息 使用access_token获取用户信息。 请求⽅式: GET/POST(HTTPS或HTTP) 请求地址: http://{server}/oauth2.0/profile 注:https方式类似。 请求头(header): Content-Type:multipart/form-data 注:使用get请求时,不用添加请求头。 请求参数: { \"access_token\":\"AT-98-kkxRFRAp7JP4HvKcooOlTjqEslglCNoU\" } 参数说明: 参数 是否必须 说明 access_token 是 访问令牌 返回结果(老师): { \"active\": true, \"attributes\": { \"DQZTM\": \"在任\", \"DWH\": \"网络信息与综合服务中心\", \"DWM\": \"306000\", \"GH\": \"20042020\", \"PRZWMC\": \"工程师\", \"SFLBDM\": \"01\", \"XBM\": \"男性\", \"XM\": \"xxxx\" \"SFLBMC\": \"xxx\" }, \"id\": \"20042020\", \"client_id\": xxx } 参数说明: 参数 说明 id 用户名 client_id 应用id attributes 用户属性列表 XM 姓名 XBM 性别 SFLBDM 身份类别代码 GH 工号 PRZWMC 职位名称 DWM 单位名 DWH 单位号 DQZTM 当前状态 ZWJBMC 职务级别名称 SFLBMC 身份类别名称 二、密码模式 该模式的授权流程为: 1、获取access_token。 2、获取用户信息。 3、使用刷新令牌获取access_token(该步骤可选)。 1、获取access_token 获取access_token。 请求⽅式: GET(HTTPS或HTTP) 请求地址: http://{server}/oauth2.0/accessToken 注:https方式类似。 请求参数: 请求示例: http://ljw.sso.rghall.com.cn/oauth2.0/accessToken?grant_type=password&client_id=test2&username=R1118&password=12345a 参数说明: 参数 是否必须 说明 grant_type 是 密码模式为password client_id 是 应用id username 是 用户名 password 是 密码 scope 否 权限列表,以空格分隔 返回结果: { \"access_token\": \"AT-1-IWyhZhU1hKKvWPddAJpdHRN2ECu08Ypo\", \"token_type\": \"bearer\", \"expires_in\": 28800, \"refresh_token\": \"RT-1-cvHg23sAYRfu-1h8e57U9PSGK1qyL-mW\" } 参数说明: 参数 是否必须 说明 access_token 是 访问令牌 token_type 是 令牌类型 expires_in 是 令牌有效期 refresh_token 否 刷新令牌,该参数只有在SID中将下发刷新令牌勾选为“是”时才会返回 2、获取用户信息 使用access_token获取用户信息。 请求⽅式: GET/POST(HTTPS或HTTP) 请求地址: http://{server}/oauth2.0/profile 注:https方式类似。 请求头(header): Content-Type:multipart/form-data 注:使用get请求时,不用添加请求头。 请求参数: { \"access_token\":\"AT-1-IWyhZhU1hKKvWPddAJpdHRN2ECu08Ypo\" } 参数说明: 参数 是否必须 说明 access_token 是 访问令牌 返回结果(老师为例): { \"attributes\": { \"DQZTM\": \"在任\", \"DWH\": \"网络信息与综合服务中心\", \"DWM\": \"306000\", \"GH\": \"20042020\", \"PRZWMC\": \"工程师\", \"SFLBDM\": \"01\", \"XBM\": \"男性\", \"XM\": \"xxxx\" \"SFLBMC\": \"xxx\" }, \"id\": \"20042020\" } 参数说明: 参数 说明 id 用户名 attributes 用户属性列表 XM 姓名 XBM 性别 SFLBDM 身份类别代码 GH 工号 PRZWMC 职位名称 DWM 单位名 DWH 单位号 DQZTM 当前状态 ZWJBMC 职务级别名称 SFLBMC 身份类别名称 3、使用刷新令牌获取access_token 通过刷新令牌获取access_token。 请求⽅式: GET/POST(HTTPS或HTTP) 请求地址: http://{server}/oauth2.0/accessToken 注:https方式类似。 请求头(header): Content-Type:multipart/form-data 注:使用get请求时,不用添加请求头。 请求参数: { \"grant_type\":\"refresh_token\", \"client_id\":\"test2\", \"client_secret\":\"JXuRHUGzt5TEoKZGof4Dxg-cOPFotpWhu--cujis8JO0Y7qqN4EUhr4kybc7nDPB\", \"refresh_token\":\"RT-7-XuigbD-eb4qSN0LwHBSixvpmv4zCzw21\" } 参数说明: 参数 是否必须 说明 grant_type 是 固定为refresh_token client_id 是 应用id client_secret 是 应用秘钥 refresh_token 是 刷新令牌 返回结果: { \"access_token\": \"AT-1-IWyhZhU1hKKvWPddAJpdHRN2ECu08Ypo\", \"token_type\": \"bearer\", \"expires_in\": 28800 } 参数说明: 参数 说明 access_token 访问令牌 token_type 令牌类型 expires_in 令牌有效期 三、客户端模式 该模式的授权流程为: 1、获取access_token。 1、获取access_token 获取access_token。 请求⽅式: GET(HTTPS或HTTP) 请求地址: http://{server}/oauth2.0/accessToken 注:https方式类似。 请求参数: 请求示例: http://ljw.sso.rghall.com.cn/oauth2.0/accessToken?grant_type=client_credentials&client_id=test2&client_secret=JXuRHUGzt5TEoKZGof4Dxg-cOPFotpWhu--cujis8JO0Y7qqN4EUhr4kybc7nDPB 参数说明: 参数 是否必须 说明 grant_type 是 客户端模式,这里固定为client_credentials client_id 是 应用id client_secret 是 应用秘钥 scope 否 权限列表,以空格分隔 返回结果: { \"access_token\": \"AT-1-IWyhZhU1hKKvWPddAJpdHRN2ECu08Ypo\", \"token_type\": \"bearer\", \"expires_in\": 28800 } 参数说明: 参数 说明 access_token 访问令牌 token_type 令牌类型 expires_in 令牌有效期 四、微信公众号对接 1、跳转认证 跳转到SID认证中心认证用户。 请求⽅式: GET(HTTPS或HTTP) 请求地址: http://{server}/oauth2.0/authorize 注:https方式类似。 请求参数: 请求示例: http://ljw.sso.rghall.com.cn/oauth2.0/authorize?response_type=code&client_id=test2&redirect_uri=xxx&openid=xxx&from=xxx 参数说明: 参数 是否必须 说明 response_type 是 授权码模式,值为code client_id 是 应用id redirect_uri 是 应用回调地址 openid 否 用户的微信openid, openid和unionid只需传一个 unionid 否 用户的微信unionid, openid和unionid只需要传一个 from 是 认证来源, 默认为应用的appid scope 否 权限列表,以空格分隔 返回结果: 返回code 参数说明: 参数 说明 code 授权码。SID跳转到redirect_uri时,code参数会附带在该地址中 子应用按照OAuth2.0 授权码模式接入,具体接口请参考:授权码模式 五、单点登出 登出地址为/logout。 请求⽅式: GET(HTTPS或HTTP) 请求地址: http://{server}/logout 注:https方式类似。 请求示例: http://ljw.sso.rghall.com.cn/logout ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-08 17:01:41 "},"linkid/authentication/public/interface/application-free-certification.html":{"url":"linkid/authentication/public/interface/application-free-certification.html","title":"APP内应用免认证接口","keywords":"","body":"APP内应用免认证接口 获取code 通过code换取token 通过token换取用户信息 一、获取code Sid请求APP获取code的接口 请求⽅式: GET(HTTPS或HTTP) 请求地址: https://xxx.com.cn/oauth/authorize 注:https方式类似。 请求参数: 请求示例: https://xxx.com.cn/oauth/authorize?client_id=xxx&redirect_uri=xxx&response_type=code&scope=base_api&state=xxx 参数说明: 参数 是否必须 说明 client_id 是 应用唯一标识,即应用注册时获得的应用id redirect_uri 是 授权后重定向的回调链接地址,注意需使用 urlEncode 对链接进行处理 response_type 是 返回类型,请填写 code scope 是 作用域,与注册时匹配。 base_api 可以访问基础API且支持静默模式不弹出授权提醒; all 可以使用所有高级API。通过开放平台创建的应用默认授予 base_api 作用域,可申请 all 权限;在微哨管理平台创建的应用同时授予 base_api 和 all 权限 state 是 重定向后会带上 state 参数。开发者可以用此参数验证请求有效性,或记录用户请求授权页前的位置。同时此参数可用于防止跨站请求伪造(CSRF)攻击 返回结果: 因为应用嵌入在APP内部,此时APP应该是登录状态,在一系列校验后,会重定向到redirect_uri并且带着code和state 示例: https://redirect_uri?code=xxxxx&state=xxx 参数说明: 参数 说明 code 下发的code state 请求code时带的参数 二、通过 code 换取网页授权token 请求⽅式: POST(HTTPS或HTTP) 请求地址: http://{server}/oauth/token 注:https方式类似。 请求参数: 注:请求数据类型为Form表单(application/x-www-form-urlencoded) Form表单示例: grant_type=authorization_code&client_id=xxx&client_secret=xxx&code=xxx&redirect_uri=xxx 参数说明: 参数 是否必须 说明 grant_type 是 固定值 authorization_code client_id 是 应用唯一标识,即应用注册时获得的 应用id client_secret 是 应用的秘钥,即应用注册时获得的应用秘钥 code 是 授权码,即第一步应用回调地址获得的 code 参数值 redirect_uri 是 应用回调地址 返回结果: { \"access_token\": \"fDanz0ydkCqVsgSoze7mrCnwJIsN0dL\", \"expires_in\": \"1209600\", \"scope\": \"base_api\", \"refresh_token\": \"HhbiRKzjVnKdvGfmuGjvh3Clm4AIMqV8\", \"token_type\": \"Bearer\" } 参数说明: 参数 说明 access_token 下发的token expires_in 有效期 scope 作用域 refresh_token 刷新令牌 token_type 令牌类型 三、获取用户信息 获取用户信息。 请求⽅式: GET(HTTPS或HTTP) 请求地址: http://{server}/profile 注:https方式类似。 请求参数: 示例: http://xxx.com.cn/profile?access_token=xxx 参数说明: 参数 是否必须 说明 access_token 是 令牌 返回结果: { \"name\": \"张三\", \"student_number\": \"zhangsan\" } 参数说明: 参数 说明 name 姓名 student_number 学工号 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-28 10:51:46 "},"linkid/authentication/faq/faq.html":{"url":"linkid/authentication/faq/faq.html","title":"FAQ","keywords":"","body":"FAQ 对接前提:检查网络是否互通 对接前提:检查网络是否互通(不通则找学校业务负责人) 1、查看是否能Ping通sso域名,示例如图: (1)通,联系锐捷方人员找出报错原因并解决。 (2)不通,继续查看是否设置了DNS,示例如图: 上图中IPv4 DNS服务器没有值,因此未设置DNS。 1)设置了DNS,联系锐捷方人员找出报错原因并解决。 2)未设置DNS(没有DNS联系学校业务负责人获取)时,请设置DNS,设置方式示例如图: 在上图中的首选DNS服务器中设置DNS。 设置好DNS后重新调试,若仍出现报错信息,联系锐捷方人员找出报错信息并解决。 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-07 15:32:50 "},"linkid/organization/introduction/":{"url":"linkid/organization/introduction/","title":"开发前须知","keywords":"","body":"开发前须知 组织接口规范说明 组织接口调用授权 组织数据获取授权 组织接口规范说明: 各类数据内容返回, 属性名为驼峰式, 以文档示例为准 分页接口, 分页参数属性是驼峰式, 以文档示例为准 组织接口调用授权: 获取accessToken 设置请求头 Authorization: Bearer {access_token} 组织数据授权: ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-08 11:38:27 "},"linkid/organization/public/interface/organization-external-api.html":{"url":"linkid/organization/public/interface/organization-external-api.html","title":"组织信息对外接口","keywords":"","body":"组织信息对外API 组织信息对外api描述SID向应用提供的标准接口,以便外部应用调用。标准接口如下: 根据组织id获取所有部门id 根据部门id查询部门详细信息 一、根据组织id获取所有部门id 当业务系统要同步身份平台的部门信息时, 需要根据组织查询所有部门id 请求⽅式: POST(HTTPS或HTTP) 请求地址: http://self.xxx.edu.cn/linkid/api/organization/public/findAllSonOrganizationIds 注:https方式类似。 请求参数: [\"RJXZZZ\"] 参数说明: 参数 类型 是否必须 说明 request body 列表 是 组织id 返回结果: { \"code\": 200, \"message\": \"OK\", \"data\": [ \"RJXZZZ\", \"R5f91237eef72960006ea0d2d\" ] } 参数说明: 参数 类型 说明 code int 返回状态code message String 返回状态消息 data 自定义对象 返回值为部门id列表 二、根据部门id查询部门详细信息 当业务系统要同步身份平台的部门信息时, 需要根据组织查询所有部门id, 然后根据部门id查询部门详细信息 请求⽅式: GET(HTTPS或HTTP) 请求地址: http://self.xxx.edu.cn/linkid/api/organization/public/findById/{id} 注:https方式类似。 请求参数: 请求示例: https://ljw.sso.rghall.com.cn/linkid/api/organization/public/findById/R5f91237eef72960006ea0d2d 参数说明: 参数 类型 是否必须 说明 id string 是 部门id 返回结果: { \"code\": 200, \"message\": \"OK\", \"data\": { \"id\": \"R5f91237eef72960006ea0d2d\", \"code\": \"a\", \"desc\": null, \"name\": \"a\", \"parent\": \"RJXZZZ\", \"category\": \"未分类部门\", \"createUser\": null, \"address\": null, \"tel\": null, \"official\": true, \"version\": null, \"isDeleted\": false, \"updatedTime\": \"2020-10-22T06:15:26.598+0000\", \"organizationIndex\": 1 } } 参数说明: 参数 类型 说明 code int 返回状态code message String 返回状态消息 data 自定义对象 返回值为部门id列表 id string 部门id code string 部门编码 desc string 部门描述 name string 部门名称 parent string 父部门id category string 部门分类 createUser string 创建人 address string 部门地址 tel string 部门电话 official boolean 是否正式部门 version string 数据版本, 增量采集数据使用 isDeleted boolean 部门是否删除 updatedTime string 部门更新时间 organizationIndex int 部门排序 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-07 20:00:05 "},"linkid/organization/faq/faq.html":{"url":"linkid/organization/faq/faq.html","title":"FAQ","keywords":"","body":"FAQ 待补充 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-11-30 10:33:38 "},"linkid/label/introduction/":{"url":"linkid/label/introduction/","title":"开发前须知","keywords":"","body":"开发前须知 标签接口规范说明 标签接口调用授权 标签数据获取授权 标签接口规范说明: 各类数据内容返回, 属性名为驼峰式, 以文档示例为准 分页接口, 分页参数属性是驼峰式, 以文档示例为准 标签接口调用授权: 获取accessToken 设置请求头 Authorization: Bearer {access_token} 标签数据授权: ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-08 11:40:45 "},"linkid/label/public/interface/label-external-api.html":{"url":"linkid/label/public/interface/label-external-api.html","title":"标签对外接口","keywords":"","body":"标签对外API 标签信息对外api描述SID向应用提供的标准接口,以便外部应用调用。标准接口如下: 查询所有标签分类 通过身份标签分类查询身份标签列表 分页获取标签下的用户 一、查询所有标签分类 当业务系统要同步身份平台的标签信息时, 需要先获取所有的标签分类, 然后根据分类id去获取所有标签 请求⽅式: POST(HTTPS或HTTP) 请求地址: http://self.xxx.edu.cn/linkid/api/aggregate/label/public/find/label/type 注:https方式类似。 请求参数: { \"isAcquiredParents\": true, \"hasDefaultNode\": false, } 参数说明: 参数 类型 是否必须 说明 isAcquiredParents boolean 是 表示当前接⼝是标签分类获取上级分类,当前该功能要求只展示第⼀层分类,且第⼀个元素⽂案展示为-,如果不是就展示所有有权限看到的分类树 hasDefaultNode boolean 是 表示是否在节点树最后加上默认分类节点 返回结果: { code: 200, data: [{ // 分情况展示 key: '-', title: '-' }, { key: 1, title: 分类1 }, { key: 2, title:‘ 分类2’, children: [{ key: 3, title: '分类2.1' }] }, { // 分情况展示 key: 5, title: '默认分类' }] } 参数说明: 参数 类型 说明 code int 返回状态code message String 返回状态消息 data 自定义对象 返回值为部门id列表 key string 标签分类id title string 标签分类名称 二、通过身份标签分类查询身份标签列表 当业务系统要同步身份平台的标签信息时, 需要先获取所有的标签分类, 然后根据分类id去获取所有标签 请求⽅式: GET(HTTPS或HTTP) 请求地址: http://self.xxx.edu.cn/linkid/api/aggregate/label/public/find/by/typeId/{标签分类id} 注:https方式类似。 请求参数: 请求示例: https://ljw.sso.rghall.com.cn/linkid/api/aggregate/label/public/find/by/typeId/5f91237eef72960006ea0d2d 参数说明: 参数 类型 是否必须 说明 typeId string 是 标签分类id 返回结果: { \"code\": 200, \"message\": \"OK\", \"data\": [{ \"id\": \"5dfcbc94432aa42fecac5907\", \"name\": \"xcv\", \"describe\": null, \"applicationId\": null, \"createUser\": \"5c7776dfedd9a9952b3b44c2\", \"organizationId\": \"R5dc275fddc04fa681a724671\", \"organizationName\": \"XXXX\", \"createTime\": \"2019.12.20 20:20\", \"suppleList\": [\"5afc83b4a32ab41ad8ef8411\", \"5afc83b4a32ab41ad8ef8412\"], \"labelTypeId\": \"5df986b4432aa40dd8ee88de\", \"showStatus\": \"public\", \"public\": true }] } 参数说明: 参数 类型 说明 code int 返回状态code message String 返回状态消息 data 自定义对象 返回值为部门id列表 id string 标签id name string 标签名称 describe string 标签描述 createUser string 标签维护人 organizationId string 标签所属部门id organizationName string 标签所属部门名称 suppleList string 标签补充名单, 人员objectId列表 createTime string 标签创建时间 labelTypeId boolean 标签所属分类id showStatus string 标签是否公开展示, “public” 公开, 其他否 public boolean 标签是否公开展示, true 公开, 其他否 三、分页获取标签下的用户 分页获取标签下用户信息 请求⽅式: GET(HTTPS或HTTP) 请求地址: http://self.xxx.edu.cn/linkid/api/user/public/pageQueryUsersByLabelId 注:https方式类似。 请求参数: 示例:https://idself26.rghall.com.cn/linkid/api/user/public/pageQueryUsersByLabelId?number=1&size=10&labelId=5f57697b437baa0006942c68 参数说明: 参数 类型 是否必须 说明 number list 是 当前请求页 size string 是 每页返回值 labelId string 否 标签id 返回结果: { \"code\": 200, \"message\": \"OK\", \"data\": { \"totalElements\": 20, \"totalPages\": 20, \"currentPage\": 1, \"pageSize\": 1, \"content\": [ { \"SFZJYXQ\": \"\", \"DH\": \"\", \"IDCARD\": \"330202199504081118\", \"ZZMM\": \"中国共产党党员\", \"EMAIL\": null, \"JZGZT\": \"在职\", \"szdwAndGwmc\": [ { \"szdw\": \"R5fa3bca7d71c090006a9f6f7\", \"gwmc\": null, \"type\": null, \"szdwSource\": \"RG_SourceID\" }, { \"szdw\": \"R5fab5d6c5951ed000666a80a\", \"gwmc\": null, \"type\": \"rule\", \"szdwSource\": \"RG_SourceID\" }, { \"szdw\": \"R5fab5dc65951ed000666a810\", \"gwmc\": null, \"type\": \"rule\", \"szdwSource\": \"RG_SourceID\" }, { \"szdw\": \"R5fab5e395951ed000666a817\", \"gwmc\": null, \"type\": \"rule\", \"szdwSource\": \"RG_SourceID\" }, { \"szdw\": \"R5fab5e8e5951ed000666a81a\", \"gwmc\": null, \"type\": \"rule\", \"szdwSource\": \"RG_SourceID\" }, { \"szdw\": \"R5fab5f2e5951ed000666a821\", \"gwmc\": null, \"type\": \"rule\", \"szdwSource\": \"RG_SourceID\" } ], \"isDeleted\": false, \"CSD\": \"\", \"CYM\": \"\", \"XMPY\": \"\", \"LABEL\": [ \"5f57697b437baa0006942c68\" ], \"SZDW\": [ \"R5fa3bca7d71c090006a9f6f7\", \"R5fab5d6c5951ed000666a80a\", \"R5fab5dc65951ed000666a810\", \"R5fab5e395951ed000666a817\", \"R5fab5e8e5951ed000666a81a\", \"R5fab5f2e5951ed000666a821\" ], \"GH\": \"1987121\", \"GJ\": \"中国\", \"YDDH\": \"11111111111\", \"XB\": \"女性\", \"MZ\": \"汉族\", \"CSRQ\": null, \"SFZJLXM\": \"居民身份证\", \"SFLBDM\": \"01\", \"XM\": \"许晴\", \"DZXX\": \"\", \"TEL\": \"13603537730\", \"LASTCHANGEPASSWORDTIME\": \"2020-09-07T16:00:00.000+0000\", \"SFLBMC\": \"教职工\" } ] } } 参数说明: 参数 类型 说明 code int 返回状态code message String 返回状态消息 data 自定义对象 返回值的自定义对象 totalElements int 总数 totalPages int 总页数 currentPage int 当前页 pageSize int 每页返回数据 content list 用户列表 GH string 用户属性名称 SFLBDM string 人员类型代码 XM string 姓名 SZDW list 所在单位代码, 一个人有多部门 szdwAndGwmc list 用户三元组数据 LABEL list 用户身上的标签id列表 更多用户属性 更多用户属性, 请查看标准 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-08 17:12:20 "},"linkid/label/faq/faq.html":{"url":"linkid/label/faq/faq.html","title":"FAQ","keywords":"","body":"FAQ 待补充 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-11-30 10:33:38 "},"group/introduction/":{"url":"group/introduction/","title":"开发前须知","keywords":"","body":"开发前须知 应用同步接口开发步骤 该开发步骤主要针对校内应用,应用需根据SID提供的群组对接API开发接口,实现群组同步。 STEP 1:获取APPID、APPSECRET,验证SID请求数据的合法性。验证方法参考:群组推送安全验证。 APPID、APPSECRET是锐捷和应用方约定(任一方提供时,另一方与其保持一致即可)的一组数据。 STEP 2:开发同步接口。 同步接口开发需实现9个接口,便于SID调用,接口分为两类: 群组节点管理 创建群组节点:新建一个群组节点。 更新群组节点:更新某个群组节点的信息。 删除群组节点:删除某个群组节点。 查询某个群组节点:查询某个群组节点及子节点信息。 人员管理 创建成员:新建一个人员信息。 更新成员:更新某个人员的信息。 删除成员:删除某个人员信息。 查询成员:查看某个人员的信息。 获取群组节点下成员:查询某个群组节点下有哪些人员。 STEP 3:建立群组并推送群组数据。 定义并发布一个群组。 建立群组推送任务。 推送群组数据。 STEP 4:测试并修改已编写的接口。 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-07 11:09:57 "},"group/procedure/define-group.html":{"url":"group/procedure/define-group.html","title":"定义并发布一个群组","keywords":"","body":"定义并发布一个群组 新建群组基本信息 创建群组节点 发布群组 定义并发布一个群组将在某个群组分类(避免定义太多群组后,不好管理等问题)下新建一个群组,包括群组基本信息、群组节点、人员,并发布该群组。当群组状态为“已发布”时,该群组数据才能被推送。 新建群组基本信息 新建一个群组的基本信息,包括群组名称、群组分类、群组描述。在身份->群组管理->群组,点击“群组”按钮,即可编辑基本信息。 创建群组节点 进入某个群组。在身份->群组管理->进入群组,点击“进入群组”按钮,即可进入某个群组创建群组节点。 新建群组节点。进入群组后,点击“群组节点管理”标题下的“+”按钮,即可开始编辑群组节点。 选择节点模板。共有6种模板可供选择。 选择群组的数据来源。以“1:1镜像源结构”模板为例,点击“选择组织部门”按钮,选择作为数据源的部门,点击“确定”按钮后,可看到已选的数据源。其中,人员匹配条件用来筛选已选择数据源节点上的用户。 预览群组节点和群组节点上的用户。该步骤可预览群组结构以及每个节点内的人员清单。 查看已创建的群组信息。在结果预览页面,点击“保存”按钮,即可看到新增的群组信息。 发布群组 发布群组。在身份->群组管理->发布当前群组,点击“发布当前群组”按钮,群组状态将变为“已发布”。群组发布后,即可推送该群组数据。 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-11-30 10:33:38 "},"group/procedure/create-push-task.html":{"url":"group/procedure/create-push-task.html","title":"建立群组推送任务","keywords":"","body":"建立群组推送任务 建立群组推送任务将创建一个推送群组数据的任务,执行该任务,即可手动或自动同步数据。 新增数据推送任务。在服务->数据推送服务->新增数据推送任务,点击“新增数据推送任务”按钮,可进入任务配置页面。 配置任务名称、对接参数、自动推送策略。 配置需推送的群组数据,具体分为群组节点和用户: (1)选择需推送的群组节点。点击“选择群组视图”,选择某个已发布的群组,该群组中的节点将会被推送给应用; (2)选择需推送的用户和需同步的用户属性。首先选择需推送的用户类型(身份类型);其次,在“操作”列中点击“选择”按钮,弹出SID用户数据项;最后,选择需与应用端同步的用户属性,点击“确定”按钮保存信息。 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-11-30 10:33:38 "},"group/procedure/push-task.html":{"url":"group/procedure/push-task.html","title":"推送群组数据","keywords":"","body":"推送群组数据 手动推送群组数据 设置自动推送 推送群组数据为SID通过调用应用同步接口,实现与应用的群组同步。 群组推送支持自动同步和手动同步。其中, 自动同步分为每日定时增量同步和实时增量同步。 手动同步分为增量同步和全量同步。 手动推送群组数据 手动推送群组数据分为全量推送和增量推送,其中, 全量推送:推送当前群组的所有数据。 增量推送:推送当前群组相较于上次成功推送数据的变化信息。 在服务->数据推送服务,点击下图操作列中“增量推送”或者“全量推送”按钮,与应用增量或全量同步。 查看当前群组相较于上次成功推送数据的变化信息,点击“立即推送”按钮,可执行推送。 说明: 全量推送时,对于未变动的节点或用户,SID需先调用应用的查询接口,查询有无节点或用户信息,不存在时调用新增接口,应用进行新增操作;存在则调用更新接口,应用进行更新操作。 设置自动推送 只有完成一次数据推送后,保证所有配置是正常的情况下,才能打开自动推送。自动推送只有增量推送方式。 打开自动推送按钮。在服务->数据推送服务->自动推送,点击“自动推送”按钮,设置任务为自动推送。 定时增量、或者实时增量推送数据。点击自动推送按钮后,界面会自动弹出一个配置框,选择每日定时增量、或者实时增量即可。 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-11-30 10:33:38 "},"group/develop/safety-verification.html":{"url":"group/develop/safety-verification.html","title":"群组推送安全验证","keywords":"","body":"群组推送安全验证 SID调用应用接口时,应用需要验证请求的合法性。其中,涉及到的术语、验证原理、验证步骤如下: 术语 术语 介绍 APPID 应用的唯一标识。SID与应用约定的数据 APPSECURITY 应用的密钥。SID与应用约定的数据 Timestamp 时间戳(北京时间毫秒数)。SID调用API时生成的时间戳,附带在SID请求数据中 Signature MD5签名。由(APPID+APPSECURITY+Timestamp)字符串经过MD5后生成。附带在SID请求数据中 验证原理 SID在调⽤应用接口时,会携带Signature和Timestamp。Signature是SID获取到的APPID、APPSECURITY,以及Timestamp三个值通过MD5后形成的。应⽤在接收到SID调用请求时,会通过相同的⽅式(应用将自身的APPID、APPSECURITY和接收到的Timestamp进行MD5形成一个MD5值,并与请求中的Signature匹配)验证请求是否合法。 验证步骤 获取SID请求数据中的Signature、Timestamp。 将APPID、APPSECURITY与SID请求数据中的Timestamp进行MD5加密,形成MD5值。 MD5值形成过程如下: APPID = 12345, APPSECURITY=derfs, Timestamp=1589102903474 , 即12345derfs1589102903474通过md5加密后形成32位⼩写签名。 md5 -s 12345derfs1589102903474 # MD5 (\"12345derfs1589102903474\") = 0e5d920d35e426875dba18f1a0e694a3 将第二步中的MD5值与SID请求数据中的Signature进行比较,相同,则SID请求合法,否则,请求不合法。 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-11-30 10:33:38 "},"group/develop/node-management.html":{"url":"group/develop/node-management.html","title":"群组节点管理","keywords":"","body":"群组节点管理 查询某个群组节点 创建群组节点 更新群组节点 删除群组节点 应用端开发人员需实现群组节点管理相关接口,与SID进行节点同步。 查询某个群组节点 查询某个群组节点及对应子节点信息。 SID调用“创建群组节点”、“更新群组节点”、“删除群组节点”等接口时,会先调用该接口,执行查询操作,提高群组推送的容错性。 请求⽅式:POST(HTTPS或HTTP) 请求地址:http://{server}/app/department/get 注:https方式类似。 请求头: header: Signature (通过MD5获取到的签名值) header: Timestamp(当前时间戳) 请求参数: { \"id\": \"xxxxx\", \"isNeedChildren\": false } 参数说明: 参数 是否必须 说明 id 是 节点id isNeedChildren 是 是否需要获取当前节点下的⼦节点:true-是,false-否 返回结果: { \"errcode\": 200, \"errmsg\": \"ok\", \"department\": [ { \"id\": \"xxxxx\", \"name\": \"锐捷⽹络\", \"code\": \"xxx\", \"parentid\": \"xxxxxx\", \"order\": 1 }, { \"id\": \"xxxxx\", \"name\": \"身份产品管理事业部\", \"code\": \"xxx\", \"parentid\": \"xxxxxx\", \"order\": 1 } ] } 参数说明: 参数 说明 errcode 返回码,成功为200 errmsg 对返回码的文本描述内容 department 节点信息列表 id 节点id name 节点名称 code 节点code parentid 节点⽗亲id order 节点顺序 创建群组节点 新建一个群组节点。 请求⽅式:POST(HTTPS或HTTP) 请求地址:http://{server}/app/department/create 注:https方式类似。 请求头: header: Signature (通过MD5获取到的签名值) header: Timestamp(当前时间戳) 请求参数: { \"name\": \"锐捷⽹络\", \"parentid\": \"xxxxxx\", \"code\": \"1234\", \"order\": 1, \"id\": \"xxxxx\" } 参数说明: 参数 是否必须 说明 name 是 节点名称 parentid 是 节点⽗亲id code 是 节点code order 否 同层节点顺序 id 是 节点 id 返回结果: { \"errcode\": 200, \"errmsg\": \"created\", \"id\": \"xxxxx\" } 参数说明: 参数 说明 errcode 返回码,成功为200 errmsg 对返回码的文本描述内容 id 节点id 更新群组节点 更新某个群组节点的信息。 请求⽅式:POST(HTTPS或HTTP) 请求地址:http://{server}/app/department/update 注:https方式类似。 请求头: header: Signature (通过MD5获取到的签名值) header: Timestamp(当前时间戳) 请求参数: { \"id\": \"xxxxx\", \"name\": \"锐捷⽹络\", \"code\": \"1234\", \"parentid\": \"xxxxxx\", \"order\": 1 } 参数说明: 参数 是否必须 说明 id 是 节点 id name 是 节点名称 code 是 节点code parentid 是 节点⽗亲id order 是 节点顺序 返回结果: { \"errcode\": 200, \"errmsg\": \"updated\" } 参数说明: 参数 说明 errcode 返回码,成功为200 errmsg 对返回码的文本描述内容 删除群组节点 删除某个群组节点。 请求⽅式:GET(HTTPS或HTTP) 请求地址:http://{server}/app/department/delete/{id} 注:https方式类似。 请求头: header: Signature (通过MD5获取到的签名值) header: Timestamp(当前时间戳) 参数说明: 参数 是否必须 说明 id 是 节点 id 返回结果: { \"errcode\": 200, \"errmsg\": \"deleted\" } 参数说明: 参数 说明 errcode 返回码,成功为200 errmsg 对返回码的文本描述内容 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-07 19:58:17 "},"group/develop/personnel-management.html":{"url":"group/develop/personnel-management.html","title":"人员管理","keywords":"","body":"成员管理 查询成员 创建成员 更新成员 删除成员 获取群组节点下成员 应用端开发人员需实现成员管理相关接口,与SID进行人员同步。 查询成员 查询某个人员信息。 SID调用“创建成员”、“更新成员”、“删除成员”等接口时,会先调用该接口,执行查询操作,提高群组推送的容错性。 请求⽅式:GET(HTTPS或HTTP) 请求地址:http://{server}/app/user/get/{id} 注:https方式类似。 请求头: header: Signature (通过MD5获取到的签名值) header: Timestamp(当前时间戳) 参数说明: 参数 是否必须 说明 id 是 学号或工号 返回结果: { \"errcode\":200, \"errmsg\":\"ok\", \"userInfo\":{ \"userId\": \"YT001\", \"name\": \"xxx\", \"xb\": \"1\", \"tel\": \"18732990023\", \"sflbdm\":\"01\", \"departments\":[\"xxxx1\",\"xxxx2\"], \"department\":[\"xxxx1\",\"xxxx2\"] } } 参数说明: 参数 是否必须 说明 errcode 是 返回码,成功为200 errmsg 是 对返回码的文本描述内容 userInfo 是 用户信息 userId 是 学号或⼯号 name 是 用户姓名 xb 否 用户性别:1-⼥,2-男,3-不知 tel 否 ⽤户绑定手机号 sflbdm 是 ⽤户身份类别代码 departments 是 ⽤户所属部⻔ID列表 department 是 ⽤户所属部⻔Code列表 创建成员 新建一个人员信息。 请求⽅式:POST(HTTPS或HTTP) 请求地址:http://{server}/app/user/create 注:https方式类似。 请求头: header: Signature (通过MD5获取到的签名值) header: Timestamp(当前时间戳) 请求参数:说明:在SID中可以配置用户同步信息,即要与应用同步哪些用户属性。 { \"userId\": \"YT001\", \"name\": \"xxx\", \"xb\": \"1\", \"tel\": \"18732990023\", \"sflbdm\":\"01\", \"departments\":[\"xxxx1\",\"xxxx2\"], \"department\":[\"xxxx1\",\"xxxx2\"] } 参数说明: 参数 是否必须 说明 userId 是 学号或⼯号 name 是 用户姓名 xb 否 用户性别:1-⼥,2-男,3-不知 tel 否 ⽤户绑定手机号 sflbdm 是 ⽤户身份类别代码 departments 是 ⽤户所属部⻔ID列表 department 是 ⽤户所属部⻔Code列表 返回结果: { \"errcode\": 200, \"errmsg\": \"created\" } 参数说明: 参数 说明 errcode 返回码,成功为200 errmsg 对返回码的文本描述内容 更新成员 更新某个人员的信息。 请求⽅式:POST(HTTPS或HTTP) 请求地址:http://{server}/app/user/update 注:https方式类似。 请求头: header: Signature (通过MD5获取到的签名值) header: Timestamp(当前时间戳) 请求参数:说明:在SID中可以配置用户同步信息,即要与应用同步哪些用户属性。 { \"userId\": \"YT001\", \"name\": \"xxx\", \"xb\": \"1\", \"tel\": \"18732990023\", \"sflbdm\":\"01\", \"departments\":[\"xxxx1\",\"xxxx2\"], \"department\":[\"xxxx1\",\"xxxx2\"], } 参数说明: 参数 是否必须 说明 userId 是 学号或⼯号 name 是 用户姓名 xb 否 用户性别:1-⼥,2-男,3-不知 tel 否 ⽤户绑定手机号 sflbdm 是 ⽤户身份类别代码 departments 是 ⽤户所属部⻔ID列表 department 是 ⽤户所属部⻔Code列表 返回结果: { \"errcode\": 200, \"errmsg\": \"updated\" } 参数说明: 参数 说明 errcode 返回码,成功为200 errmsg 对返回码的文本描述内容 删除成员 删除某个人员信息。 请求⽅式:GET(HTTPS或HTTP) 请求地址:http://{server}/app/user/delete/{id} 注:https方式类似。 请求头: header: Signature (通过MD5获取到的签名值) header: Timestamp(当前时间戳) 参数说明: 参数 是否必须 说明 id 是 学号或工号 返回结果: { \"errcode\": 200, \"errmsg\": \"deleted\" } 参数说明: 参数 说明 errcode 返回码,成功为200 errmsg 对返回码的文本描述内容 获取群组节点下成员 查询某个群组节点下有哪些人员。 请求⽅式:GET(HTTPS或HTTP) 请求地址:http://{server}/app/user/simplelist/{departmentId} 注:https方式类似。 请求头: header: Signature (通过MD5获取到的签名值) header: Timestamp(当前时间戳) 参数说明: 参数 是否必须 说明 departmentId 是 部门id 返回结果: { \"errcode\":200, \"errmsg\":\"ok\", \"userlist\": [ { \"userId\": \"YT001\", \"name\": \"xxx\", \"xb\": \"1\", \"tel\": \"18732990023\", \"sflbdm\":\"01\", \"departments\":[\"xxxx1\",\"xxxx2\"], \"department\":[\"xxxx1\",\"xxxx2\"] } ] } 参数说明: 参数 是否必须 说明 errcode 是 返回码,成功为200 errmsg 是 对返回码的文本描述内容 userlist 是 ⽤户信息列表 userId 是 学号或⼯号 name 是 用户姓名 xb 否 用户性别:1-⼥,2-男,3-不知 tel 否 ⽤户绑定手机号 sflbdm 是 ⽤户身份类别代码 departments 是 ⽤户所属部⻔ID列表 department 是 ⽤户所属部⻔Code列表 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-23 16:09:39 "},"group/faq/":{"url":"group/faq/","title":"FAQ","keywords":"","body":"FAQ 群组人员删除后,是否自动删除应用端人员 群组人员删除后,是否自动删除应用端人员 视SID是否配置群组回收站而定。 配置回收站:群组人员删除后,不会自动删除应用端人员。 未配置回收站:群组人员删除后,将自动删除应用端人员。 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-11-30 10:33:38 "},"faceid/introduction/":{"url":"faceid/introduction/","title":"开发前须知","keywords":"","body":"开发前须知 人脸实施对接步骤 上图中整体流程为: 锐捷实施人员准备和部署人脸组件服务器。 人脸对接。 人脸厂商对接:厂商方开发由SID制定的【人脸厂商标准接口】,开发完成后,SID调用相关接口实现对接。 人脸应用对接:应用方开发由SID制定的【人脸应用标准接口】,开发完成后,SID调用相关接口实现对接。 人脸对外服务:应用调用SID提供的【人脸对外接口】,进行人脸对接。 人脸组件的服务器准备和部署 具体部署步骤详见:SID人脸环境部署。 人脸厂商、人脸应用对接 人脸厂商对接需开发的接口详见:人脸厂商标准接口。 人脸应用对接需开发的接口详见:人脸应用标准接口。 人脸对外接口应用对接步骤 应用使用SID的人脸服务,即调用人脸对外接口,需在接口调用前进行以下步骤: STEP 1:管理端注册应用。 STEP 2:认证API调用配置。 “进入配置”,然后进行认证API调用配置。 记录下应用的应用ID、应用秘钥,并启用“认证API调用配置”。 STEP 3:配置人脸服务。 点击人脸服务配置的“进入配置”,进而配置人脸服务。 根据页面导航,配置应用的人脸服务(注:应用同步用户数据、应用数据转换必须配置) STEP 4:根据应用的应用ID(对应username)、应用秘钥(对应password)获取token,获取方式请参考:获取JWT。 STEP 5:将token加入Header中,测试或对接人脸服务公共接口。 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-08 19:01:35 "},"faceid/public/interface/face-external-api.html":{"url":"faceid/public/interface/face-external-api.html","title":"人脸对外接口","keywords":"","body":"人脸对外接口 该部分描述SID应向应用提供的标准接口,以便外部应用调用。标准接口如下: 1:1 认证 1:N 认证 增量同步照片 增量同步特征值 通过用户id和照片类型查询照片 检查照片质量 通过用户id list查询用户照片 上传照片 一、1:1 认证接口(特征值或照片) 应用上传一张照片或特征值与 SID中保存的底库照片或特征值进行比对。 请求⽅式: POST(HTTPS或HTTP) 请求地址: http://{server}/faceid/public/auth/compare/userId 注:https方式类似。 请求参数: { \"featureB\":\"xTKzP.....ACAPw==\", \"imageB\":{ \"image\":\"/9j/4AAQSkZJRgAB......OMCuquxOVH//2Q==\", \"ext\":\"jpg\" }, \"userId\" : \"testface\" } 参数说明: 参数 类型 是否必须 说明 featureB String 是 照片的特征值 imageB 自定义对象 是 照片对象 userId String 是 用户的学工号 image String 是 照片的base64 ext String 是 照片后缀 返回结果: { \"code\": 200, \"message\": \"OK\", \"data\": { \"userId\": \"testface\", \"image\": \"/group1/M00/00/09/rBEITl-XwYCAD1-MAAHfytyTzvE998.jpg\", \"score\": 0.9973, \"appScore\": 0.63, \"hasPass\": true, \"hasPermission\": null } } 参数说明: 参数 类型 说明 code int 返回状态code message String 返回状态消息 data 自定义对象 返回值的自定义对象 userId String 用户学工号 image String 照片对应的存储存储路径 score Double 相似值 appScore Double 厂商相似值标准 hasPass Boolean 照片是否通过 二、1:N 认证接口(特征值或照片) 应用上传一张照片,返回与这张照片相似度最高的用户信息,进行1:N 认证。 请求⽅式: POST(HTTPS或HTTP) 请求地址: http://{server}/faceid/public/auth/search 注:https方式类似。 请求参数: { \"feature\":\"xTKzPP6I4......AACAPw==\", \"file\":{ \"image\":\"/9j/4AAQSkZJRgAB......OMCuquxOVH//2Q==\", \"ext\":\"jpg\" } } 参数说明: 参数 类型 是否必须 说明 feature String 与 image 任选一个 照片的特征值 image String 与 feature任选一个 照片的base64 ext String 与image一致 照片的后缀 返回结果: { \"code\": 200, \"message\": \"OK\", \"data\": { \"userId\": \"testface\", \"image\": \"/group1/M00/00/09/rBEITl-XwYCAD1-MAAHfytyTzvE998.jpg\", \"score\": 0.9973356 } } 参数说明: 参数 类型 说明 code int 返回状态code message String 返回状态消息 data 自定义对象 返回值的自定义对象 userId String 用户学工号 image String 照片对应的存储路径 score Double 相似值 三、增量同步照片接口(水印或不加水印) 应用根据时间戳增量同步特征值接口。 请求⽅式: POST(HTTPS或HTTP) 请求地址: http://{server}/faceid/public/face/findIncreaseUserFaceImage 注:https方式类似。 请求参数: { \"currentPage\":1, \"timeStamp\":2, \"pageSize\":20, \"types\":[\"100\"] } 参数说明: 参数 类型 是否必须 说明 currentPage int 是 分页页码 pageSize int 是 分页每页大小 timeStamp long 是 应用上次同步照片的时间。SID从该时间戳以后开始同步照片 types List 是 照片类型code 返回结果: { \"code\": 200, \"message\": \"OK\", \"data\": { \"pageSize\": 10, \"pageNum\": 1, \"totalAmount\": 3, \"results\": [ { \"userId\": \"james\", \"faceId\": \"5f70993cecf37300063840c2\", \"imageUrl\": \"/group1/M00/00/05/rBEITl9wmT2AGYY7AADBdIqeHWk671.jpg\", \"timeStamp\": 1603768753929, \"face\": [ { \"type\": \"100\", \"image\": \"/9j/4AAQS......RghD83GR//Z\", \"fileName\": \"rBEITl9wmT2AGYY7AADBdIqeHWk671.jpg\", \"updateTime\": 1601214816398 } ], \"deleted\": false }, { \"userId\": \"5f86c39d9d72dd0006678544\", \"faceId\": \"5f86c3dfebd1ae000631fa04\", \"imageUrl\": \"/group1/M00/00/07/rBEITl-Gw-CALhSGAAFlVfs2oiA611.jpg\", \"timeStamp\": 1603768052435, \"face\": [ { \"type\": \"100\", \"image\": \"/9j/4AAQSkZJRgAB......OMCuquxOVH//2Q==\", \"fileName\": \"rBEITl-Gw-CALhSGAAFlVfs2oiA611.jpg\", \"updateTime\": 1607937942726 } ], \"deleted\": true } ] } } 参数说明: 参数 类型 说明 code int 返回状态code message String 返回状态消息 data 自定义对象 返回值的自定义对象 pageSize int 分页每页长度 pageNum int 分页页码 totalAmount int 需要同步照片的人员总数 results.userId String 学工号 results.faceId String 用户id results.imageUrl String 回显照片的存储路径 results.timeStamp long 照片变动时间戳(毫秒) results.deleted boolean 照片是否被删除。 true=删除,false=新增或修改 results.face.type String 照片类型code results.face.image String 照片base64 results.face.fileName String 照片名称 results.face.updateTime long 照片上传时间 注:照片类型code: 底库照片=100 (支持字符串 01),生活照=201,职业照=202。 四、增量同步特征值接口 增量同步特征值接口。 请求⽅式: POST(HTTPS或HTTP) 请求地址: http://{server}/faceid/public/face/findIncreaseUserFace 注:https方式类似。 请求参数: { \"currentPage\":1, \"pageSize\":100, \"timeStamp\":0 } 参数说明: 参数 类型 是否必须 说明 currentPage int 是 分页页码 pageSize int 是 分页每页大小 timeStamp long 是 应用上次同步照片的时间。SID从该时间戳以后开始同步照片 返回结果: { \"code\": 200, \"message\": \"OK\", \"data\": { \"pageSize\": 100, \"pageNum\": 1, \"totalAmount\": 1, \"orders\": null, \"results\": [ { \"userId\": \"testface\", \"imageUrl\": \"/group1/M00/00/09/rBEITl-XkxaAIRZjAAFRPYtJz1g042.jpg\", \"timeStamp\": 1603769154390, \"images\": [ { \"feature\": \"1utfPYb5ur2ADCg97r......ACAPw==\", \"type\": \"100\", \"updateTime\": 1603769129918 } ], \"deleted\": false } ] } } 参数说明: 参数 类型 说明 code int 返回状态code message String 返回状态消息 data 自定义对象 返回值的自定义对象 pageSize int 分页每页长度 pageNum int 分页页码 totalAmount int 照片总数 results.userId String 学工号 results.imageUrl String 回显照片的存储路径 results.timeStamp long 照片变动时间戳(毫秒) results.deleted boolean 照片是否被删除。true=删除,false=新增或修改 results.images.type String 照片类型code results.images.feature String 照片特征值 results.images.updateTime long 照片特征值计算时间 注:照片类型code: 底库照片=100,生活照=201,职业照=202。 五、通过用户id和照片类型查询照片 1、返回照片路径 通过用户id和照片类型查询照片返回照片路径。 请求⽅式: POST(HTTPS或HTTP) 请求地址: http://{server}/faceid/public/face/searchFaceByUserIdAndType 注:https方式类似。 请求参数: { \"userId\" : \"testface\", \"type\":100 } 参数说明: 参数 类型 是否必须 说明 userId String 是 学工号 type int 是 照片分类code 返回结果: { \"code\": 200, \"message\": \"OK\", \"data\": { \"userId\": \"testface\", \"path\": \"/group1/M00/00/09/rBEITl-XwYCAD1-MAAHfytyTzvE998.jpg\" } } 参数说明: 参数 类型 说明 code int 返回状态code message String 返回状态消息 data 自定义对象 返回值的自定义对象 userId String 学工号 path String 照片在存储上的路径 注:照片类型code: 底库照片=100,生活照=201,职业照=202。 2、返回照片base64 通过用户id和照片类型查询照片返回照片的base64。 请求⽅式: POST(HTTPS或HTTP) 请求地址: http://{server}/faceid/public/face/searchFaceByUserIdAndTypeImage 注:https方式类似。 请求参数: { \"userId\" : \"testface\", \"type\":100 } 参数说明: 参数 类型 是否必须 说明 userId String 是 学工号 type String 是 照片分类code 返回结果: { \"code\": 200, \"message\": \"OK\", \"data\": { \"userId\": \"testface\", \"path\": \"/group1/M00/00/09/rBEITl-XwYCAD1-MAAHfytyTzvE998.jpg\", \"image\": \"/9j/4AAQ.....YbGf/Z\" } } 参数说明: 参数 类型 说明 code int 返回状态code message String 返回状态消息 data 自定义对象 返回值的自定义对象 userId String 学工号 path String 照片在存储上的路径 image String 照片base64 注:照片类型code: 底库照片=100,生活照=201,职业照=202。 六、检查照片质量 检查照片质量。 请求⽅式: POST(HTTPS或HTTP) 请求地址: http://{server}/faceid/public/face/quality 注:https方式类似。 请求参数: { \"file\" : { \"image\":\"/9j/4AAQ......EQBERAf/Z\", \"ext\":\"jpg\" } } 参数说明: 参数 类型 是否必须 说明 file.image String 是 照片base64 file.ext String 是 照片后缀 返回结果: { \"code\": 200, \"message\": \"OK\", \"data\": { \"qualityScores\": \"0.7168,0.5429,0.0000,0.0002,0.9148,0.5352,0.0008,0.9664,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,-1.3611,4.4754,-2.4668,137.0000,327.0000,284.0000,284.0000,1.0000,0.9830,0.8736,0.0000,0.0000,0.0000,0.0000,4c0c864175cc13c0526e021f798fa3cf\", \"scores\": [ 0.63, 0.51, 0.0 ], \"scoresInfo\": [ { \"position\": 1, \"explain\": \"总分\" }, { \"position\": 2, \"explain\": \"光照分\" }, { \"position\": 3, \"explain\": \"口罩分\" } ], \"manufactureName\": \"云从\", \"isQualified\": true, \"unqualifiedReason\": \"\" } } 参数说明: 参数 类型 说明 code int 返回状态code message String 返回状态消息 data 自定义对象 返回值的自定义对象 qualityScores String 照片质量分 scores List 照片质量分合格标准 scoresInfo List 表明每个位置的质量分含义 manufactureName String 厂商名称 isQualified boolean 照片是否符合标准 unqualifiedReason String 不符合标准的原因 注:qualityScores 字符串中的各类分数是根据 “,”(逗号)隔开的。计算总分是否合格的方法如下: 根据 scoresInfo获取总分的位置(position)为 1。然后在质量分(qualityScores)中获取第一位分数为 0.7168,在 合格标准中(scores) 获取总分标准为 0.63。因为 0.7168 > 0.63, 所以质量合格。 七、通过用户id list查询用户照片 通过用户id list查询用户照片。当用户(userIds) 长度超过10个时,取前10个用户的学工号返回 请求⽅式: POST(HTTPS或HTTP) 请求地址: http://{server}/faceid/public/face/findAllImageBase64ByUserIds 注:https方式类似。 请求参数: { \"userIds\": [\"testface\"], \"types\": [\"100\"] } 参数说明: 参数 类型 是否必须 说明 userIds List 是 学工号 types List 是 照片分类code 返回结果: { \"code\": 200, \"message\": \"OK\", \"data\": [ { \"userId\": \"testface\", \"imageUrl\": \"/group1/M00/00/09/rBEITl-XwYCAD1-MAAHfytyTzvE998.jpg\", \"userFaceFileDtos\": [ { \"type\": \"100\", \"image\": \"/9j/4AAYXk...../2OEQdm5gYbGf/Z\", \"fileName\": \"rBEITl-XwYCAD1-MAAHfytyTzvE998.jpg\", \"timeStamp\": 0 } ] } ] } 参数说明: 参数 类型 说明 code int 返回状态code message String 返回状态消息 data 自定义对象 返回值的自定义对象 userId String 学工号 imageUrl String 回显照片的存储路径 userFaceFileDtos.type String 照片类型 userFaceFileDtos.timeStamp long 照片变动时间戳(毫秒) image String 照片base64 注:照片类型code: 底库照片=100,生活照=201,职业照=202。 八、上传照片(通过类型+用户id) 上传照片(通过类型+用户id)。 请求⽅式: POST(HTTPS或HTTP) 请求地址: http://{server}/faceid/public/face/image 注:https方式类似。 请求参数: { \"ext\":\"jpg\", \"type\":100, \"userId\":\"2009082\", \"image\":\"/9j/4AAQS....Gf/Z\" } 参数说明: 参数 类型 是否必须 说明 userId String 是 学工号 type String 是 照片分类code ext String 是 照片后缀 image String 是 照片base64编码 返回结果: { \"code\": 200, \"message\": \"OK\", \"data\": { \"userId\": \"2009082\", \"path\": \"/group1/M00/00/18/rBEITl-iGcOAd-uEAAHfytyTzvE908.jpg\" } } 参数说明: 参数 类型 说明 code int 返回状态code message String 返回状态消息 data 自定义对象 返回值的自定义对象 userId String 学工号 path String 上传照片的存储路径 注:照片类型code: 底库照片=100,生活照=201,职业照=202。 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-07 20:02:51 "},"faceid/manufacturer/interface/manufacture.html":{"url":"faceid/manufacturer/interface/manufacture.html","title":"人脸厂商标准接口","keywords":"","body":"人脸厂商标准接口 该部分描述厂商应向SID提供的标准接口,以便SID调用。 1:1 认证 1:N 认证 静默活体检测 照片分析(特征值与质量分析) 照片查询 照片删除 照片修改 照片增加 1. 1:1 认证 使用用户底库照片与用户现场照片进行比对 请求⽅式: POST 请求地址: http://{server}/staticdb/search/compare 请求头: 请求参数: { \"app_id\":\"system\", \"app_secret\":\"12345\", \"imageA\":\"YmFzZTY0IGltYWdlCg==\", \"imageB\":\"YmFzZTY0IGltYWdlCg==\" } 参数说明: 参数 是否必须 说明 app_id 是 应用id app_secret 是 应用secret imgA 是 用户现场照片base64编码。和featureA字段二选一,传了imgA就不用传featureA imgB 是 用户底库照片base64编码。和featureB字段二选一,传了imgB就不用传featureB featureA 否 特征值A和imgA字段二选一 featureB 否 特征值A和imgB字段二选一 返回结果: { \"info\": \"success\", \"result\": 0, \"score\": 0.999 } 参数说明: 参数 说明 info 返回信息描述,成功为success,失败为错误描述信息 result 返回码0成功,返回其他值为失败 score 比对结果分数 2. 1:N 认证 使用用户现场与全部用户进行比对返回最相似的用户 请求⽅式: POST 请求地址: http://{server}/staticdb/search/multiple 请求头: 请求参数: { \"app_id\":\"system\", \"app_secret\":\"12345\", \"groupId\":\"\", \"topN\":2, \"img\":\"\" } 参数说明: 参数 是否必须 说明 app_id 是 应用id app_secret 是 应用secret groupId 否 人脸库编号 topN 是 返回比对结果最相似的数量,由高到低,例如:2 img 是 图片base64 返回结果: { \"faces\": [ { \"groupId\": \"xyb01\", \"score\": 0.9987342, \"userId\": \"5f97b281c049c70006c5dd8a\" }, { \"groupId\": \"xyb01\", \"score\": 0.40020594, \"userId\": \"5f918741309dea0007d74af5\" } ], \"info\": \"success\", \"result\": 0 } 参数说明: 参数 说明 info 返回信息描述,成功为success,失败为错误描述信息 result 返回码0成功,返回其他值为失败 faces[] 比对结果列表 faces结构 参数 说明 groupId 人脸库编号 score 比对结果分数 userId 用户id 3. 静默活体检测 静默活体是在用户无感的情况下直接进行活体校验。不需要用户做任何动作,判断图片中的人脸是否来自于真人活体,有效抵御纸质翻拍照、电子翻拍照以及视频翻拍等各种攻击方式 请求⽅式: POST 请求地址: http://{server}/liveness/action 请求头: 请求参数: { \"app_id\":\"system\", \"app_secret\":\"12345\", \"param\":\"YmFzZTY0IGltYWdlCg==\" } 参数说明: 参数 是否必须 说明 app_id 是 应用id app_secret 是 应用secret param 是 需要检测的照片。格式为base64字符串 返回结果: { \"extInfo\": 1, \"info\": \"动作活体检测耗时:127 攻击类型:1\", \"result\": 0 } 参数说明: 参数 说明 info 返回信息描述,成功为success,失败为失败描述信息 result 返回码0成功,返回其他值为失败 extInfo 攻击类型 1 通过活体检测,其他值为失败 4. 照片分析(特征值与质量分析) 分析照片特征值和质量分数 请求⽅式: POST 请求地址: http://{server}/staticdb/search/feature 请求头: 请求参数: { \"app_id\":\"system\", \"app_secret\":\"12345\", \"img\":\"YmFzZTY0IGltYWdlCg==\" } 参数说明: 参数 是否必须 说明 app_id 是 应用id app_secret 是 应用secret groupId 否 人脸库编号 img 是 图片base64 返回结果: { \"feature\": \"MzQxZmFzZDQxMjM0MTIzNDEyCg==\", \"info\": \"success\", \"qualityScores\": \"0.7341,0.6496,0.0000,0.0008,0.9145,0.5783,0.0005,0.9721,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,-2.7956,0.9578,-1.3971,97.0000,155.0000,199.0000,199.0000,1.0000,0.9635,0.8536,0.0000,0.0000,0.0000,0.0000,0240bea626980479fdcf0e30a248032d\", \"result\": 0 } 参数说明: 参数 说明 info 返回信息描述,成功为success,失败为错误描述信息 result 返回码0成功,返回其他值为失败 feature 照片特征值 qualityScores 照片质量评分,逗号间隔开 结构化信息(qualityScores)按逗号分割,其中每一位数字所代表的具体信息如下: [0]人脸质量总分 0.65 [1]光照分,越大表示光照越适合 推荐范围0.2-0.8 [2]口罩分,分数越大表示越不可能戴口罩 [3]人脸遮挡分数,返回0.0-1.0的分数,越大表示越有可能被遮挡 [4]清晰度分,越大表示越清晰 推荐范围0.65-1.0 [5]是否戴眼镜分数,越大表示越可能戴眼镜 推荐范围0.0-0.5 [6]闭嘴分数,越大表示越可能是闭嘴 推荐范围0.0-0.5 [7]人脸特征点质量分数,越大表示人脸越清晰 0.6 [8]空 [9]戴墨镜的置信分,分数越高,表示戴墨镜的可能性越大 推荐范围0.0-0.5 [10] 年龄 [11] 性别 1 男 2 女 [12] 国籍 1 中国人 2 外国人 [13] 年龄段 1 小孩 2 中年人 4 老人 [14] 正脸侧脸 1.0 [15] 人种 1 黄种人 2 黑种人 4 白种人 8 新疆人 [16] 人脸旋转角-抬头低头角度 pitch [17] 人脸旋转角-左右旋转角度 yaw [18] 人脸旋转角-平面内偏头角度 roll [19] 人脸框 x [20] 人脸框 y [21] 人脸框 width [22] 人脸框 height [23] 是否黑白打印纸张,越大表示越可能是真人 [24] 左眼睁眼分数, 越大表示左眼越可能是睁眼,推荐范围0.5-1.0 [25] 右眼睁眼分数, 越大表示右眼越可能是睁眼,推荐范围0.5-1.0 5. 照片查询 根用户id查询照片信息 请求⽅式: POST 请求地址: http://{server}/face/get 请求头: 请求参数: { \"app_id\":\"system\", \"app_secret\":\"12345\", \"groupId\":\"xyb01\", \"userId\":\"testface\" } 参数说明: 参数 是否必须 说明 app_id 是 应用id app_secret 是 应用secret groupId 否 人脸库编号 userId 是 用户id 返回结果: { \"groupId\": \"xyb01\", \"info\": \"success\", \"qualityScore\": \"0.7341,0.6496,0.0000,0.0008,0.9145,0.5783,0.0005,0.9721,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,-2.7956,0.9578,-1.3971,97.0000,155.0000,199.0000,199.0000,1.0000,0.9635,0.8536,0.0000,0.0000,0.0000,0.0000,0240bea626980479fdcf0e30a248032d\", \"result\": 0, \"userId\": \"testface\" } 失败例子 { \"info\": \"查询人脸错误,错误信息[record not found]\", \"result\": 20010009 } 参数说明: 参数 说明 info 返回信息描述,成功为success,失败为错误描述信息 result 返回码0成功,返回其他值为失败 groupId 人脸库编号 qualityScore 照片质量评分 userId 用户id 6. 照片删除 根据用户id删除照片 请求⽅式: POST 请求地址: http://{server}/face/remove 请求头: 请求参数: { \"app_id\":\"system\", \"app_secret\":\"12345\", \"groupId\":\"xyb01\", \"userId\":\"testface\" } 参数说明: 参数 是否必须 说明 app_id 是 应用id app_secret 是 应用secret groupId 否 人脸库编号 userId 是 用户id 返回结果: { \"info\": \"success\", \"result\": 0 } 参数说明: 参数 说明 info 返回信息描述,成功为success,失败为错误描述信息 result 返回码0成功,返回其他值为失败 7. 照片修改 根据用户id更新照片信息 请求⽅式: POST 请求地址: http://{server}/face/updatefeature 请求头: 请求参数: { \"app_id\":\"system\", \"app_secret\":\"12345\", \"groupId\":\"xyb01\", \"userId\":\"testface\", \"img\":\"YmFzZTY0IGltYWdlCg==\" } 参数说明: 参数 是否必须 说明 app_id 是 应用id app_secret 是 应用secret groupId 否 人脸库编号 img 是 图片base64 返回结果: { \"info\": \"success\", \"result\": 0 } 参数说明: 参数 说明 info 返回信息描述,成功为success,失败为错误描述信息 result 返回码0成功,返回其他值为失败 8. 照片增加 添加一张用户的人脸照片 请求⽅式: POST 请求地址: http://{server}/face/add 请求头: 请求参数: { \"app_id\":\"system\", \"app_secret\":\"12345\", \"groupId\":\"xyb01\", \"userId\":\"testface\", \"img\":\"YmFzZTY0IGltYWdlCg==\" } 参数说明: 参数 是否必须 说明 app_id 是 应用id app_secret 是 应用secret groupId 否 人脸库编号 userId 是 用户id img 是 图片base64 返回结果: { \"info\": \"success\", \"result\": 0, \"userId\": \"testface\" } 参数说明: 参数 说明 info 返回信息描述,成功为success,失败为错误描述信息 result 返回码0成功,返回其他值为失败 userId 用户id ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-11-30 10:33:38 "},"faceid/manufacturer/interface/application.html":{"url":"faceid/manufacturer/interface/application.html","title":"人脸应用标准接口","keywords":"","body":"人脸应用标准接口 1. 照片分析(特征值与质量分析) 分析照片特征值和质量分数 请求⽅式: POST 请求地址: http://{server}/staticdb/search/feature 请求头: 请求参数: { \"app_id\":\"system\", \"app_secret\":\"12345\", \"img\":\"YmFzZTY0IGltYWdlCg==\" } 参数说明: 参数 是否必须 说明 app_id 是 应用id app_secret 是 应用secret groupId 否 人脸库编号 img 是 图片base64 返回结果: { \"feature\": \"MzQxZmFzZDQxMjM0MTIzNDEyCg==\", \"info\": \"success\", \"qualityScores\": \"0.7341,0.6496,0.0000,0.0008,0.9145,0.5783,0.0005,0.9721,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,-2.7956,0.9578,-1.3971,97.0000,155.0000,199.0000,199.0000,1.0000,0.9635,0.8536,0.0000,0.0000,0.0000,0.0000,0240bea626980479fdcf0e30a248032d\", \"result\": 0 } 参数说明: 参数 说明 info 返回信息描述,成功为success,失败为错误描述信息 result 返回码0成功,返回其他值为失败 feature 照片特征值 qualityScores 照片质量评分,逗号间隔开 结构化信息(qualityScores)按逗号分割,其中每一位数字所代表的具体信息如下: [0]人脸质量总分 0.65 [1]光照分,越大表示光照越适合 推荐范围0.2-0.8 [2]口罩分,分数越大表示越不可能戴口罩 [3]人脸遮挡分数,返回0.0-1.0的分数,越大表示越有可能被遮挡 [4]清晰度分,越大表示越清晰 推荐范围0.65-1.0 [5]是否戴眼镜分数,越大表示越可能戴眼镜 推荐范围0.0-0.5 [6]闭嘴分数,越大表示越可能是闭嘴 推荐范围0.0-0.5 [7]人脸特征点质量分数,越大表示人脸越清晰 0.6 [8]空 [9]戴墨镜的置信分,分数越高,表示戴墨镜的可能性越大 推荐范围0.0-0.5 [10] 年龄 [11] 性别 1 男 2 女 [12] 国籍 1 中国人 2 外国人 [13] 年龄段 1 小孩 2 中年人 4 老人 [14] 正脸侧脸 1.0 [15] 人种 1 黄种人 2 黑种人 4 白种人 8 新疆人 [16] 人脸旋转角-抬头低头角度 pitch [17] 人脸旋转角-左右旋转角度 yaw [18] 人脸旋转角-平面内偏头角度 roll [19] 人脸框 x [20] 人脸框 y [21] 人脸框 width [22] 人脸框 height [23] 是否黑白打印纸张,越大表示越可能是真人 [24] 左眼睁眼分数, 越大表示左眼越可能是睁眼,推荐范围0.5-1.0 [25] 右眼睁眼分数, 越大表示右眼越可能是睁眼,推荐范围0.5-1.0 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-11-30 10:33:38 "},"faceid/deployment/deployment.html":{"url":"faceid/deployment/deployment.html","title":"人脸实施部署文档","keywords":"","body":"SourceID人脸环境部署 前言 概述 本文主要书写SourceID产品人脸部分及相关依赖在进行安装部署时,如何进行安装部署,将相关的步骤进行描述说明。 SourceID产品具体安装详见:svn://192.168.54.191/ykt/RG_LinkID项目管理/SID业务学习文档/部署实施/高教方案/BS-00-SourceId1.6.4版本安装部署手册.docx。 修订记录 日期 版本 修订说明 作者 2020年04月26日 V1.0 第一次发布 陆勇思 注:集群部署模式中所有操作均在Master主节点服务器上执行,单机部署就直接在服务器上执行,服务器登录账号只能用root账号操作,集群模式下master主节点与node节点服务器的密码要保持一致。 一、 资源准备 1、 硬件资源: 服务器节点 服务器系统版本 网络 CPU核数 内存容量 硬盘磁盘容量 说明 服务器A CentOS 7.6.1810 与C互通 16核 32G 系统盘50G,数据盘500G 必须安装有英伟达显卡,用于安装人脸厂商服务器 服务器B CentOS 7.6.1810 与C互通 16核 32G 系统盘50G,数据盘500G 作为FastDFS服务器 服务器C CentOS 7.6.1810 与B互通 16核 32G 系统盘50G,数据盘500G 一到多台,部署SourceID以及人脸组件,根据时间需要 2、 软件资源: Centos7系统、英伟达显卡驱动、云从服务端软件、KAD部署包、FaceId-Task镜像。 SecureCRT或Xshell、winscp等远程工具。 3、 外部资源: 云从license。 二、 总体顺序 1、 云从服务器安装系统以及显卡驱动,收集机器码。 2、 云从官网申请license。 3、 服务器安装license,启动云从服务端。 4、 作为FastDFS的服务器安装操作系统,通过KAD部署FastDFS组件。 5、 用于部署SourceID的服务器安装好操作系统后,通过KAD部署SourceID服务。 6、 部署FaceId-Task组件。 三、 部署CloudCore_FaceEngine服务(云从) 1、 准备服务器 服务器需要安装有英伟达显卡,适用系统: centos7.2、centos7.3。 2、 安装显卡驱动 2.1、按照步骤 2.1.1、 检查BIOS中的Secure Boot设置,将该值设置成disable 2.1.2、 查看显卡型号 lspci | grep -i vga lspci -v -s 83:00.0 2.1.3、 官网上搜索并下载对应驱动https://www.geforce.cn/drivers 2.1.4、 将下载的驱动上传到服务器 ## 通过winscp等工具或者lrzsz命令 mkdir /opt/cloudCore cd /opt/cloudCore yum install lrzsz rz ## 然后选择文件 2.1.5、 安装gcc yum -y install gcc 2.1.6、 安装kernel-devel ##查看当前内核版本号 uname -r ## 访问http://rpm.pbone.net/index.php3,查找内核版本对应的kernel-devel包 wget ftp://ftp.pbone.net/mirror/dl.central.org/dl/linuxdev/centos7/x86_64/kernel-devel-3.10.0-957.el7.x86_64.rpm ## 需要先安装perl工具 yum install perl rpm -ivh kernel-devel-2.6.32-431.el6.x86_64.rpm 2.1.7、 安装dkms yum -y install dkms ## 如果这一步提示没有对应的包,可以通过以下方法安装: yum install perl* perl -v yum install epel-release yum --enablerepo=epel install dkms 2.1.8、 关闭图形界面并重启 sudo service lightdm stop ## 重启: reboot 2.1.9、 安装驱动 ## 进入到驱动存放的路径 ./NVIDIA-Linux-x86_64-440.64.run --kernel-source-path=/usr/src/kernels/3.10.0-1062.18.1.el7.x86_64 -k $(uname -r) -dkms ## /usr/src/kernels/3.10.0-1062.18.1.el7.x86_64为kernel安装后的地址,根据自己的版本确定 ## 选项基本选择默认,其中覆盖安装选择覆盖 2.1.10、 重启图形界面(可选) sudo service lightdm start ## 重启 reboot 2.1.11、检查是否安装完成,执行命令后出现以下内容说明安装完成 nvidia-smi 2.2 常见问题: 2.2.1、 Unable to load the 'nvidia-drm' kernel module 未安装dkms,执行上方步骤6 检查BIOS中的Secure Boot设置,该值需要设置成disable 2.2.2、 kernel版本和内核版本不一致导致 Failed to run `/usr/sbin/dkms build -m nvidia -v 440.64 -k 3.10.0-957.el7.x86_64`: Error! Echo Your kernel headers for kernel 3.10.0-957.el7.x86_64 cannot be found at /lib/modules/3.10.0-957.el7.x86_64/build or /lib/modules/3.10.0-957.el7.x86_64/source. You can use the --kernelsourcedir option to tell DKMS where it's located. 解决方案: yum install “kernel-devel-uname-r == $(uname -r)” ## 安装kernel时使用上方的命令,当yum源中没有对应版本的时候,会导致安装的版本不匹配,此时可以先卸载,再参照上方步骤5重新安装,卸载命令: yum remove kernel-devel-版本号 3、 收集机器码,申请license 3.1、 收集机器码 cd /opt/cloudCore ## 选择文件 rz ## 解压Linux激活工具 tar xzvf User_UkeyLinux_v1.8.tar.gz ## 进入目录 cd UkeyLinux ## 执行./activator,输入2,收集机器码。 ./activator 文件下载 3.2、生成v2c文件 登陆授权官网:https://ai.cloudwalk.cn fingerprint.c2v文件样例: 将fingerprint.c2v文件内的全部内容复制,粘贴至“请输入设备ID号”处,然后点击“确认”,平台会生成v2c.txt文件。 3.3、 激活授权 cd /opt/cloudCore/UkeyLinux rz ##选择文件 ./activator 下载v2c文件,得到v2c.txt文件,上传至云从服务器。 云从服务器主机,执行./activator,输入4,输入v2c.txt,即可完成授权激活。 3.4、检查授权状态 执行./UkeyCheck,检查授权状态,核对申请的授权是否正确。 4、 启动云从服务端 (1)关闭防火墙 ##服务运行需要将防火墙关闭,如果需要永久关闭可执行如下两条命令,执行信息。 systemctl stop firewalld ##临时关闭防火 安装程序默认 systemctl disable firewalld ##永久关闭防火墙 (2)安装包准备 将 CloudCore_FaceEngine 安装程序拷贝至/home/(用户)目录,目录可任意指定。 登录服务器并cd进入目录。 首先解压 CloudCore_FaceEngine.tar.gz 引擎安装包。 执行命令:tar xzvf FaceGo.tar.gz。 解压后修改文件权限:chmod 777 *。 (3)该目录下的文件需要修改: /{filepath}/FaceGo/AlgorithmRecog/config/extra_conf_gpu.txt GpuID:GPU个数-1,一个GPU配0,两个GPU配1。 nDetectThread=3: #人脸检测线程数,GPU个数*3。 nFeatureThread=1: #特征提取线程数,GPU个数*1。 Tip:只需要修改extra_conf_gpu.txt一个文件。 (4)启动 在主程序目录下执行./start.sh,出现如下标识说明启动成功。 (5)登录页面 地址:ip:7100/page;用户名/密码:admin/admin。登录成功后配置需要使用的人脸库,此人脸库名称会在后面人脸组件上对应配置。 四、 KAD部署FastDFS 1、 KAD工具安装 (1)在线安装 yum install -y http://172.17.8.20:8081/repository/files/ruijie/kad/release/kad-1.6.0-1.x86_64.rpm ## 具体版本根据实际情况确定 (2)离线安装 ##将KAD安装包复制到/opt目录下 cd /opt tar xzvf sourceid-kad-r1.6.4.tar.gz -C /opt/kad 2、 修改配置文件 /opt/kad/workspace/k8s/conf/all.yml中的FastDFS配置参数。 新增:FDFS_USE_TRUNK_FILE: \"false\",防止出现图片获取不到的情况。 3、 执行部署 kad-play playbooks/fdfs/setup.yml 4、 查看部署状态 ps -aux |grep fdfs_storaged ps -aux |grep fdfs_trackerd ## 查看fdfs_storaged,fdfs_trackerd两个服务状态 systemctl status fdfs_storaged systemctl status fdfs_trackerd 5、 卸载(可选) 如果需要卸载,执行以下命令。 kad-play playbooks/fdfs/clean.yml 如果kad工具无法卸载,可以使用网上的方式进行卸载。 链接地址:https://blog.csdn.net/weixin_37380784/article/details/94732272 五、 KAD部署SourceID 1、 KAD工具安装 yum install -y http://172.17.8.20:8081/repository/files/ruijie/kad/release/kad-1.6.0-1.x86_64.rpm #### 具体版本根据实际情况确定 2、 修改配置文件 (1)在/opt/kad/workspace/ruijie-sourceid/conf/all.yml文件添加人脸组件: SOURCEID_FACEID_ENABLED: \"yes\" 配置域名 (2)kad.yml添加人脸组件及版本号: 版本号根据实际情况修改 /opt/kad/down/sourceid-kad-r1.6.4/kad.yml faceid: {name: \"sourceid/faceid\", version: \"1.8.0R1\"}, faceid-display: {name: \"sourceid/faceid-display\", version: \"sid0.1\"}, 3、 修改配置文件 人脸组件版本可能需要安装最新版,而kad工具打包时只打包了当时的配置文件和数据库脚本,因此需要手工修改配置文件。 /opt/kad/workspace/ruijie-sourceid/conf/sourceid/faceid/application-pro.yml 修改该文件的ycface配置,包括云从地址以及云从上配置的人脸库groupIds 4、 部署SourceID kad-play playbooks/sourceid/prepare.yml kad-play playbooks/sourceid/setup.yml 5、 检测状态 kubectl -n ruijie-sourceid get pod 六、 手工部署faceId-task和wsoauth 1、 准备yml文件 注意根据服务器情况合理分配cpu内存等,faceid-task项目只能单pod部署 wsoauth.yml 下载文件 apiVersion: extensions/v1beta1 kind: Deployment metadata: name: rg-wsoauth namespace: ruijie-sourceid spec: replicas: 1 template: metadata: labels: service: rg-wsoauth spec: containers: - name: rg-wsoauth image: id.ruijie.com.cn:25082/sourceid/wsoauth:1.8.0p10 imagePullPolicy: IfNotPresent env: - name: JAVA_OPT_EXT value: \"-Xms1024m -Xmx1024m\" resources: limits: cpu: 1 memory: 1Gi requests: cpu: 1 memory: 1Gi ports: - containerPort: 8580 volumeMounts: - mountPath: /ruijie/sourceid/wsoauth/conf name: conf imagePullSecrets: - name: regsecret volumes: - name: conf hostPath: path: /home/ruijie/ruijie-sourceid/sourceid/wsoauth/conf --- apiVersion: v1 kind: Service metadata: name: rg-wsoauth namespace: ruijie-sourceid spec: selector: service: rg-wsoauth ports: - port: 80 targetPort: 8580 --- apiVersion: extensions/v1beta1 kind: Ingress metadata: name: rg-wsoath-ingress namespace: ruijie-sourceid spec: rules: - host: self.wzu.edu.cn http: paths: - path: /wsoauth backend: serviceName: rg-wsoauth servicePort: 80 faceid-task.yml 下载文件 apiVersion: extensions/v1beta1 kind: Deployment metadata: name: rg-faceid-task namespace: ruijie-sourceid spec: replicas: 1 template: metadata: labels: service: rg-faceid-task spec: containers: - name: rg-faceid-task image: id.ruijie.com.cn:25082/sourceid/faceid-task:1.8.0 imagePullPolicy: IfNotPresent env: - name: JAVA_OPT_EXT value: \"-Xms512m -Xmx2048m\" resources: limits: cpu: 2 memory: 3Gi requests: cpu: 1 memory: 2Gi ports: - containerPort: 8903 volumeMounts: - mountPath: /ruijie/sourceid/faceid-task/conf name: conf imagePullSecrets: - name: regsecret volumes: - name: conf hostPath: path: /home/ruijie/ruijie-sourceid/sourceid/faceid-task/conf --- apiVersion: v1 kind: Service metadata: name: rg-faceid-task namespace: ruijie-sourceid spec: selector: service: rg-faceid-task ports: - port: 80 targetPort: 8903 2、 新增配置文件 目前配置文件放在/home/ruijie/ruijie-sourceid/sourceid 路径下,如果没有配置文件,镜像启动时会异常。 Tip:如果k8s集群有多台,则每台机器上都需要配置,配置文件需要手工修改数据库链接等配置。 下载文件 3、 修改配置 rg.sync.image:任务运行间隔时间 identity.user-id:从linkid获取的用户id的key identity.client-id:支持人脸同步的client identity.get-users:获取用户id的接口 4、 部署应用 ## 通过yml文件创建pod kubectl create -f /opt/kad/workspace/ruijie-sourceid/yaml/faceid-task/faceid-task.yml kubectl create -f /opt/kad/workspace/ruijie-sourceid/yaml/wsoauth/wsoauth.yml 5、 检测状态 kubectl -n ruijie-sourceid get pod ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-08 17:20:53 "},"faceid/faq/faq.html":{"url":"faceid/faq/faq.html","title":"FAQ","keywords":"","body":"FAQ 待补充 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-11-30 10:33:38 "},"linkid/role/introduction/":{"url":"linkid/role/introduction/","title":"开发前须知","keywords":"","body":"开发前须知 角色接口规范说明 角色接口调用授权 创建应用角色 标签数据授权 用户数据授权 角色接口规范说明: 各类数据内容返回, 属性名为驼峰式, 以文档示例为准 分页接口, 分页参数属性是驼峰式, 以文档示例为准 角色接口调用授权: 获取accessToken 设置请求头 Authorization: Bearer {access_token} 创建应用角色 1、编辑应用 2、配置应用角色 3、新增角色 4、进行角色映射 标签数据授权 标签数据授权 用户数据授权 用户数据授权 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-08 14:43:17 "},"linkid/role/public/interface/role-external-api.html":{"url":"linkid/role/public/interface/role-external-api.html","title":"角色对外接口","keywords":"","body":"角色对外API 角色对外api描述SID向应用提供的标准接口,以便外部应用调用。标准接口如下: 创建应用角色接口 查询应用生成的角色 查询用户在某个应用匹配的应用角色 查询用户在所有应用匹配的应用角色 一、创建应用角色接口 当业务系统需要在SourceId创建应用角色时调用 请求⽅式: POST(HTTPS或HTTP) 请求地址: http://self.xxx.edu.cn/linkid/public/api/aggregate/app/remote/role/create 注:https方式类似。 请求参数: { \"roleName\":\"应用生成的角色名称\", \"roleCode\":\"应用生成的角色编号\", \"roleDescriber\":\"应用生成的角色的描述\" } 参数说明: 参数 类型 是否必须 说明 roleName string 是 应用生成的角色名称 roleCode string 是 应用生成的角色编号 roleDescriber string 否 应用生成的角色的描述 返回结果: { \"code\": 200, \"message\": \"OK\", \"data\": true } 参数说明: 参数 类型 说明 code int 返回状态code message String 返回状态消息 data boolean 保存结果 二、查询应用生成的角色 业务系统调用接口, 查询应用系统关联的角色 请求⽅式: GET(HTTPS或HTTP) 请求地址: http://self.xxx.edu.cn/linkid/public/api/aggregate/app/remote/role/find 注:https方式类似。 请求参数: 请求示例: https://ljw.sso.rghall.com.cn/linkid/public/api/aggregate/app/remote/role/find 返回结果: { \"code\": 200, \"message\": \"OK\", \"data\": [ { \"id\": \"应用角色ID\", \"appId\": \"应用系统的ID\", \"roleName\": \"应用角色名称\", \"roleCode\": \"应用角色编号\", \"roleDescriber\": \"应用角色描述\" } ] } 参数说明: 参数 类型 说明 code int 返回状态code message String 返回状态消息 data 自定义对象 返回值为部门id列表 id string 应用角色ID appId string 应用系统的ID roleName string 应用角色名称 roleCode string 应用角色编号 roleDescriber string 应用角色描述 三、查询用户在某个应用匹配的应用角色 查询用户在某个应用匹配的应用角色 请求⽅式: GET(HTTPS或HTTP) 请求地址: http://self.xxx.edu.cn/linkid/public/api/aggregate/app/remote/role/find/user/{userId} 注:https方式类似。 请求参数: 示例:http://ljw.sso.rghall.com.cn/linkid/public/api/aggregate/app/remote/role/find/user/12345 参数说明: 参数 类型 是否必须 说明 userId string 是 学工号 返回结果: { \"code\": 200, \"message\": \"OK\", \"data\": [ { \"id\": \"应用角色ID\", \"appId\": \"应用系统的ID\", \"roleName\": \"应用角色名称\", \"roleCode\": \"应用角色编号\", \"roleDescriber\": \"应用角色描述\" } ] } 参数说明: 参数 类型 说明 code int 返回状态code message String 返回状态消息 data 自定义对象 返回值为部门id列表 id string 应用角色ID appId string 应用系统的ID roleName string 应用角色名称 roleCode string 应用角色编号 roleDescriber string 应用角色描述 四、查询用户在所有应用匹配的应用角色 查询用户在某个应用匹配的应用角色 请求⽅式: GET(HTTPS或HTTP) 请求地址: http://self.xxx.edu.cn/linkid/api/aggregate/app/remote/public/role/find/user/{userId} 注:https方式类似。 请求参数: 示例: http://ljw.sso.rghall.com.cn/linkid/api/aggregate/app/remote/public/role/find/user/12345 参数说明: 参数 类型 是否必须 说明 userId string 是 学工号 返回结果: { \"code\": 200, \"message\": \"OK\", \"data\": [ { \"id\": \"应用角色ID\", \"appId\": \"应用系统的ID\", \"roleName\": \"应用角色名称\", \"roleCode\": \"应用角色编号\", \"roleDescriber\": \"应用角色描述\" } ] } 参数说明: 参数 类型 说明 code int 返回状态code message String 返回状态消息 data 自定义对象 返回值为部门id列表 id string 应用角色ID appId string 应用系统的ID roleName string 应用角色名称 roleCode string 应用角色编号 roleDescriber string 应用角色描述 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-17 14:12:30 "},"linkid/role/faq/faq.html":{"url":"linkid/role/faq/faq.html","title":"FAQ","keywords":"","body":"FAQ 待补充 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-11-30 10:33:38 "},"linkid/userorganizationpost/introduction/":{"url":"linkid/userorganizationpost/introduction/","title":"开发前须知","keywords":"","body":"开发前须知 三元组接口规范说明 三元组接口调用授权 组织数据授权 用户数据授权 标签数据授权 岗位数据授权 角色接口规范说明: 各类数据内容返回, 属性名为驼峰式, 以文档示例为准 分页接口, 分页参数属性是驼峰式, 以文档示例为准 角色接口调用授权: 获取accessToken 设置请求头 Authorization: Bearer {access_token} 组织数据授权 组织数据授权 用户数据授权 用户数据授权 标签数据授权 标签数据授权 岗位数据授权 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-11-30 10:33:39 "},"linkid/userorganizationpost/public/interface/userorganizationpost-external-api.html":{"url":"linkid/userorganizationpost/public/interface/userorganizationpost-external-api.html","title":"三元组对外接口","keywords":"","body":"三元组对外API 三元组对外api描述SID向应用提供的标准接口,以便外部应用调用。标准接口如下: 增量获取组织信息 增量获取岗位信息 增量获取用户信息 增量获取三元组关系 一、增量获取组织信息 当业务系统需要在SourceId, 增量获取组织信息 请求⽅式: GET(HTTPS或HTTP) 请求地址: http://self.xxx.edu.cn/linkid/api/aggregate/keTan/public/findOrganizationsByDate?timestamp={timestamp} 注:https方式类似。 请求参数: http://ljw.sso.rghall.com.cn/linkid/api/aggregate/keTan/public/findOrganizationsByDate?timestamp=1601000903868 参数说明: 参数 类型 是否必须 说明 timestamp long 是 时间戳 返回结果: //有数据 { \"errno\": 0, \"error\": null, \"entities\": [ { \"organizeId\": \"a\", \"organizeName\": \"a\", \"parentOrganizeId\": \"RJXZZZ\", \"independent\": false, \"timestamp\": 1603347326598, \"disabled\": false }, { \"organizeId\": \"aaaaa\", \"organizeName\": \"aaa\", \"parentOrganizeId\": \"\", \"independent\": true, \"timestamp\": 1604302576033, \"disabled\": true }, { \"organizeId\": \"bbb\", \"organizeName\": \"bbb\", \"parentOrganizeId\": \"\", \"independent\": true, \"timestamp\": 1604302581061, \"disabled\": true } ], \"total\": 3 } //无数据 { \"errno\": 1, \"error\": \"没有需要同步的组织数据\", \"entities\": null, \"total\": 0 } 参数说明: 参数 类型 说明 errno int 返回状态, 0 成功, 1 失败 error String 返回状态消息 entities 自定义对象 自定义对象 total int 总记录数 organizeId string 部门id organizeName string 部门名称 parentOrganizeId string 父部门id independent boolean 是否独立,true 没有父部门 disabled boolean 是否有效,true 有效, false无效 timestamp long 时间戳 二、增量获取岗位信息 业务系统调用接口, 增量获取岗位信息 请求⽅式: GET(HTTPS或HTTP) 请求地址: http://self.xxx.edu.cn/linkid/api/aggregate/keTan/public/findPostsByDate?timestamp={timestamp} 注:https方式类似。 请求参数: 请求示例: http://ljw.sso.rghall.com.cn/linkid/api/aggregate/keTan/public/findPostsByDate?timestamp=1601000903868 参数说明: 参数 类型 是否必须 说明 timestamp long 是 时间戳 返回结果: { \"errno\": 0, \"error\": null, \"entities\": [ { \"postCode\": \"88\", \"postName\": \"测试\", \"formal\": false, \"timestamp\": 1603260786072, \"disabled\": false }, { \"postCode\": \"61\", \"postName\": \"在校生\", \"formal\": false, \"timestamp\": 1604646910939, \"disabled\": false }, { \"postCode\": \"62\", \"postName\": \"校友\", \"formal\": false, \"timestamp\": 1604646926142, \"disabled\": false }, { \"postCode\": \"aaa\", \"postName\": \"aaaa\", \"formal\": false, \"timestamp\": 1605099529978, \"disabled\": false } ], \"total\": 4 } 参数说明: 参数 类型 说明 errno int 返回状态, 0 成功, 1 失败 error String 返回状态消息 entities 自定义对象 返回值为部门id列表 postCode string 岗位编码 postName string 岗位名称 formal boolean 是否正式岗位, true 是, false 否 timestamp long 时间戳 disabled boolean 是否有效, true有效, false无效 三、增量获取用户信息 查询用户在某个应用匹配的应用角色 请求⽅式: GET(HTTPS或HTTP) 请求地址: http://self.xxx.edu.cn/linkid/api/aggregate/keTan/public/findUsersByDate?timestamp={timestamp} 注:https方式类似。 请求参数: 示例: http://ljw.sso.rghall.com.cn/linkid/api/aggregate/keTan/public/findUsersByDate?timestamp=1601000903868 参数说明: 参数 类型 是否必须 说明 timestamp long 是 时间戳 返回结果: { \"errno\": 0, \"error\": null, \"entities\": [ { \"account\": \"00000002\", \"name\": \"gzx123\", \"email\": \"null\", \"phone\": \"13305902541\", \"timestamp\": 1601458338487, \"disabled\": true }, { \"account\": \"1987121\", \"name\": \"郭知\", \"email\": \"null\", \"phone\": \"13305902541\", \"timestamp\": 1602666383817, \"disabled\": true } ], \"total\": 2 } 参数说明: 参数 类型 说明 errno int 返回状态, 0 成功, 1 失败 error String 返回状态消息 entities 自定义对象 返回值为部门id列表 account string 学工号 name string 姓名 email string 邮箱 phone string 手机号 timestamp long 时间戳 disabled boolean 是否有效, true有效, false无效 四、增量获取三元组关系接口 查询用户在某个应用匹配的应用角色 请求⽅式: GET(HTTPS或HTTP) 请求地址: http://self.xxx.edu.cn/linkid/api/aggregate/keTan/public/findUserOrganizationPost?timestamp={timestamp} 注:https方式类似。 请求参数: 示例: http://ljw.sso.rghall.com.cn/linkid/api/aggregate/keTan/public/findUserOrganizationPost?timestamp=1601000903868 参数说明: 参数 类型 是否必须 说明 timestamp long 是 时间戳 返回结果: { \"errno\": 0, \"error\": null, \"entities\": [ { \"account\": \"vincent\", \"postCode\": \"10\", \"deptCode\": null, \"userCode\": null, \"timestamp\": 1601458338487, \"disabled\": true }, { \"account\": \"vincent\", \"postCode\": \"10\", \"deptCode\": null, \"userCode\": null, \"timestamp\": 1602666383817, \"disabled\": true } ], \"total\": 2 } 参数说明: 参数 类型 说明 errno int 返回状态, 0 成功, 1 失败 error String 返回状态消息 entities 自定义对象 返回值为部门id列表 account string 学工号 postCode string 岗位编码 deptCode string 编码编码 userCode 废弃 废弃 timestamp long 时间戳 disabled boolean 是否有效, true有效, false无效 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-07 20:06:02 "},"linkid/userorganizationpost/faq/faq.html":{"url":"linkid/userorganizationpost/faq/faq.html","title":"FAQ","keywords":"","body":"FAQ 待补充 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-11-30 10:33:39 "},"linkid/dlmu/introduction/":{"url":"linkid/dlmu/introduction/","title":"开发前须知","keywords":"","body":"开发前须知 接口规范说明 接口调用授权 接口规范说明: 各类数据内容返回, 属性名为驼峰式, 以文档示例为准 分页接口, 分页参数属性是驼峰式, 以文档示例为准 接口调用授权: 获取accessToken 设置请求头 Authorization: Bearer {access_token} ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-08 17:25:12 "},"linkid/dlmu/public/interface/dlmu-external-api.html":{"url":"linkid/dlmu/public/interface/dlmu-external-api.html","title":"其他接口","keywords":"","body":"其他接口 查询所有对接的应用 查询用户的入口授权 一、查询所有对接的应用 门户应用获取已对接的应用列表, 展示应用相关信息 请求⽅式: GET(HTTPS或HTTP) 请求地址: http://self.xxx.edu.cn/linkid/api/aggregate/app/public/find/clientId/name/all 注:https方式类似。 请求参数: 请求示例: https://ljw.sso.rghall.com.cn/linkid/api/aggregate/app/public/find/clientId/name/all 返回结果: { \"code\": 200, \"message\": \"OK\", \"data\": [ { \"clientId\": \"OC4wNS4wNS4wNy4wMC4wMy4wMS4wMS4w\", \"name\": \"智慧身份源系统\", \"url\": \"http://id.ruijie.com.cn\", \"describe\": \"智慧身份源系统\", \"isDeleted\": false }, { \"clientId\": \"11111111111111\", \"name\": \"11111111111111111\", \"url\": \"http://www.1111111.com\", \"describe\": \"11111111111111111111111\", \"isDeleted\": false } ] } 参数说明: 参数 类型 说明 code int 返回状态code message String 返回状态消息 data 自定义对象 自定义对象 clientId string 应用的clientId name string 应用名称 url string 应用url describe string 应用描述 isDeleted boolean 是否已删除, true:已删除, false: 未删除 二、查询用户有入口授权的应用 查询用户的有入口授权的应用 请求⽅式: GET(HTTPS或HTTP) 请求地址: http://self.xxx.edu.cn/linkid/remote/permission/entrance/public/find/entancePermissions/{userId} 注:https方式类似。 请求参数: 请求示例: https://ljw.sso.rghall.com.cn/linkid/remote/permission/entrance/public/find/entancePermissions/admin 返回结果: { \"code\": 200, \"message\": \"OK\", \"data\": [ { \"clientId\": \"OC4wNS4wNS4wNy4wMC4wMy4wMS4wMS4w\", \"name\": \"智慧身份源系统\", \"url\": \"http://id.ruijie.com.cn\", \"describe\": \"智慧身份源系统\", \"isDeleted\": null }, { \"clientId\": \"11111111111111\", \"name\": \"11111111111111111\", \"url\": \"http://www.1111111.com\", \"describe\": \"11111111111111111111111\", \"isDeleted\": null } ] } 参数说明: 参数 类型 说明 code int 返回状态code message String 返回状态消息 data 自定义对象 自定义对象 clientId string 应用的clientId name string 应用名称 url string 应用url describe string 应用描述 isDeleted null 无用字段 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-16 17:37:08 "},"linkid/dlmu/faq/faq.html":{"url":"linkid/dlmu/faq/faq.html","title":"FAQ","keywords":"","body":"FAQ 待补充 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-11-30 10:33:38 "},"release-notes.html":{"url":"release-notes.html","title":"发行说明","keywords":"","body":"发行说明 SID对外开放API包含不同的发行版本,本文档将描述每个版本新增、修改、废弃3部分所包含的接口。 1.7.2版本 新增接口 群组对外接口 修改接口 废弃接口 1.8.0版本 新增接口 人脸对外接口 人脸厂商标准接口 人脸应用标准接口 修改接口 废弃接口 1.7.2版本 一、新增接口 SourceID 1.7.2中添加了以下接口: 1、群组对外接口 创建群组节点、更新群组节点、删除群组节点、查询某个群组节点 创建成员、更新成员、删除成员、查询成员、获取群组节点下成员 待补充 二、修改接口 SourceID 1.7.2中更新了以下接口: 无 三、废弃接口 SourceID 1.7.2中删除了以下接口: 无 1.8.0版本 一、新增接口 SourceID 1.8.0中添加了以下接口: 1、人脸对外接口 1:1 认证、1:N 认证、增量同步照片、增量同步特征值、通过用户id和照片类型查询照片、检查照片质量、通过用户id list查询用户照片、上传照片 2、人脸厂商标准接口 1:1 认证、1:N 认证、静默活体检测、照片分析(特征值与质量分析)、照片查询、照片删除、照片修改、照片增加 3、人脸应用标准接口 照片分析(特征值与质量分析) 待补充 二、修改接口 SourceID 1.7.2中更新了以下接口: 无 三、废弃接口 SourceID 1.7.2中删除了以下接口: 无 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-08 17:27:26 "},"appendix/global-error-code.html":{"url":"appendix/global-error-code.html","title":"全局错误码","keywords":"","body":"全局错误码 SID常用的错误码如下: 错误码 说明 204 返回值为空 401 认证失败 412 业务自定义异常(业务正常进行的条件不具备),例如:根据userId查询用户详细信息时,返回用户id不存在 500 服务器内部异常,例如:服务器访问数据失败 更多错误码详见: HTTP 响应代码。 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-04 18:41:28 "},"appendix/interface-performance.html":{"url":"appendix/interface-performance.html","title":"接口性能","keywords":"","body":"接口性能 人脸模块 人脸模块 1:1 认证接口(特征值或照片),按厂商性能: (90tps * 50k)= 5M,2pod 1:N 认证接口(特征值或照片),按厂商性能: (90tps * 50k)= 5M,2pod 全量同步照片接口(水印或不加水印),分页查询每页最多10条: 10tps, 2pod 增量同步照片接口(水印或不加水印): 10tps, 2pod 全量同步应用特征值接口,分页查询每页最多3000条: 20tps,2pod 增量同步特征值接口, 分页查询每页最多3000条: 20tps,2pod 通过用户id和照片类型查询照片返回url: 100tps,2pod 通过用户id和照片类型查询照片返回base64照片(添加水印或不加水印): (50*100kb)= 10M 照片质量分析 : (90tps * 50k)= 5M,2pod 通过用户id list查询用户照片(水印或不加水印): 10tps, 2pod 上传照片(通过类型+用户id): 100tps,2pod ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-11-30 10:33:38 "},"appendix/faq/faq.html":{"url":"appendix/faq/faq.html","title":"FAQ","keywords":"","body":"FAQ 待补充 ©2020 锐捷网络股份有限公司 all right reserved,powered by Gitbook该文章修订时间: 2020-12-04 18:34:44 "}}
\ No newline at end of file
--
Gitee