SPA-Auth0-API 令牌认证序列是啥?

Posted

技术标签:

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

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

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

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

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

提前致谢。

【问题讨论】:

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

【讨论】:

终于解决了这个问题。非常感谢。

以上是关于SPA-Auth0-API 令牌认证序列是啥?的主要内容,如果未能解决你的问题,请参考以下文章

令牌是啥?令牌简介

为啥令牌认证比基于 API 密钥的认证更安全?

令牌是啥?【计算机网络】

PHP-ThinkPHP中的表单令牌是啥原理

RESTful API 的令牌认证:是不是应该定期更改令牌?

Owin 身份令牌认证令牌端点以 404 响应