Angular 5 在 Electron 中使用 Okta 进行身份验证
Angular 5 authentication with Okta in Electron
我正在尝试配置我的 angular 应用程序身份验证部分,但由于我正在从 html 加载我的 angular 应用程序,所以我无法使其在 Electron 内部工作文件而不是将其加载到本地服务器中。解决这个问题的最佳方法是什么?我正在为此任务使用 angular-oauth2-oidc 库,当我在浏览器上直接使用 ng serve
启动 angular 应用程序时,身份验证工作正常,因为重定向 url设置为 localhost:4200,但对于 Electron,它不起作用,因为它不托管在本地服务器上。
如果您使用的是 Electron,我建议根据 Auth0 web site 为桌面应用程序使用正确的 OAuth 流程,即 'Authorization Code (PKCE)'.
您的 Angular OIDC 库适用于单页应用程序,它使用称为 'Implicit Flow'.
的不同解决方案
桌面应用程序的技术是在系统浏览器上触发登录,但这很棘手,而且工作量可能超出您的预期。
有一个 Electron AppAuth Sample 可以进行桌面登录:
- 在用户登录期间,可以切换到系统浏览器
- 登录完成后桌面应用会收到通知
- 通知通过环回接口或私有URI方案
我一直在写一篇关于 OAuth 技术的非常详细的博客,您可能想浏览一下:它包括一些关于 Desktop Logins 的注释。
如果您替换默认的 NodeBasedHandler,则可以使用新的 Electron Window- 参见 This Code from StupidUglyFool - 他是个聪明人,发布了一些好东西东西。
电子WINDOW 登录问题
我也开始走那条路 - 它会起作用,但 Electron Window 实际上是一个带有私人浏览器会话的 Web 视图,你会遇到这些问题:
- 用户登录时密码自动填充将不起作用
- 跨多个桌面应用程序的单点登录将不起作用
从安全方面来说,通过 Electron Windows 登录也不被认为是正确的 - Google 等一些提供商将阻止登录。
系统浏览器登录
如果您有兴趣,我在 GitHub 上提供了一些示例,可能会对您有所帮助:
它们都替换了 desktopapp/src/plumbing 下的 NodeBasedHandler,因此您可以借鉴它们的想法。还有两个代码示例 link 以及一些屏幕截图等
NONE个选项完美
遗憾的是,没有任何选项是完美的,您需要根据可用性/安全性/复杂性之间的权衡做出自己的选择。
我正在尝试配置我的 angular 应用程序身份验证部分,但由于我正在从 html 加载我的 angular 应用程序,所以我无法使其在 Electron 内部工作文件而不是将其加载到本地服务器中。解决这个问题的最佳方法是什么?我正在为此任务使用 angular-oauth2-oidc 库,当我在浏览器上直接使用 ng serve
启动 angular 应用程序时,身份验证工作正常,因为重定向 url设置为 localhost:4200,但对于 Electron,它不起作用,因为它不托管在本地服务器上。
如果您使用的是 Electron,我建议根据 Auth0 web site 为桌面应用程序使用正确的 OAuth 流程,即 'Authorization Code (PKCE)'.
您的 Angular OIDC 库适用于单页应用程序,它使用称为 'Implicit Flow'.
的不同解决方案桌面应用程序的技术是在系统浏览器上触发登录,但这很棘手,而且工作量可能超出您的预期。
有一个 Electron AppAuth Sample 可以进行桌面登录:
- 在用户登录期间,可以切换到系统浏览器
- 登录完成后桌面应用会收到通知
- 通知通过环回接口或私有URI方案
我一直在写一篇关于 OAuth 技术的非常详细的博客,您可能想浏览一下:它包括一些关于 Desktop Logins 的注释。
如果您替换默认的 NodeBasedHandler,则可以使用新的 Electron Window- 参见 This Code from StupidUglyFool - 他是个聪明人,发布了一些好东西东西。
电子WINDOW 登录问题
我也开始走那条路 - 它会起作用,但 Electron Window 实际上是一个带有私人浏览器会话的 Web 视图,你会遇到这些问题:
- 用户登录时密码自动填充将不起作用
- 跨多个桌面应用程序的单点登录将不起作用
从安全方面来说,通过 Electron Windows 登录也不被认为是正确的 - Google 等一些提供商将阻止登录。
系统浏览器登录
如果您有兴趣,我在 GitHub 上提供了一些示例,可能会对您有所帮助:
它们都替换了 desktopapp/src/plumbing 下的 NodeBasedHandler,因此您可以借鉴它们的想法。还有两个代码示例 link 以及一些屏幕截图等
NONE个选项完美
遗憾的是,没有任何选项是完美的,您需要根据可用性/安全性/复杂性之间的权衡做出自己的选择。