SAML API

  • 引入于极狐GitLab 15.5。

访问 SAML 功能的 API。

JihuLab.com 端点

获取群组的 SAML 身份

GET /groups/:id/saml/identities

获取群组的 SAML 身份。

支持的参数:

参数 类型 是否必需 描述
id integer/string Yes 群组 ID 或 URL 编码的路径

如果成功,则返回 200和以下响应参数:

参数 类型 描述
extern_uid string 用户的外部 UID
user_id string 用户 ID

请求示例:

curl --location --request GET "https://gitlab.example.com/api/v4/groups/33/saml/identities" --header "PRIVATE-TOKEN: <PRIVATE-TOKEN>"

响应示例:

[
    {
        "extern_uid": "4",
        "user_id": 48
    }
]

获取单个 SAML 身份

  • 引入于极狐GitLab 16.1。
GET /groups/:id/saml/:uid

支持的参数:

参数 类型 是否必需 描述
id integer/string yes 群组 ID 或 URL 编码的路径
uid string yes 用户的外部 UID

请求示例:

curl --location --request GET "https://gitlab.example.com/api/v4/groups/33/saml/sydney_jones" --header "PRIVATE-TOKEN: <PRIVATE TOKEN>"

响应示例:

{
    "extern_uid": "4",
    "user_id": 48
}

更新 SAML 身份的 extern_uid 字段

更新 SAML 身份的 extern_uid 字段。

SAML IdP 参数 极狐GitLab 字段
id/externalId extern_uid
PATCH /groups/:id/saml/:uid

支持的参数:

参数 类型 是否必需 描述
id integer/string yes 群组 ID 或 URL 编码的路径
uid string yes 用户的外部 UID

请求示例:

curl --location --request PATCH "https://gitlab.example.com/api/v4/groups/33/saml/sydney_jones" \
--header "PRIVATE-TOKEN: <PRIVATE TOKEN>" \
--form "extern_uid=sydney_jones_new"

删除单个 SAML 身份识别

使用用户 API 来删除单个用户的身份识别

SAML 群组链接

  • 引入于极狐GitLab 15.3.0。
  • 在极狐GitLab 15.3.3 中,access_level 类型从 string 更改为 integer
  • member_role_id 类型引入于极狐GitLab 16.7,使用名为 custom_roles_for_saml_group_links 的功能标志。默认禁用。
  • member_role_id 在极狐GitLab 16.8 中 GA。功能标志 custom_roles_for_saml_group_links 被移除。

通过使用 REST API 来列举、获取、增加和删除SAML 群组链接

列出 SAML 群组链接

列出群组的 SAML 群组链接。

GET /groups/:id/saml_group_links

支持的属性:

属性 类型 是否必需 描述
id integer/string yes ID 或 URL 编码的群组路径](rest/index.md#namespaced-paths)。

如果成功,返回 200 和以下响应属性:

属性 类型 描述
[].name string SAML 群组的名称。
[].access_level integer SAML 群组成员的角色 (access_level)。从极狐GitLab 15.3.0 到 15.3.3,该属性有一个字符类型。
[].member_role_id integer SAML 群组的成员角色 ID (member_role_id)

示例请求:

curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/1/saml_group_links"

示例响应:

[
  {
    "name": "saml-group-1",
    "access_level": 10,
    "member_role_id": 12
  },
  {
    "name": "saml-group-2",
    "access_level": 40,
    "member_role_id": 99
  }
]

获取 SAML 群组链接

获取群组的 SAML 群组链接。

GET /groups/:id/saml_group_links/:saml_group_name

支持的参数:

属性 类型 是否必需 描述
id integer/string yes ID 或 URL 编码的群组路径
saml_group_name string yes SAML 群组的名称。

如果成功,返回 200 和以下响应属性:

属性 类型 描述  
name string SAML 群组的名称。  
access_level integer SAML 群组成员的角色 (access_level)。从极狐GitLab 15.3.0 到 15.3.3,该属性有一个字符类型。  
member_role_id integer no SAML 群组的成员角色 ID (member_role_id)

示例请求:

curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/1/saml_group_links/saml-group-1"

示例响应:

{
"name": "saml-group-1",
"access_level": 10,
"member_role_id": 12
}

添加 SAML 群组链接

为群组添加 SAML 群组链接。

POST /groups/:id/saml_group_links

支持的参数:

属性 类型 是否必需 描述
id integer or string yes ID 或 URL 编码的群组路径
saml_group_name string yes SAML 群组的名称。
access_level integer yes SAML 群组的成员 角色 (access_level)
member_role_id integer no SAML 群组的成员角色 ID (member_role_id)

如果成功,返回 201 和以下响应属性:

属性 类型 描述  
name string SAML 群组的名称。  
access_level integer SAML 群组成员的角色 (access_level)。从极狐GitLab 15.3.0 到 15.3.3,该属性有一个字符类型。  
member_role_id integer no SAML 群组的成员角色 ID (member_role_id)

示例请求:

curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" --header "Content-Type: application/json" --data '{ "saml_group_name": "<your_saml_group_name`>", "access_level": <chosen_access_level>, "member_role_id": <chosen_member_role_id> }' --url  "https://gitlab.example.com/api/v4/groups/1/saml_group_links"

示例响应:

{
"name": "saml-group-1",
"access_level": 10,
"member_role_id": 12
}

删除 SAML 群组链接

删除群组的 SAML 群组链接。

DELETE /groups/:id/saml_group_links/:saml_group_name

支持的参数:

属性 类型 是否必需 描述
id integer/string yes ID 或 URL 编码的群组路径
saml_group_name string yes SAML 群组的名称。

示例请求:

curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/1/saml_group_links/saml-group-1"

如果成功,返回 204 状态码,而且没有任何响应体。