WSO2 身份服务器电子邮件或伪用户名

WSO2 identity server email or pseudo as username

这个问题与 WSO2 identity server email as username 完全相同,但我们希望同时提供用户名作为电子邮件地址或用户名(不带 @ 的伪)。

我理解使用 @ 的租户完全限定名称的问题,但我们不能为完全限定的租户更改 @ 字符吗?

是否可以同时使用电子邮件地址或用户名作为用户名,如果可以,您能否提供配置,我无法按照 https://docs.wso2.com/display/IS520/Using+Email+Address+as+the+Username

我编辑了我的问题以测试 Rajjaz Mohammed 和 Pradeepa Wickramasinghe 的回答:

我评论了<Property name="UsernameJavascriptRegEx"> 当我添加一个没有@的用户时,我得到: Caused by: org.wso2.carbon.user.core.UserStoreException: Username jacques.martin is not valid. User name must be a non null string with following format, ^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$ at org.wso2.carbon.user.core.common.AbstractUserStoreManager.addUser(AbstractUserStoreManager.java:1405)

如果我删除这个标签 <Property name="UsernameJavaRegEx"> 我会收到以下错误:

TID: [1] [] [2016-11-22 13:16:50,409] admin@test.com@mytenant.com [1] [IS]ERROR {org.wso2.carbon.identity.mgt.util.Utils} - Unable to retrieve the claim for user : jacques.martin@mytenant.com org.wso2.carbon.user.core.UserStoreException: UserNotFound: User jacques.martin@mytenant.comdoes not exist in: PRIMARY at org.wso2.carbon.user.core.common.AbstractUserStoreManager.callSecure(AbstractUserStoreManager.java:168) at org.wso2.carbon.user.core.common.AbstractUserStoreManager.getUserClaimValues(AbstractUserStoreManager.java:697) at org.wso2.carbon.identity.mgt.util.Utils.getClaimFromUserStoreManager(Utils.java:189) at org.wso2.carbon.identity.mgt.util.Utils.getEmailAddressForUser(Utils.java:226) at org.wso2.carbon.identity.mgt.mail.AbstractEmailSendingModule.getNotificationAddress(AbstractEmailSendingModule.java:53) at org.wso2.carbon.identity.mgt.RecoveryProcessor.notifyWithEmail(RecoveryProcessor.java:541) at org.wso2.carbon.identity.mgt.services.UserInformationRecoveryService.registerUser(UserInformationRecoveryService.java:890) 与 Pradeepa Wickramasinghe 的回答相同的错误。

我的java代码如下: userInformationRecoveryClient.registerUser(user.getUsername(), user.getPassword(), claims, "default", tenant ); 在声明中,我已正确设置 http://wwso2.org/claims/email

尝试使用这行代码

<Property name="UsernameJavaRegEx">^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$</Property>

而不是使用这一行

<Property name="UsernameJavaScriptRegEx">^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$</Property>

因为我们为我们的Identity Store调用AD,我们发现除了设置

<EnableEmailUserName>true</EnableEmailUserName>

carbon.xml中,我们还需要更改UserNameSearchFilter以搜索AD

的两个部分

<Property name="UserNameSearchFilter">(&amp; (objectClass=person)(|(userPrincipalName=?)(sAMAccountName=?)))</Property>

user-mgt.xml

是的,是否可以将用户名同时用作 emailusername。为此,您需要按照以下步骤操作,

  1. 在[IS_HOME]/repository/conf/carbon.xml文件中通过取消注释启用电子邮件用户名,

<EnableEmailUserName>true</EnableEmailUserName>

  1. 将新的 属性 添加到 [IS_HOME]/repository/conf/user-mgt.xml 文件中,

<Property name="UsernameWithEmailJavaScriptRegEx">[a-zA-Z0-9@._-|//]{3,30}$</Property>

  1. 更改 [IS_HOME]/repository/conf/user-mgt.xml 文件中的 "UsernameJavaRegEx" 和 "UsernameJavaScriptRegEx",

<Property name="UsernameJavaRegEx">[a-zA-Z0-9@._-|//]{3,30}$</Property>

<Property name="UsernameJavaScriptRegEx">[a-zA-Z0-9._-|//]{3,30}$</Property>

您可以找到更多详细信息 here