我的团队正在对遗留应用程序进行现代化改造。其中一部分是用新的网络客户端替换旧的桌面客户端。在可预见的未来,当我们将越来越多的功能从旧版本迁移到新版本时,这两个客户端将并行存在。这项工作的另一部分是用带有 Keycloak 的 OAuth 解决方案替换我们的手动身份验证和授权机制。
我们现在要做的是:
我们的最新功能将仅存在于网络客户端中。要从桌面客户端使用它,单击相应的按钮将简单地打开具有特定 URL 的系统浏览器。
这已经有些不便了,我们希望尽量减少给用户带来的任何进一步不便。桌面客户端启动时用户已经登录。我们不希望用户在 Web 客户端中再次登录,特别是因为他们可能会在一天内多次打开和关闭此浏览器窗口,而不是一直打开它(尽管我们希望行为会随着时间的推移而改变)越来越多的旧功能迁移过来的时间)。理想情况下,如果用户选择之后手动打开浏览器,他们也会保持登录状态。
我们怎样才能做到这一点?我们目前的想法是:
此工作流仅部分解决了问题。缺点:
我敢肯定我们不是第一个遇到这种问题的人。其他公司是如何解决的?我知道一种方法是切换顺序并使用浏览器进行桌面客户端的登录。但这在我们的例子中不起作用,因为服务器仍然需要用户的凭据才能使用旧的授权功能。虽然我们现在可以将身份验证切换到 OAuth,但授权很复杂,需要一些时间才能准备好切换。
如果有帮助:服务器和桌面客户端都是用 Java 编写的。 Web 客户端使用 Angular.