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 令牌认证序列是啥?的主要内容,如果未能解决你的问题,请参考以下文章