禁止无域登录

Disallow to login without domain

是否可以将WSO2配置为不允许无域登录? 例如

Primary/username - allow

username - disallow

据我所知,您不能仅通过更改配置来完成此操作。但是您可以创建一个带有监听器 class 扩展 org.wso2.carbon.user.core.listener.UserOperationEventListener 的自定义组件并实现其 doPreAuthenticate ,您可以在其中检查用户名是否包含用户存储域和 return false如果没有。

更新

请参考 pulasthi7 的回答,看来 customUserStoreManager 是我们需要在这里实现的,而不是监听器。

正如 Chamila 提到的那样,解决方案是编写自定义组件。但是,用户操作侦听器将不起作用,因为当它到达侦听器时,域已被处理并从用户名中删除。

因此,它应该是一个自定义用户存储管理器,用于扩展您当前的用户存储管理器。参考 this page 并编写自定义用户存储管理器(扩展当前用户存储管理器将使事情变得更容易),然后重写其 authenticate(String,Object,boolean) 方法以在调用 super(String,Object,boolean) 之前检查域名是否存在。有关部署自定义用户存储管理器的详细信息,请参阅同一页面。