像这里和这里的 K2 开发者参考中连接到 K2 服务器的示例都涉及在连接参数中设置用户名和密码。使用这种方法意味着我需要以明文或最多使用双向加密存储密码,这显然不是一个好习惯。
是否有另一种方法(可能使用令牌)来建立这些连接?很难相信每个使用此功能的应用程序都只是在某个地方存储了一个密码,这有明显的安全隐患。
注意 - 我不是 K2 API 专家,但我已经将它作为一种产品遇到过,并且确实知道它本机支持 Windows 身份验证。您为其提供链接的同一页面指出以下内容 -
connectionSetup.ConnectionParameters["Authenticate"] = "true";
connectionSetup.ConnectionParameters["Host"] = "LOCALHOST";
connectionSetup.ConnectionParameters["Integrated"] = "true";
connectionSetup.ConnectionParameters["IsPrimaryLogin"] = "true";
//connectionSetup.ConnectionParameters["Originator"] = "false";
connectionSetup.ConnectionParameters["Password"] = "{YourPassword}";
connectionSetup.ConnectionParameters["Port"] = "5252";
connectionSetup.ConnectionParameters["SecurityLabelName"] = "K2";
//connectionSetup.ConnectionParameters["SecurityPackage"] = "Kerberos,NTLM";
connectionSetup.ConnectionParameters["UserID"] = "{YourUserName}";
connectionSetup.ConnectionParameters["WindowsDomain"] = "{YourDomain}";
这里的第三个参数是Integrated=true
,虽然文档没有明确说明,但我建议使用这个参数,并在忽略 and 的情况下尝试user id
连接password
。假设 K2 配置为Windows Authentication
,它应该可以工作而无需提供明确的用户名或密码..当然也不需要自己将它们存储为 K2 的客户端。
您可以使用集成安全性。然后,K2 将使用与当前登录的用户相同的用户,您无需传递任何凭据。