Поиск пользователя по пользовательскому фильтру утверждений

Мне нужно найти пользователя на сервере идентификации, используя пользовательское утверждение, т.е. «cnic», в качестве фильтра. Я отправляю следующий пакет запроса в почтальоне для этой цели, но он дает мне ошибку. Я использую сервер идентификации версии 5.11.0. Описание пользовательского сопоставления утверждений прилагается ниже. пользовательское сопоставление утверждений

почтальон запрос-ответ

1 ответ

Несмотря на то, что вы создали локальное утверждение как cinc, для управления значением этого утверждения через API-интерфейсы SCIM у вас должно быть сопоставление между утверждением SCIM и локальным утверждением.

  1. Откройscim2-schema-extension.configфайл, расположенный в<IS_HOME>/repository/conf/и добавьте определение атрибута scim перед последним элементом массива JSON (т.е. urn:ietf:params:scim:schemas:extension:enterprise:2.0:User должен быть последним объектом JSON). Это будет следующим образом. Вы можете соответствующим образом изменить метаданные.
      {
"attributeURI":"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:cnic",
"attributeName":"cnic",
"dataType":"string",
"multiValued":"false",
"description":"National Identity Number.",
"required":"false",
"caseExact":"false",
"mutability":"readWrite",
"returned":"default",
"uniqueness":"none",
"subAttributes":"null",
"canonicalValues":[],
"referenceTypes":[]
}
  1. Добавьте attributeName добавленного выше атрибута вscim2-schema-extension.config file, как subAttribute атрибута urn:ietf:params:scim:schemas:extension:enterprise:2.0:User (который является последним в файле). Тогда это будет выглядеть следующим образом.
      "subAttributes":"verifyEmail askPassword employeeNumber costCenter organization division department manager pendingEmails accountLocked accountState emailOTPDisabled emailVerified failedEmailOTPAttempts failedLoginAttempts failedLoginAttemptsBeforeSuccess failedLoginLockoutCount failedPasswordRecoveryAttempts failedSMSOTPAttempts failedTOTPAttempts isLiteUser lastLoginTime lastLogonTime lastPasswordUpdateTime lockedReason phoneVerified preferredChannel smsOTPDisabled tenantAdminAskPassword unlockTime accountDisabled dateOfBirth isReadOnlyUser pendingMobileNumber forcePasswordReset oneTimePassword verifyMobile country cnic",
  1. Перезапустите ИС и войдите в консоль управления. Перейдите в Главное меню -> вкладка «Идентификация» -> «Претензии». Щелкните подClaims. НажмитеAdd External Claimи введите следующие значения. Затем нажмите наAdd.
      Dialect URI: urn:ietf:params:scim:schemas:extension:enterprise:2.0:User
External Claim URI: urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:cnic (Attribute URI defined in the previous step)
Mapped Local Claim: http://wso2.org/claims/cnic

  1. Затем вы можете вызвать поиск SCIM следующим образом.
      curl --location --request POST 'https://localhost:9443/scim2/Users/.search' \
--header 'Authorization: Basic YWRtaW46YWRtaW4=' \
--header 'Content-Type: application/json' \
--data-raw '{
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:SearchRequest"
    ],
    "attributes": [
        "userName"
    ],
    "filter": "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:cnic eq 123456",
    "domain": "PRIMARY",
    "startIndex": "1",
    "count": "10"
}'

Ссылка: эти шаги хорошо описаны здесь

Другие вопросы по тегам