【问题标题】:What request should be made to exchange a code for a token in Authorization Code Grant workflow?在授权代码授予工作流程中,应提出什么请求以交换令牌代码?
【发布时间】:2019-01-22 14:19:38
【问题描述】:

我正在尝试在我的后端 (BE) 应用程序中设置 Pac4j,为了配置我的 Angular 前端 (FE),我需要了解它预期的工作流程以便正确配置后端。

我一直在阅读大量文档并浏览 Pac4j 源代码,以了解如何在不暴露客户端密码的情况下从代码中获取令牌。

所以...

  1. 我尝试登录 FE->BE(无身份验证)
  2. 我收到了 401
  3. 我从 401 获取“位置”(Google auth uri)并重定向到它,提供回调 uri
  4. 我登录 Google
  5. 我被重定向回带有代码的回调 uri
  6. (我向 BE 提出什么请求才能取回令牌?即不需要 client_secret 的令牌 URI 在哪里)
  7. 我使用检索到的令牌通过 BE 正常访问和继续

【问题讨论】:

  • 您需要 Pac4j 特定的解决方案(我不知道库)还是一般的 OAuth 2 答案?
  • 在标签里,pac4j-oidc :)
  • 好的,无论如何,你需要打电话给token endpoint
  • 那是普通的 OAuth 而不是 OIDC。如果仍然适用,令牌端点是什么?我不能引用 Google 的令牌端点,因为它需要 client_secret,而且据我所知 Pac4j 没有令牌端点。我定义了一个回调端点,但我不知道它@JánHalaša

标签: oauth-2.0 openid-connect pac4j


【解决方案1】:

如果你不想使用client_secret,那么你需要公共客户端。我不确定 Google 是否支持公共客户端。

恕我直言,更好的方法将是 FE 中的隐式流。它将生成访问令牌,用于 BE api 调用。

【讨论】:

  • 但是我的客户是私人的,对吧?后端。 Angular UI 只是方程式中的用户代理。我是不是误会了?
  • 是的,谷歌只提供客户端密码(据我所知)=私人客户端。 Angular 是 FE/SPA 应用程序 = 通常是隐式流。
  • 这是谷歌特有的吗?即我刚刚让这个公共UA,私人客户流动起来还是只是谷歌没有这样做?谢谢顺便说一句
猜你喜欢
  • 2018-03-03
  • 2017-06-28
  • 1970-01-01
  • 2016-01-08
  • 2021-11-15
  • 1970-01-01
  • 1970-01-01
  • 2021-03-07
  • 2019-08-02
相关资源
最近更新 更多