【发布时间】:2015-12-19 06:03:58
【问题描述】:
如何在 Windows 下运行的电子应用中获取域用户安全上下文(用户名等)?
我知道我可以使用环境变量 (process.env.USER),但我认为它不安全。
【问题讨论】:
标签: javascript node.js electron
如何在 Windows 下运行的电子应用中获取域用户安全上下文(用户名等)?
我知道我可以使用环境变量 (process.env.USER),但我认为它不安全。
【问题讨论】:
标签: javascript node.js electron
正确的答案取决于您环境的许多不同方面,但这里有一些想法。
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 进行身份验证。尽管有一些“陷阱”需要提防,但这似乎并不太难。还有其他关于 OAuth 的好建议,以及该 repo 所有者对 passport-ldapauth 的进一步解释。
虽然我没有使用过 passport-ldapauth,但多年来我已经完成了许多 AD/LDAP 集成,并且 LDAP 是一种众所周知且有据可查的身份验证方法,并且相当安全。 This article 是使用 LDAP 时需要注意的安全问题的一个很好的例子。但是,这些问题与协议的使用有关,与 Passport-ldapauth 包没有直接关系。
从 Electron 版本 0.35.0 开始,新的 app.allowNTLMCredentialsForAllDomains(allow) 也可能会影响您的情况。根据文档,它允许您动态设置是始终发送 HTTP NTLM 凭据还是正常协商它们。还有一个免责声明,该选项不适用于某些“配置错误”的网络,但值得一试。
【讨论】: