本文概述了组织如何使用 Udemy 的跨域身份管理系统 (SCIM) API 添加或移除用户许可证。
许多身份提供程序(例如 Okta 和 OneLogin)都支持 SCIM。您还可以将 Udemy Business SCIM API 用于其他 IdP 或本土工具。
注意:Udemy Business 的 SCIM API 令牌有效期约为两年。管理员将收一则通知,告知他们:
- 令牌到期前 30 天
- 令牌到期后
许可证使用情况
在身份提供程序中,许可证通常在群组级别分配,在某些情况下,也在个人级别分配。当请求中包含 licenseTypes 属性时,将为相关用户指定许可证类型。
- 此属性可在创建用户时添加,用户在激活其 Udemy Business 帐户后即可领取指定的许可证。
- 此属性也可为现有用户添加,并且可以授予或移除现有许可证。
- 如果帐户中所需类型的许可证不足,Udemy Business 将向 IdP 发送错误消息,并且不会进行任何更改。
对移除许可证的限制:
用户必须拥有许可证类型。要释放用户的所有许可证,需要在贵组织的帐户中停用该用户。如果 Udemy Business 收到空白的 licenseTypes 属性,系统将忽略它。
目前不支持非活跃用户(即已预配置两个方案的许可证但尚未登录的用户)从“Pro”降级到“Enterprise”许可证。
提供所需的 licenseTypes 属性
贵组织的身份提供程序必须包含的 licenseTypes 属性是:
urn:ietf:params:scim:schemas:extension:udemy:2.0:User。
此属性应以字符串列表的形式提供,每个字符串代表一个许可证名称(有关更多信息,请参阅下面关于许可证类型的部分)。
提供可接受的值和对应的许可证类型
为了管理用户的许可证类型,需要输入可接受的值。下表中的输入值将根据 Udemy Business 支持的许可证类型进行验证。许可证名称值不区分大小写。
| 许可证名称 | 类型 |
可接受的值示例 |
| Enterprise | 方案许可证 | Enterprise、eNtErpRisE、enTERprise等等 |
|
Pro |
其他许可证 |
Pro、pRo、PRo等等 |
注意:如果提供了不可接受的值,将会出现错误通知。
如何在创建用户时包括 licenseTypes
以下示例显示了当创建用户时应在身份提供程序中输入什么内容以包括 licenseTypes:
POST /scim/v2/Users HTTP/1.1 Host: myorganization.udemy.com Accept: application/scim+json Authorization: Bearer <enter your Bearer token here> Content-Type: application/scim+json { "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:udemy:2.0:User" ], "userName": "john.doe@udemy.com", "externalId": "someexternalidtest12312", "name": { "givenName": "John", "familyName": "Doe" }, "emails": [ { "primary": true, "type": "work", "value": "john.doe@udemy.com" } ], "active": true, "urn:ietf:params:scim:schemas:extension:udemy:2.0:User": { "licenseTypes": ["Enterprise", "Pro"] } } 如何替换现有用户的属性并包括 licenseTypes
以下示例显示了应输入什么内容以替换现有用户属性并包括 licenseTypes:
PUT /scim/v2/Users/<scim-user-uuid> HTTP/1.1
Host: myorganization.udemy.com
Accept: application/scim+json
Authorization: Bearer <enter your Bearer token here>
Content-Type: application/scim+json
{
"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:udemy:2.0:User"
],
"userName": "john.doe@udemy.com",
"externalId": "someexternalidtest12312",
"name": {
"givenName": "John",
"familyName": "Doe"
},
"emails": [
{
"primary": true,
"type": "work",
"value": "john.doe@udemy.com"
}
],
"active": true,
"urn:ietf:params:scim:schemas:extension:udemy:2.0:User": {
"licenseTypes": ["Enterprise", "Pro"]
}
}
如何仅设置现有用户的 licenseTypes 字段
要仅设置现有用户的 licenseTypes 字段,PATCH 请求有两种使用方式:
"op": "add"
要将加载项许可证(即“Pro”)添加到现有许可证,请使用:
"op": "replace"
来覆盖现有值。
注意:
使用 add 操作,可以将 Udemy Business Pro 许可证添加到现有许可证(Enterprise 或 Enterprise+Pro 许可证)。对于已拥有 Enterprise 许可证的用户,将会添加 Pro 许可证。对于已拥有 Enterprise+Pro 许可证的用户,不会添加额外的许可证。
以下示例显示了应输入什么内容以仅设置现有用户的 licenseTypes 字段:
PATCH /scim/v2/Users/<scim-user-uuid> HTTP/1.1 Host: myorganization.udemy.com Accept: application/scim+json Authorization: Bearer <enter your Bearer token here> Content-Type: application/scim+json { "schemas": [ "urn:ietf:params:scim:api:messages:2.0:PatchOp", "urn:ietf:params:scim:schemas:extension:udemy:2.0:User", ], "Operations": [ { "op": "add", "urn:ietf:params:scim:schemas:extension:udemy:2.0:User": { "licenseTypes": ["Pro"] } } ] }W 如何覆盖用户当前的整套许可证
使用 replace 操作,可以覆盖用户当前的整套许可证。为此,必须输入以下内容。
PATCH /scim/v2/Users/<scim-user-uuid> HTTP/1.1 Host: myorganization.udemy.com Accept: application/scim+json Authorization: Bearer <enter your Bearer token here> Content-Type: application/scim+json { "schemas": [ "urn:ietf:params:scim:api:messages:2.0:PatchOp", "urn:ietf:params:scim:schemas:extension:udemy:2.0:User", ], "Operations": [ { "op": "replace", "urn:ietf:params:scim:schemas:extension:udemy:2.0:User": { "licenseTypes": ["Enterprise", "Pro"] } } ] }