我有一个带有定位器、服务器、2个本地本地客户端、一个远程客户端和HTTPS REST客户端的Geode系统。
我们现在需要进一步对REST客户端进行身份验证,以包括对REST操作的用户名和密码检查,这意味着在此处和此处设置身份验证。我们设置了一个security. json
,示例安全管理器可以很好地处理经过身份验证的REST HTTPS请求。
设置身份验证意味着使用TCP的本地和远程本机客户端也需要身份验证。所以我在本地实现了授权初始化示例,让这些客户端连接到服务器,它们也运行得很好。
但是,几分钟后,客户端(本地和远程)会因(客户端)错误而失去与Geode服务器的连接:
握手被服务器拒绝[#. #. #. #:40404]:此客户端的先前连接尝试仍在处理中:身份(0.0.0.0(MyGeodeClient: 3116:loner)
我将服务器日志设置为finest并收到以下警告:
[最好的BST GeodeServer
ClientHealthMonitor:收到来自客户端的ping,成员id身份为(0.0.0.0(MyGeodeClient: 3116:loner):2:GFNative_k350A9imTd3116:MyGeodeClient,连接=1
然后很多试图获取会话;创建=假;会话为空=真;会话有id=假
然后这个org. apache.shiro.mgt.DefaultSecurityManager实例没有配置[org.apache.shiro.mgt.RememberMeManager]实例。不会为帐户[test]执行RememberMe服务。
最后
此客户端的先前连接尝试仍在处理中:身份(0.0.0.0(MyGeodeClient: 3116:loner):2:GFNative_k350A9imTd3116:MyGeodeClient,连接=1
[警告BST GeodeServer
基本上这种情况会重复发生,然后订阅事件处理程序会失败,因为它们没有收到事件通知。
如果我将Geode服务器日志减少到info,那么警告
使用标识符标识未成功注册的客户端(0.0.0.0(MyGeodeClient: 3116:loner):2:GFNative_k350A9imTd3116:MyGeodeClient,连接=1
重复无数次…
有什么建议吗?有没有办法在不启用本机客户端TCP身份验证的情况下启用REST身份验证?谢谢
对于您的最后一个问题:“有没有办法在不启用本机客户端身份验证的情况下启用REST身份验证”,答案是否定的。当您的集群中设置了安全性时,它应该会保护您的数据免受所有通信通道的影响。如果我们允许您禁用一个,这将使您的集群容易受到攻击。
就您看到的错误信息而言,看起来shiro会话超时了。您使用的是哪个版本的Geode?我们前段时间已经修复了会话超时问题。