#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. Привет! Спасибо (еще раз) за ваш ответ! В общем, я понял механику, но один вопрос все еще остается: есть атрибут с именем «Полное имя» в 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»: { «полное имя»: «тестовый пользователь» }