用户端点
用户端点
此端点允许创建、修改或删除用户,可通过以下路径访问:
<api-root>/scim/v2/Users
默认情况下,REP_USER 表中 FLAG_ELIMINATED(“删除标志”)列的值等于 DELETED('1')、RECODED('2') 或 FORGOTTEN('5') 的用户会被过滤掉,无法通过 SCIM API 提取。
操作
| 操作 |
Http 方法 |
请求正文 |
路径变量 |
查询字符串参数 |
应答正文 |
HTTP 响应正文 |
响应状态(SCIM 异常) |
| 创建 |
POST |
User |
- |
- |
User |
201(已创建) |
405(方法不允许) 409(冲突) |
| 读取 |
GET |
- |
userId |
- |
User |
200(成功) |
404(未找到) |
| 删除 |
DELETE |
- |
userId |
- |
- |
200(成功) |
404(未找到) |
| 替换 |
PUT |
User |
userId |
- |
User |
200(成功) |
404(未找到) |
| 搜索 |
GET |
- |
- |
filter sortBy sortOrder startIndex count (所有参数均为可选) |
用户列表 |
200(成功) |
400(无效请求) 405(方法不允许) |
| 更新 |
PATCH |
PatchRequest |
userId |
- |
User |
200(成功) |
400(无效请求) 404(未找到) |
SCIM 异常
调用示例
| HTTP 状态 |
描述 |
| 400(无效请求) |
当请求不符合服务规范时发生,例如在过滤器定义不正确(参数错误/语法错误)时调用“搜索”方法,或在 Patch 请求无效时调用“更新”方法。 |
| 404(未找到) |
当请求的资源不存在时发生;例如,尝试替换、更新、搜索或删除某个用户,但不存在与所用标识代码匹配的用户。 |
| 405(方法不允许) |
当请求的端点不允许使用该 HTTP 方法时发生,或者所提供的序列化对象与该方法的预期对象不匹配时发生。例如,在请求正文中提供了不正确的用户对象。 |
| 409(冲突) |
例如,当使用系统中已存在的用户 ID 代码请求创建新用户时发生。 |
支持的标准 SCIM 字段
下表列出了支持的标准 SCIM 用户字段。
| SCIM 用户字段 |
支持的基数(仅集合) |
支持的值 |
| userName |
- |
- |
| name.givenName |
- |
- |
| name.familyName |
- |
- |
| emails |
仅 1 |
*String *用于确定类型工作的公式 |
| phoneNumbers |
仅 1 |
*String *用于确定类型工作的公式 |
| meta.lastModified |
|
|
| password |
|
|
| userType |
|
L(本地)/E(外部) |
| groups |
|
|
| preferredLanguage |
仅 1 |
*LanguageCaption - CountryCaption |
| active |
|
True/False |
*注意:preferredLanguage 字段仅支持 LanguageCaption - CountryCaption 格式的值(示例:en-US),且仅允许 Tagetik 应用程序管理的值
如果在创建或更新期间为 preferredLanguage 字段使用了不符合所需格式或应用程序未管理的值,将发送状态代码 '400 Bad request',并附带错误消息 'Invalid Language Code' 或 'Language Code Not Managed'。
自定义字段
下表列出了 CCH Tagetik 的自定义用户字段。
| SCIM 用户字段 |
描述 |
支持的值 |
| userReferences |
指示新用户将从中继承角色的现有用户 |
- |
| locked |
用户锁定状态 |
True/False(不可变,等于 'active' 字段的相反值) |
| mustChangePwdAtNextLogin |
强制用户在下次登录时更改密码 |
True/False |
| interactionType |
客户端交互类型 |
0(交互式)/1(机器对机器) |
| lastLogin |
应用程序中的最后访问 |
- |
| validityStartDate |
有效期开始日期 |
** |
| validityEndDate |
有效期结束日期 |
** |
| descriptionLanguage |
描述语言 |
- |
| userRoles |
用户可访问的数据库列表及相应角色 |
- |
| dbAllowed |
与用户关联的数据库列表,包含 ID、描述和锁定状态 |
- |
**注意:在创建或更新时,可以为 validityStartDate 和 validityEndDate 字段指定时间。但输入的任何时间都会被忽略,两个字段均替换为 '00:00:00'。
SCIM 企业用户架构扩展字段
下表列出了支持的企业架构用户字段。
| SCIM 用户字段 |
描述 |
支持的值 |
| department |
指定用户的部门 |
- |
示例
| 显示所有用户的列表 |
|
| 方法 |
GET |
| URL |
<api-root>/scim/v2/Users |
| Body |
- |
| 说明 |
|
| 获取单个用户 |
|
| 方法 |
GET |
| URL |
<api-root>/scim/v2/Users/MYUSER |
| Body |
- |
| 示例应答 |
{ "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:User", "urn:tgk:params:scim:schemas:extension:2.0:User", "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User" ], "id": "MYUSER", "externalId": "MYUSER", 'meta': { "resourceType': 'User', "lastModified": 1700149220782 }, "userName": "MYUSER", "name': { "familyName": "My", "givenName": "User". }, "userType': 'E', "preferredLanguage': 'en-IT', "active": true, "emails": [ { "value": "myuser@example.com" } ], "partiallyBlocked': false, "urn:tgk:params:scim:schemas:extension:2.0:User": { "userReferences": [ "REF_USER_CODE" ], "locked": false, "mustChangePwdAtNextLogin": false, "interactionType": "INTERACTIVE", "lastLogin": "2024-01-01T10:10:10.000Z", "validityStartDate": "2020-01-01T00:00:00Z", "validityEndDate": "2030-01-01T00:00:00Z", "descriptionLanguage": "es", "userRoles": [ { "dbId": "[!]", "role": "$ALL" }, { "dbId": "TCPM_DEMO_DEV", "role": "$ALL" } ], "dbAllowed": [ {"id": "TCPM_DEMO_DEV", "description": "TCPM_DEMO_DEV", "locked": false}] }, "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": { "department": "User Department" } |
| 说明 |
通过此请求,我们获取现有用户 MYUSER 的属性,其 preferredLanguage 为 'en-IT'。 |
| 创建新用户 |
|
| 方法 |
POST |
| URL |
<api-root>/scim/v2/Users |
| Body |
{ "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:User" ], "externalId": "MYUSER", "userName": "MYUSER", "userType': 'E', "active": true, "preferredLanguage': 'en-IT', "emails":[ { "value":"myuser@example.com", "type":"work", "primary": true } ], "name": { "familyName": "User", "givenName": "My" }, "urn:tgk:params:scim:schemas:extension:2.0:User": { "userReferences": [ "REF_USER_CODE" ], "descriptionLanguage": "it" } } |
| 说明 |
此请求添加一个外部用户 MYUSER,电子邮件为 myuser@example.com,preferredLanguage 为 'en-IT',并将引用用户设置为 'REF_USER_CODE'。 |
| 对现有用户应用更改 |
|
| 方法 |
PATCH |
| URL |
<api-root>/scim/v2/Users/MYUSER |
| Body |
{ "schemas":["urn:ietf:params:scim:api:messages:2.0:PatchOp", "urn:tgk:params:scim:schemas:extension:2.0"], "Operations":[{ "op":"add", "path":"urn:tgk:params:scim:schemas:extension:2.0:User:userReferences", "value":["REF_USER_CODE"]}] } |
| 说明 |
此请求将引用用户 'REF_USER_CODE' 添加到现有用户 'MYUSER'。 要替换现有引用用户,请使用 " "op":"replace" 而非 "op":"add"。 |
| 对用户角色应用更改 |
|
| 方法 |
PATCH |
| URL |
<api-root>/scim/v2/Users/MYUSER |
| Body |
{ "schemas":["urn:ietf:params:scim:api:messages:2.0:PatchOp", "urn:tgk:params:scim:schemas:extension:2.0"], "Operations":[{"op":"add", "path":"urn:tgk:params:scim:schemas:extension:2.0:User:userRoles", "value":[{"dbId":"DB_ID", "role":"COD_RUOLO"}]}] } |
| 说明 |
此请求将角色 'COD_RUOLO' 添加到现有用户 'MYUSER' 的数据库 'DB_ID' 中。 要替换角色,请使用 ' "op":"replace" 而非 "op":"add"。 请注意,从 SP34 开始,对于涉及用户-应用程序数据库关联的添加和替换操作,"Application DB Restrictions" 字段将默认设置为 "Restricted",以确保与 CCH Tagetik Web 界面行为一致。 |
| 为电子邮件分配类型 'work' |
|
| 方法 |
PATCH |
| URL |
<api-root>/scim/v2/Users/MYUSER |
| Body |
{ "schemas":["urn:ietf:params:scim:api:messages:2.0:PatchOp", "urn:tgk:params:scim:schemas:extension:2.0", "urn:ietf:params:scim:schemas:extensions:enterprise:2.0:User"], "Operations":[{"op":"add", "path":"emails[type eq \"work\"].value", "value":"test@test.it"}]}] } |