Сервер идентификации WSO2 5.10.0 — SCIM2 REST — получить все необходимые атрибуты?

#wso2is

#wso2-identity-server

Вопрос:

Я вызываю службу SCIM2 REST, чтобы получить информацию о пользователе на основе идентификатора, но она возвращает не все пользовательские данные.когда я вызываю https://localhost:9444/scim2/Users/8f9d1e34-c340-4ebe-af11-fa0c4575f676 передачу имени пользователя и пароля (BASIC) Я получаю эту полезную нагрузку:

 {
  "emails": [
    {
      "type": "home",
      "value": "test@test.com"
    }
  ],
  "meta": {
    "created": "2020-10-09T11:29:42.809803400Z",
    "location": "https://localhost:9444/scim2/Users/8f9d1e34-c340-4ebe-af11-fa0c4575f676",
    "lastModified": "2020-10-09T11:29:42.809803400Z",
    "resourceType": "User"
  },
  "schemas": [
    "urn:ietf:params:scim:schemas:core:2.0:User",
    "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"
  ],
  "roles": [
    {
      "type": "default",
      "value": "Internal/everyone"
    }
  ],
  "id": "8f9d1e34-c340-4ebe-af11-fa0c4575f676",
  "userName": "test"
}
  

Но у этого пользователя больше атрибутов, как показано ниже:

введите описание изображения здесь

Как мне вернуть целые пользовательские данные?

Заранее спасибо

Ответ №1:

Запрос SCIM GET на /Users/{user-id} конечной точке вернет пользовательские атрибуты SCIM, которые определены в urn:ietf:params:scim:schemas:core:2.0:User urn:ietf:params:scim:schemas:extension:enterprise:2.0:User диалектах и требуют (консоль mgt -> Главное меню-> Вкладка идентификации -> Утверждения -> Список). Если конкретный атрибут (т.Е. локальное утверждение) не сопоставлен с атрибутом пользователя SCIM, это значение не будет возвращено в ответе пользователя SCIM GET. Чтобы сопоставить такие локальные атрибуты с атрибутами SCIM, вы можете следовать инструкциям в https://is.docs.wso2.com/en/latest/develop/extending-scim2-user-schemas/#extending-the-scim-20-api .

Кроме того, вы можете найти определения основных пользовательских атрибутов SCIM здесь. Если возвращаемая характеристика атрибута равна

  1. Возвращено.ВСЕГДА -> Всегда возвращается в ответе
  2. Возвращено.ПО УМОЛЧАНИЮ -> Возвращает в ответе, только если этот атрибут имеет значение
  3. Возвращено.НИКОГДА -> Никогда не возвращать в ответе

Комментарии:

1. Привет! Спасибо (еще раз) за ваш ответ! В общем, я понял механику, но один вопрос все еще остается: есть атрибут с именем «Полное имя» в wso2.org/claims . Если я правильно понимаю, единственный способ вернуть дополнительный атрибут, даже если он доступен и помечен как «Поддерживается по умолчанию» и «Требуется», — это установить его в «scim2-schema-extension.config»? Что, если я хотел бы установить его при создании нового пользователя? Просто отправить его в полезной нагрузке JSON?

2. Пожалуйста, обратите внимание, что этот атрибут уже существует в конфигурации утверждения, как мне вернуть его по умолчанию в вызове SCIM2 / REST / User API?

3. В SCIM formattedName используется как полное имя ( tools.ietf.org/html/rfc7643#section-8.2 ). Итак, на сервере WSO2 вы можете использовать wso2.org/claims/formattedName претендуйте на сохранение полного имени. Если вы хотите вернуть wso2.org/claims/fullname в ответе вы должны добавить его в расширения, потому что локальное утверждение fullname не было сопоставлено ни с одним утверждением scim в urn:ietf:params:scim:schemas:core:2.0:User или urn:ietf:params:scim:schemas:extension:enterprise: 2.0: пользователь по умолчанию.

4. например: 1. используйте ‘fullname’ для всех мест, в которых используется ‘customClaim’ is.docs.wso2.com/en/latest/develop/extending-scim2-user-schemas/… 2. Пропустить раздел «Добавить пользовательское утверждение» ( is.docs.wso2.com/en/latest/develop/extending-scim2-user-schemas /… ) 3. Сопоставьте urn:ietf:параметры: scim: схемы: расширение: предприятие: 2.0:Пользователь: полное имя внешнего uri для wso2.org/claims/fullname местное требование в is.docs.wso2.com/en/latest/develop/extending-scim2-user-schemas /… раздел

5. при создании пользователя он должен быть добавлен в тело запроса как: «urn: ietf: параметры: scim: схемы: расширение: enterprise: 2.0: User»: { «полное имя»: «тестовый пользователь» }