我正在构建一个带有静态前端的API,并通过身份验证进行绊倒。我考虑过使用Auth0来解决其中一些问题,但我对认证后发生的事情有点模糊。
SPA和API位于不同的主机上。
那么,这是否接近成功访问API的事件序列?
提前致谢。
答案 0 :(得分:1)
基本上,您的步骤是正确的 - 使用Auth0和SPA应用程序进行以下描述。
使用Auth0进行身份验证,并在您的请求中使用令牌作为audience
传递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发出授权请求(通常通过发送授权承载头)。 API请求是无状态的,并且需要在每个请求上验证承载令牌(JWT访问令牌) - 发行者/签名/受众/到期 - Auth0强烈支持RS256而不是HS256 - 并且具有抽象掉低级别的库/ SDK细节。例如,使用Node.js(Express)就像向Passport添加一些中间件一样简单。 在RS256 vs HS256 here上写得非常好。
有关完整示例,请使用Node.js / Express,recommend this sample。
希望这有帮助,如果有任何不明确的地方,请随时发表评论。