【问题标题】:What is the SPA-Auth0-API token authentication sequence?SPA-Auth0-API 令牌认证序列是什么?
【发布时间】:2018-02-02 16:32:17
【问题描述】:

我正在构建一个带有静态前端的 API,但被身份验证绊倒了。我正在考虑使用 Auth0 来解决其中的一些问题,但我对 身份验证后会发生什么感到有点模糊。

SPA 和 API 位于不同的主机上。

那么,这是否接近成功访问 API 的事件序列?

  1. 客户端从 API 请求资源
  2. API 响应资源受到保护
  3. 客户端向 Auth0 提交登录凭据
  4. Auth0 对凭据进行身份验证,并以...响应...什么?令牌?
  5. 客户端存储此令牌以备将来使用? (这不是 CSRF 的秘诀吗?)
  6. 然后客户端从 API 请求资源,但这次使用的是令牌?
  7. API 识别令牌,并响应资源?或者,API 是否必须针对每个请求针对 Auth0 验证令牌,然后再将资源响应给客户端?

提前致谢。

【问题讨论】:

  • 您好,您在下面看到我 2 天前的回答了吗?它对您的理解有所帮助还是还有什么不清楚的地方?
  • 嗨@arcseldon,非常感谢您的回答;我只是还没有机会实施你的建议。看起来很清楚,我只是赞成它;当我有更多时间从事这个宠物项目时,我会将其标记为正确的:)
  • 谢谢 v.much :) 祝你好运,如果您需要澄清,当然可以使用 cmets。

标签: api authentication jwt single-page-application auth0


【解决方案1】:

基本上,您的步骤是正确的 - 出于以下描述目的使用 Auth0 和 SPA 应用程序。

使用 Auth0 进行身份验证,并在您的请求中传递一个 audience 参数,并使用 token 作为 response_type。这是一个示例,只需将 {{YOUR_XXX}} 部分与您自己的值交换即可。它将结果发送到https://jwt.io(您需要使用 Auth0 仪表板/api 将其添加到客户端允许的回调中。

https://{{YOUR_TENANT}}.auth0.com/authorize?client_id={{YOUR_CLIENT_ID}}&protocol=oauth2&redirect_uri=https://jwt.io&response_type=token&scope=openid email&audience=https://{{YOUR_API_AUDIENCE}}&nonce=123&state=xyz

在此查看docs

是的,SPA 客户端通常将 JWT 访问令牌存储在本地存储中。这比使用 cookie 提供了更好的 CSRF 保护。然后使用返回的 JWT 访问令牌对 API 发出授权请求(通常通过作为 Authorization Bearer 标头发送)。 API 请求是无状态的,并且需要在每个请求上验证 Bearer 令牌(JWT 访问令牌) - Issuer / Signature / Audience / Expiry - Auth0 强烈支持 RS256 而不是 HS256 - 并且具有抽象出低级的库 / SDK细节。例如,使用 Node.js (Express) 就像在 Passport 中添加一些中间件一样简单。 RS256 vs HS256 here 写得不错。

如需完整示例,请使用 Node.js / Express,recommend this sample

希望这会有所帮助,如果还有什么不清楚的地方,请随时离开 cmets。

【讨论】:

  • 终于解决了这个问题。非常感谢。
猜你喜欢
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
  • 2019-12-18
  • 2013-02-25
  • 1970-01-01
  • 1970-01-01
  • 2021-10-31
  • 2019-05-01
相关资源
最近更新 更多