如何在 WSO2 IS 5.9.0 中创建唯一声明?
How to make a unique claim in WSO2 IS 5.9.0?
我正在尝试在 WSO2 IS 管理控制台中做出独特的声明。但是找不到任何方法来做到这一点。
您的要求应该是向登录的每个用户发送唯一的电子邮件 in.If 这是我建议您将身份服务器电子邮件配置为用户名的要求。
https://is.docs.wso2.com/en/5.9.0/learn/using-email-address-as-the-username/
当前的声明管理实现不支持声明值的唯一约束
但是您可以自定义用户存储来实现这一点。您可以参考此 documentation 了解有关自定义的更多信息。
您需要覆盖 setUserClaimValue
和 setUserClaimValues
并在设置它们之前检查声明值是否存在。
例如,setUserClaimValue 的自定义必须如下所示
@Override
public void setUserClaimValue(String userName, String claimURI, String claimValue, String profileName)
throws UserStoreException {
if (// ClaimURI which needs to be unique) {
String[] userList = getUserList(claimURI, claimValue, profileName);
if (userList.length > 0) {
throw new UserStoreException("Unique constraint violation for " + claimURI);
}
}
super.setUserClaimValue(userName, claimURI, claimValue, profileName);
}
我正在尝试在 WSO2 IS 管理控制台中做出独特的声明。但是找不到任何方法来做到这一点。
您的要求应该是向登录的每个用户发送唯一的电子邮件 in.If 这是我建议您将身份服务器电子邮件配置为用户名的要求。
https://is.docs.wso2.com/en/5.9.0/learn/using-email-address-as-the-username/
当前的声明管理实现不支持声明值的唯一约束
但是您可以自定义用户存储来实现这一点。您可以参考此 documentation 了解有关自定义的更多信息。
您需要覆盖 setUserClaimValue
和 setUserClaimValues
并在设置它们之前检查声明值是否存在。
例如,setUserClaimValue 的自定义必须如下所示
@Override
public void setUserClaimValue(String userName, String claimURI, String claimValue, String profileName)
throws UserStoreException {
if (// ClaimURI which needs to be unique) {
String[] userList = getUserList(claimURI, claimValue, profileName);
if (userList.length > 0) {
throw new UserStoreException("Unique constraint violation for " + claimURI);
}
}
super.setUserClaimValue(userName, claimURI, claimValue, profileName);
}