【问题标题】:How to implement Active Directory based SSO with electron?如何使用电子实现基于 Active Directory 的 SSO?
【发布时间】:2015-12-19 06:03:58
【问题描述】:

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

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

【问题讨论】:

    标签: javascript node.js electron


    【解决方案1】:

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

    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 凭据还是正常协商它们。还有一个免责声明,该选项不适用于某些“配置错误”的网络,但值得一试。

    【讨论】:

    • 当我告诉 Electron loadUrl() 并且该 url 在 SSO (ADFS) 后面时,我只会得到未经授权的响应。在标准浏览器中,我会得到一个标准的基本身份验证提示,输入我的用户/密码,然后查看页面。这有关系吗?如果是这样,你的意思是我必须基本上创建一个服务器来为我通信和处理这个 ADFS?
    • 如果你使用passportjs,任何失败(包括配置错误)都会导致标准的401未授权响应。您是否在开发工具中查找过错误?
    • 另外,nodejs 通常是服务器端的。因此,通过实现 passportjs,是的,您正在创建一个“服务器”来处理必要的身份验证、令牌等。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多