Мы устанавливаем WSO2 Identity Server Версия: 5.9.0 и настраиваем сервис-провайдера для входа в систему с помощью CAS
Нам необходимо войти в систему с помощью адреса электронной почты / идентификатора пользователя на странице входа в систему.
Для этого я меняю нижеуказанную конфигурацию в deploy.toml на основе этого документа: https://is.docs.wso2.com/en/latest/learn/managing-user-attributes/
[user_store]
user_name_attribute = "uid"
multiple_attribute_enable = true
type = "read_write_ldap"
connection_url = "ldap://localhost:${Ports.EmbeddedLDAP.LDAPServerPort}"
connection_name = "uid=admin,ou=system"
connection_password = "admin"
base_dn = "dc=wso2,dc=org" #refers the base dn on which the user and group search bases will be generated
user_name_search_filter = "(&(objectClass=person)(|(uid=?)(mail=?)))"
username_java_script_regex = '^[a-zA-Z0-9.-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$'
username_java_regex='^[a-zA-Z0-9.-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}'
[authentication.authenticator.basic]
name ="BasicAuthenticator"
enable=true
UserNameAttributeClaimUri = "http://wso2.org/claims/username"
В этой ситуации все в порядке, и пользователи могут войти в систему с помощью uid и электронной почты.
Но моя проблема заключается в : когда пользователи входят в систему с помощью электронной почты, атрибут имени пользователя, который отправляется с WSO2 Identity Server в мою службу, - это электронная почта, а когда пользователи входят в систему с помощью uid, атрибут пользователя имеет значение uid.
На моей клиентской стороне CAS, когда логин одного пользователя с электронной почтой / uid обнаружен как два разных пользователя, это неправильно.
Я думаю, UserNameAttributeClaimUri
не работает, вероятно.
Также я изменяю нижеприведенную конфигурацию в поставщике услуг:
Конфигурация заявки в моем поставщике услуг
Конфигурация локальной и исходящей аутентификации