2017-04-19 72 views
0

我有一台玻璃鱼服务器,它在端口5000上运行。它仅托管.js.html/css文件。我也有一个运行在端口8080上的弹簧服务器。如何正确申请OAuth2.0中的授权码?

如果我在我的浏览器中输入 http://localhost:5000/app/index.html,我收到了我的主页,但是其他请求使用端口8080。像http://localhost:8080/getTodaysWheather

这不是我的网络应用程序,但我应该使用/测试它。我添加了Oauth2(授权代码授予类型)支持。所以我的问题是: 我的回调URL必须使用什么端口+链接?

我试了一下:我设置回调URL像http://localhost:5000/app/index.html打完用户授权我的应用程序,他的重定向到http://localhost:5000/app/index.html?code=1234,现在我再次让我的服务器请求与港口8080,并给它接收的新鲜代码,以便它可以进一步使用它来给我一个访问令牌。

这样你也会这样做吗?

+0

你想用OAuth2实现什么?你想验证在端口5000上运行的浏览器端应用程序的用户还是将该用户的权限委托给后端Spring应用程序?你为什么决定授权码授权流程? –

+0

@JánHalaša嗨,Jan,我的Spring应用程序应该能够代表我的用户发出一些请求,如:getUserGithubRepos或getUserGithubStatistics或getUserGithubComments。所以我想使用授权码授权流程 – Oleg

回答

1

如果Spring应用程序是OAuth2访问令牌的用户,则重定向URL应该指向它(端口8080)。我也会在Spring应用程序中保存认证URL。所以工作流程如下:

  1. 前端(JavaScript应用程序)将浏览器导航到用于认证的后端URL,例如, http://localhost:8080/redirectToOAuth2(完整的浏览器请求,而不是XHR),它将响应重定向到您的OAuth2服务器。
  2. 认证后,OAuth2服务器将浏览器重定向到后端的redirect URL以及授权码,例如http://localhost:8080/authenticated?code=1234
  3. 后端读取代码,获取访问和刷新令牌,并通过重定向到前端应用程序http://localhost:5000/app/index.html进行响应。
+0

您的意思是完整的浏览器请求是什么意思? – Oleg

+0

是的,完整的浏览器请求。 OAuth2概念需要它。对于用户来说,看到真实的URL是很好的 - 要知道他在安全的身份验证服务中,而不是钓鱼网站。 –

+1

对不起,我太快读了这个问题。通过完整的浏览器请求,我的意思是一个基本的浏览器导航 - 当整个页面发生变化时,不仅仅是它的一部分(使用XHR)。 –