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

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

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

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

Passportjs
Passportjs是nodejsauthentication的goto包。 通过一些Googlesearch,我发现微软已经创build了一个名为passport-azure-ad的github repo,其中包含专门用于Asure AD身份validation的stragaties(接口passportjs用来连接事物)。 所以如果你使用Asure AD,那么passport-azure-ad是一个很好的select。

护照 – azure色广告问题
如果不是,并且您尝试使用passport-azure-ad对ADFS,WS-FED或SAML进行身份validation,则可能会遇到此问题 。 总之,这个回购不支持。

护照ldapauth
所以在这种情况下,看看这个SOpost,描述如何使用passport-ldapauth策略对ADFS进行身份validation。 这似乎不是太困难,虽然有一些“陷阱”要留意。 对于OAuth还有其他好的build议,以及回购所有者对护照ldapauth的进一步解释。

虽然我没有使用passport-ldapauth,但是多年来我已经完成了许多AD / LDAP集成工作,而LDAP是一个众所周知的且有据可查的身份validation方法,而且它是相当安全的。 本文是使用LDAP时需要注意的安全问题的一个很好的例子。 但是,这些问题与协议的使用有关,并且与Passport-ldapauth包无直接关系。

希望这可以帮助!


更新:

从Electron版本0.35.0开始,新的app.allowNTLMCredentialsForAllDomains(allow)也可能会影响您的情况。 根据文档,它允许您dynamic设置是否始终发送HTTP NTLM凭据或正常协商。 还有一个关于这个选项的声明不适用于一些“configuration错误”的networking,但是值得一试。