如何用电子实现基于Active Directory的SSO?

时间:2015-09-22 09:54:11

标签: javascript node.js electron

如何在Windows下运行的电子应用中获取域用户安全上下文(用户名等)?

我知道我可以使用环境变量(process.env.USER),但我认为它不安全。

1 个答案:

答案 0 :(得分:5)

正确的答案取决于环境的许多不同方面,但这里有一些想法。

<强> Passportjs
Passportjs是nodejs身份验证的goto包。通过一些谷歌搜索,我发现微软已经创建了一个名为passport-azure-ad的github仓库,其中包含专门用于Azure AD身份验证的策略(接口passportjs用来连接东西)。因此,如果您使用的是Azure AD,则可以使用passport-azure-ad。

护照 - 广告问题
如果没有,并且您尝试使用passport-azure-ad对ADFS,WS-FED或SAML进行身份验证,则可能会遇到this issue。简而言之,该回购不支持。

<强>护照ldapauth
因此,在这种情况下,请查看this SO post,了解如何使用passport-ldapauth策略对ADFS进行身份验证。它似乎并不太难,尽管有一些&#34;陷阱&#34;要小心。对于OAuth还有其他好的建议,以及该回购的所有者对passport-ldapauth的进一步解释。

虽然我还没有使用过passport-ldapauth,但多年来我已经完成了许多AD / LDAP集成,而LDAP是一种众所周知且记录良好的身份验证方法,而且相当安全。 This article是使用LDAP时要注意的安全问题的一个很好的例子。但是,这些问题与协议的使用有关,并且与Passport-ldapauth包直接无关。

更新

从Electron版本0.35.0开始,新app.allowNTLMCredentialsForAllDomains(allow)也可能影响您的情况。根据文档,它允许您动态设置是否始终发送HTTP NTLM凭据或正常协商它们。还有一个关于此选项的免责声明不适用于某些&#34;配置错误的&#34;网络,但它值得一试。

相关问题