SCIM 用户 API 参考¶
您可以使用 SCIM 用户 API 来访问、创建和修改用户数据。
HTTP 标头¶
Snowflake SCIM API 使用持有者令牌进行 HTTP 身份验证。
向 Snowflake SCIM API 发出的每个 HTTP 请求都支持以下 HTTP 标头:
标头 |
值 |
---|---|
:code:`Authorization`(必填) |
|
|
|
|
|
|
|
用户属性¶
您可以在 API 请求正文中以 JSON 格式的键值对形式指定用户属性。这些对包含有关用户的信息,例如用户的显示名称或其电子邮件地址。身份提供商可以为每个属性指定自己的键名。例如,身份提供商可以使用 lastName
键取代 familyName
,来标识用户的姓氏。Snowflake 不支持多值用户属性。
重要
下表中的 userName
和 loginName
属性均引用 userName
属性。Snowflake 支持为 userName
和 loginName
属性指定不同的值。
Snowflake 支持以下属性用于用户生命周期管理。
SCIM 用户属性 |
Snowflake 用户属性 |
类型 |
描述 |
---|---|---|---|
|
|
字符串 |
Snowflake 中用户不可变的唯一标识符 (GUID)。 Snowflake 不会在 DESCRIBE USER 或 SHOW USERS 输出中返回此值。 对于需要此属性的端点上的请求,例如 |
|
|
字符串 |
用于登录到 Snowflake 的标识符。有关这些属性的更多信息,请参阅 CREATE USER。 |
|
|
字符串 |
用户的名字。 |
|
|
字符串 |
用户的姓氏。 |
|
|
字符串 |
用户的电子邮件地址。 |
|
|
字符串 |
提及用户时,用户界面中显示的文本。 |
|
不适用 |
字符串 |
预置客户端(例如 Azure、Okta)设置的唯一标识符。 |
|
|
字符串 |
用户的密码。 该值不会在 JSON 响应中返回。 如果 SCIM 安全集成中的 |
|
|
布尔 |
设置为 |
|
不适用 |
字符串 |
用户所属组的列表。 用户的组不可变,必须使用 SCIM 组 API 更新其成员资格。 |
|
|
字符串 |
将用户添加到 Snowflake 的时间。 |
|
|
字符串 |
上次在 Snowflake 中修改用户的时间。 |
|
不适用 |
字符串 |
用户的资源类型。您应该使用 |
|
不适用 |
字符串 |
以逗号分隔的字符串数组,用于指定命名空间 URIs。Snowflake 支持以下值:
|
自定义属性¶
您可以设置 RFC 7643 (https://datatracker.ietf.org/doc/html/rfc7643) 未定义的自定义属性,例如 defaultRole
。
在执行 POST、PUT 和 PATCH 请求时,您可以使用以下命名空间来设置自定义属性:
urn:ietf:params:scim:schemas:extension:enterprise:2.0:User
此命名空间是 Snowflake 中原始 SCIM 实现的一部分。在 Okta SCIM 安全集成 中,只能使用此命名空间来设置自定义属性。
在 Microsoft Azure SCIM 安全集成 或 自定义 SCIM 集成 中,您不能使用此命名空间来设置自定义属性。
urn:ietf:params:scim:schemas:extension:2.0:User
您可以使用此命名空间为所有 SCIM 集成设置自定义属性。在 Microsoft Azure SCIM 安全集成 或 自定义 SCIM 安全集成 中,您必须使用此命名空间来设置自定义属性。
Snowflake 支持以下自定义属性:
SCIM 用户自定义属性 |
Snowflake 用户属性 |
类型 |
描述 |
---|---|---|---|
|
|
字符串 |
登录时默认为用户会话激活的虚拟仓库。 |
|
|
字符串 |
登录时默认为用户会话激活的主要角色。 |
|
|
字符串 |
登录时在用户会话中处于活跃状态的辅助角色列表。您可以将此属性设置为 |
|
|
字符串 |
用户的类型。默认: |
检查用户是否存在¶
- 方法和端点:
GET /scim/v2/Users?filter=userName eq "{{user_name}}"
- 描述:
返回与
userName
查询参数关联的用户的详细信息。如果 HTTP 请求已成功完成,返回 HTTP 响应状态码
200
。
获取用户详情¶
- 方法和端点:
GET /scim/v2/Users/{{user_id}}
- 描述:
返回与
user_id
路径参数关联的用户的详细信息。如果 HTTP 请求已成功完成,返回 HTTP 响应状态码
200
。
创建用户¶
- 方法和端点:
POST /scim/v2/Users
- 描述:
在 Snowflake 中创建一个用户。
如果 HTTP 请求已成功完成,返回 HTTP 响应状态码
201
。如果用户已存在或 HTTP 请求因不同的原因失败,Snowflake 将返回 HTTP 响应状态码
409
。- 示例:
创建
userName
和loginName
映射到相同值的用户:{ "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:User", "urn:ietf:params:scim:schemas:extension:2.0:User" ], "userName": "test_user_1", "password": "test", "name": { "givenName": "test", "familyName": "user" }, "emails": [ {"value": "test.user@snowflake.com"} ], "displayName": "test user", "active": true }
创建
userName
和loginName
映射到不同值的用户:备注
如果您使用 Okta 作为身份提供商,请按照此 程序 操作。
{ "active": true, "displayName": "test user", "emails": [ {"value": "test.user@snowflake.com"} ], "name": { "familyName": "test_last_name", "givenName": "test_first_name" }, "password": "test_password", "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:User", "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User" ], "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": { "snowflakeUserName": "USER5" }, "userName": "USER5" }
替换用户属性¶
- 方法和端点:
PATCH /scim/v2/Users/{{id}}
- 描述:
替换与
id
路径参数关联的用户的属性。您必须将
op
设置为replace
,以执行此 HTTP 请求。active
允许以下值:false
:停用用户。true
:激活用户。
如果 HTTP 请求已成功完成,返回 HTTP 响应状态码
200
。如果不成功,则返回 HTTP 响应代码
204
。- 示例:
停用用户并将其
givenName
更新为deactivated_user
:{ "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"], "Operations": [ {"op": "replace", "value": { "active": false }} {"op": "replace", "value": { "givenName": "deactivated_user" }} ], }
更新
userName
和loginName
映射到相同值的用户:{ "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"], "Operations": [ {"op": "replace", "value": { "active": false }} ] }
更新
userName
和loginName
映射到不同值的用户。如果 Okta 是身份提供商,请按照以下 步骤 操作。
{ "Operations": [ { "op": "replace", "path": "userName", "value": "test_updated_name" }, { "op": "replace", "path": "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User.snowflakeUserName", "value": "USER5" } ], "schemas": ["urn:ietf:params:scim:api:messages:2.0:PatchOp"] }
更新用户¶
- 方法和端点:
PUT /scim/v2/Users/{{id}}
- 描述:
更新与
id
路径参数关联的用户的属性。如果不成功,则返回 HTTP 响应代码
400
。如果 HTTP 请求尝试更改不可变属性,或者所更改的属性在 Snowflake 中不存在,则请求不会成功。- 示例:
更新用户及其
"defaultRole"
、"defaultSecondaryRoles"
和"defaultWarehouse"
属性。要指定
"defaultRole"
、"defaultSecondaryRoles"
和"defaultWarehouse"
属性,您必须使用以下extension
架构 之一。defaultSecondaryRoles
属性仅接受"ALL"
作为一个值。备注
PUT 方法的成本比 PATCH 方法成本更高。改用 PATCH 操作。
{ "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:User", "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User" ], "userName": "test_user_1", "password": "test", "name": { "givenName": "test", "familyName": "user" }, "emails": [{ "primary": true, "value": "test.user@snowflake.com", "type": "work" } ], "displayName": "test user", "active": true, "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": { "defaultRole" : "test_role", "defaultSecondaryRoles" : "ALL", "defaultWarehouse" : "test_warehouse" } }
删除用户¶
- 方法和端点:
DELETE /scim/v2/Users/{{id}}
- 描述:
删除与
id
路径参数关联的用户。