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">(& (objectClass=person)(|(userPrincipalName=?)(sAMAccountName=?)))</Property>
在user-mgt.xml
是的,是否可以将用户名同时用作 email 或 username。为此,您需要按照以下步骤操作,
- 在[IS_HOME]/repository/conf/carbon.xml文件中通过取消注释启用电子邮件用户名,
<EnableEmailUserName>true</EnableEmailUserName>
- 将新的 属性 添加到 [IS_HOME]/repository/conf/user-mgt.xml 文件中,
<Property name="UsernameWithEmailJavaScriptRegEx">[a-zA-Z0-9@._-|//]{3,30}$</Property>
- 更改 [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。
这个问题与 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">(& (objectClass=person)(|(userPrincipalName=?)(sAMAccountName=?)))</Property>
在user-mgt.xml
是的,是否可以将用户名同时用作 email 或 username。为此,您需要按照以下步骤操作,
- 在[IS_HOME]/repository/conf/carbon.xml文件中通过取消注释启用电子邮件用户名,
<EnableEmailUserName>true</EnableEmailUserName>
- 将新的 属性 添加到 [IS_HOME]/repository/conf/user-mgt.xml 文件中,
<Property name="UsernameWithEmailJavaScriptRegEx">[a-zA-Z0-9@._-|//]{3,30}$</Property>
- 更改 [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。