我有一个应用程序,它有一个后端和一个前端(java)。我需要有用户认证,但我不希望自己处理大部分。所以我想我可以让用户用他们的google账号进行认证。
后台部分大部分已经实现了,从浏览器上看也能正常工作。
但我不知道如何从桌面应用程序中设置这个问题。我想让应用程序有一个登录按钮,当按下时,在系统浏览器中打开谷歌登录页面,让用户登录。如果登录成功,桌面客户端就可以使用google账号的信息(比如邮箱地址)来识别自己与我的服务器。
这是我第一次做这样的事情,所以我不知道我找的地方是否正确。我在网上的研究让我想到了OAuth2.0,但这似乎更像是授权而不是认证。
我看了谷歌的 OpenID指南 它指引我到 在安装的应用程序中使用OAuth2这是我的用例的正确解决方案吗?还是说对于那些只有前端而所有数据都保存在桌面应用中的应用来说?
我不完全确定这是否安全,是否符合最佳实践,但我找到了一个解决方案。我使用了这个想法。回环重定向URI 用我自己的方式。
https://myserver.org:8443/signin?loopback_port=54321
/signin
在我的服务器上的端点,返回重定向至 /signin2
(再加上 loopback_port
param)。) 的重定向。/signin
将设置 JSESSIONID
在浏览器中的cookie中,当我们收到请求时,在 /signin2
我们可以这样理解 JSESSIONID
./signin2
我们使用回环端口和jsessionid在桌面应用程序上建立一个重定向url到http监听器。jsessionid将作为一个查询参数。所以浏览器会被重定向到 http://localhost:54321/?JSESSIONID=...
.JSESSIONID
的cookie,它可以在随后向服务器发送的请求中使用该cookie。有了这个cookie,服务器就会将桌面应用的请求与之前所做的认证关联起来。