我想为集群的所有节点实现身份验证(客户端和服务器应该提供用户名和密码来加入集群) . 我试图使用文档声称提供身份验证的最新版本,但它没有为所有节点实现它;它只适用于新的瘦客户端 .
First question :我的理解是正确的,还是我错过了什么?
我还尝试使用GridSecurityProcessor接口实现所有节点的身份验证,作为自定义插件的一部分(通过遵循本指南http://smartkey.co.uk/development/securing-an-apache-ignite-cluster/以及公共邮件列表上的其他讨论) .
我得到了服务器节点识别的插件,但我可以_1071302使用它 . 问题类似于这个问题:http://apache-ignite-users.70518.x6.nabble.com/Custom-SecurityCredentialsProvider-and-SecurityCredentials-td16360.html .
因此,当调用GridSecurityProcessor.authenticateNode(ClusterNode节点,SecurityCredentials cred)时,cred为null .
Second question :如何将SecurityCredentialsProvider和SecurityCredentials挂钩到Ignite,以便它将使用这些凭据从我的插件调用authorizeNode方法?
1 回答
我设法使用文档推荐的插件系统实现身份验证 . 我按照以下步骤操作:
`
`
我还实现了authenticateNode方法,我在其中检查了此类的SecurityCredentials对象,并将其作为authenticateNode方法的参数接收 . 如果验证成功,此方法返回SecurityContext的实现,否则返回null;所以你需要随意实现它 . 例如,要在没有授权的情况下提供完全访问权限,只需对所有**** operationAllowed方法返回true,并在subject()方法中返回null .
在IgniteConfiguration中,将此类用作discoverySpi:cfg.setDiscoverySpi(customTcpDiscoverySpi);