在 OAuth PKCE 流程中使用带有 Windows 上 Java FX 前端的应用程序时,是否有端口侦听器的替代方案?

Using an application with a Java FX front-end on Windows in the OAuth PKCE flow, is there an alternative to a port listener?

提问人:JeroenV 提问时间:11/16/2023 更新时间:11/17/2023 访问量:40

问:

在 OAuth 流中,使用自定义 URI/URL 进行回调在智能手机上是自定义的,但在 Windows 中则不然。 我找到了有关如何执行此操作的描述(如何在 Windows 中注册自定义 URL 协议?),但其中谈到了“打开应用程序并将 URL 中的参数传递给它”。

在我的情况下,当用户从开始菜单启动应用程序时,PKCE 流就会启动。应用程序调用默认浏览器来访问登录页(由于 SSO 而以这种方式实现,用户使用的其他应用程序确实具有 Web 前端),如果登录成功,则调用回调 URL。因此,在我的情况下,浏览器将执行“myApp://code={OAuth-code}”而不是“http://127.0.0.1:{some port}/code={OAuth-code}”。

带有端口侦听器的解决方案现在在我的开发计算机上运行,但这只是因为我在开发笔记本电脑上拥有管理员权限。一旦投入生产,将使用此应用的用户在其公司笔记本电脑上没有管理员权限,他们不会获得它。

因此,我向打包团队提出的解决方案是使用具有管理员权限的服务帐户运行应用程序,但他们不喜欢这个想法,并要求我寻找是否有其他解决方案。我发现这个“自定义 URL”是一个可能的解决方案,但我想知道这是否是一种选择,或者我还没有找到另一种解决方案可以在这种情况下使用。

JavaFX 浏览器 OAuth 回调

评论


答:

2赞 Michal Trojanowski 11/17/2023 #1

接收对桌面应用程序的 OAuth 响应的当前最佳实践是使用具有随机分配端口的环回接口(因此您在问题中显示的内容): https://datatracker.ietf.org/doc/html/rfc8252#section-7.3 这也是您通常在桌面应用程序中实现此目的的方式。

您确定用户无法侦听端口吗?通常,打开值大于 1024 的端口不需要系统上的管理员权限。我会仔细检查这一点,因为这应该是可能的。我不认为您在桌面上有不同的选择。例如,请参阅以下答案:如何允许应用声明“https”方案 URI?(即如何从 https URL 打开桌面应用程序?