【问题标题】:How to request properly an authorization code in OAuth2.0?如何在 OAuth2.0 中正确请求授权码?
【发布时间】:2017-09-15 12:33:35
【问题描述】:

我有一个玻璃鱼服务器,它在端口5000 上运行。它仅托管 .js.html/css 文件。我还有一个在端口8080 上运行的spring 服务器。

如果我输入 http://localhost:5000/app/index.html 在我的浏览器中,我得到了我的主页,但其他请求是通过端口 8080 发出的。喜欢http://localhost:8080/getTodaysWheather

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

我尝试了什么:我设置了一个像 http://localhost:5000/app/index.html 这样的回调 url,所以在用户授权我的应用程序后,他被重定向到 http://localhost:5000/app/index.html?code=1234,现在我再次使用端口 8080 向我的服务器发出请求,并给它新的代码收到,以便它可以进一步使用它来获取访问令牌。

你也会这样做吗?

【问题讨论】:

  • 你想用 OAuth2 实现什么?您是要对在端口 5000 上运行的浏览器端应用程序的用户进行身份验证,还是将该用户的权限委托给后端 Spring 应用程序?您为什么决定授权代码授予流程?
  • @JánHalaša 嗨 Jan,我的 Spring 应用程序应该能够代表我的用户提出一些请求,例如:getUserGithubRepos 或 getUserGithubStatistics 或 getUserGithubComments。所以我想使用授权码授权流程

标签: spring callback oauth-2.0 authorization


【解决方案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 进行响应。

【讨论】:

  • 完整浏览器请求是什么意思?
  • 是的,完整的浏览器请求。 OAuth2 概念需要它。用户看到真实的 URL 也有好处 - 知道他在安全的身份验证服务而不是网络钓鱼站点。
  • 对不起,我读的太快了。完整的浏览器请求是指基本的浏览器导航 - 当整个页面发生变化时,而不仅仅是其中的一部分(使用 XHR)。
猜你喜欢
  • 2023-01-29
  • 2019-04-07
  • 1970-01-01
  • 1970-01-01
  • 2019-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多