我们有一个基于客户端服务器的Java产品,我需要在服务器仪表板中集成google OAuth,我们的客户端可以在其中登录并允许访问gmail API。之后,服务器将使用REFRESH TOKEN和ACCESS TOKEN使用客户端gmail通过Java Mail API向某些电子邮件发送电子邮件报告。 我们只需要实施一次登录并永久发送邮件,即离线访问(意味着REFRESH TOKEN是强制性的)。 我们的产品部署在前提和基于云(仅限一个)。因此,在客户端环境中,我们可以将私有ip或公共ip或公共ip映射到dns。
我知道有两种方法可以做到这一点:
1)服务器端身份验证
2)客户端身份验证
在这两种情况下,你需要公共DNS映射REDIRECT URI,即google将在登录后重定向用户的URL。但在我们的情况下,我们没有 始终是映射到客户端服务器计算机的公共域。此外,我们也无法在重定向uri中提供localhost。
SO
问题I:应该使用什么代替REDIRECT_URI
问题II:我们有很多客户端,所以我们应该为每个客户端使用一个应用程序,或者我们应该在云上部署单个应用程序,其中每个客户端仪表板将在登录时重定向,作为响应我们将获得令牌。
对于上述问题的任何其他替代方案将不胜感激。
答案 0 :(得分:0)
好的,我得到了架构。 Google应用程序可以灵活地添加多个java脚本来源并重定向uri。 所以我们需要在开发者控制台中只创建一个应用程序。对于每个客户,我们将添加一个授权的java脚本来源并在谷歌应用程序在线重定向uri。当在客户端服务器中按下登录按钮时,我们将根据已在谷歌应用中添加的客户端重定向uri。对于私有IP没有解决方案,但localhost可以与限制一起使用从服务器系统上的浏览器登录。