禁止无域登录
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)
之前检查域名是否存在。有关部署自定义用户存储管理器的详细信息,请参阅同一页面。
是否可以将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)
之前检查域名是否存在。有关部署自定义用户存储管理器的详细信息,请参阅同一页面。