我试图配置我的角度应用程序身份验证部分,但我从一个html文件加载我的角度应用程序,而不是加载到本地服务器 . 解决这个问题的最佳方法是什么?我正在使用angular-oauth2-oidc库来执行此任务,当我使用 ng serve 直接在浏览器上启动角度应用程序时,身份验证工作正常,因为重定向url设置为localhost:4200,但是使用Electron它不起作用它不托管在本地服务器上 .
ng serve
如果您推荐使用桌面应用程序的正确OAuth流程,请根据Auth0 web site,即 'Authorization Code (PKCE)' .
您的Angular OIDC库适用于单页应用程序,它使用名为 'Implicit Flow' 的不同解决方案 .
桌面应用程序的技术是在系统浏览器上触发登录,但它比你可能想要的更棘手,更多的工作 .
有一个Electron AppAuth Sample可以进行桌面登录:
在用户登录期间,可以切换到系统浏览器
登录完成后,将通知桌面应用程序
通知是通过 Loopback Interface 或 Private URI Scheme
我一直在撰写一篇关于您可能想要浏览的OAuth技术的非常详细的博客:它包含了Desktop Logins的一些注释 .
如果你更换默认的 NodeBasedHandler ,可以使用一个新的电子窗口 - 见This Code from StupidUglyFool - 他发布了一些好东西 .
ELECTRON WINDOW LOGIN PROBLEMS
我也开始走这条路 - 它会起作用,但Electron Window实际上是一个带有私人浏览器会话的Web视图,你会遇到这些问题:
密码自动填充在用户登录时不起作用
跨多个桌面应用程序进行单点登录将无法正常工作
从安全术语来看,通过Electron Windows登录并不正确 - 某些提供商(如Google)会阻止登录 .
SYSTEM BROWSER LOGINS
如果您有兴趣,我在GitHub上有几个我的样本可以帮助您:
Logins via Loopback Interface
Login via Private URI Scheme
这些都替换了 desktopapp/src/plumbing 下的NodeBasedHandler,所以你可以借用它们的想法 . 此外,两个代码示例都链接到带有一些屏幕截图等的写入 .
NONE OF THE OPTIONS ARE PERFECT
不幸的是,没有选择是完美的,你需要根据可用性/安全性/复杂性之间的权衡做出自己的选择 .
2 回答
如果您推荐使用桌面应用程序的正确OAuth流程,请根据Auth0 web site,即 'Authorization Code (PKCE)' .
您的Angular OIDC库适用于单页应用程序,它使用名为 'Implicit Flow' 的不同解决方案 .
桌面应用程序的技术是在系统浏览器上触发登录,但它比你可能想要的更棘手,更多的工作 .
有一个Electron AppAuth Sample可以进行桌面登录:
在用户登录期间,可以切换到系统浏览器
登录完成后,将通知桌面应用程序
通知是通过 Loopback Interface 或 Private URI Scheme
我一直在撰写一篇关于您可能想要浏览的OAuth技术的非常详细的博客:它包含了Desktop Logins的一些注释 .
如果你更换默认的 NodeBasedHandler ,可以使用一个新的电子窗口 - 见This Code from StupidUglyFool - 他发布了一些好东西 .
ELECTRON WINDOW LOGIN PROBLEMS
我也开始走这条路 - 它会起作用,但Electron Window实际上是一个带有私人浏览器会话的Web视图,你会遇到这些问题:
密码自动填充在用户登录时不起作用
跨多个桌面应用程序进行单点登录将无法正常工作
从安全术语来看,通过Electron Windows登录并不正确 - 某些提供商(如Google)会阻止登录 .
SYSTEM BROWSER LOGINS
如果您有兴趣,我在GitHub上有几个我的样本可以帮助您:
Logins via Loopback Interface
Login via Private URI Scheme
这些都替换了 desktopapp/src/plumbing 下的NodeBasedHandler,所以你可以借用它们的想法 . 此外,两个代码示例都链接到带有一些屏幕截图等的写入 .
NONE OF THE OPTIONS ARE PERFECT
不幸的是,没有选择是完美的,你需要根据可用性/安全性/复杂性之间的权衡做出自己的选择 .