【发布时间】:2018-06-30 13:14:29
【问题描述】:
我正在构建一个 Angular(版本 5)应用程序,它只与一个后端、我的 API(Web 服务器上的烧瓶应用程序)对话,而后者又与我的数据库对话。该应用程序用于数据输入和可视化,其中数据不断加载并保存到后端/从后端保存。我可以控制所有三个部分。
我正在考虑使用 Auth0 来处理身份验证/用户管理。
我的问题是,我可以将此应用程序视为“常规”Web 应用程序并使用身份验证代码授予,而不是通常推荐用于 SPA 的隐式授予吗?那就是:
- SPA 将通过重定向到相应 auth0 页面的 /login 端点从 auth0 获取授权码
- 授权代码通过某个端点(可能是 /callback 端点)传递给 API。
- API 与 Auth0 对话以交换交换 AC 以获得令牌。
- 每次请求都会将令牌传递给数据库,如果令牌无效则拒绝(可以使用 postgresql 在数据库中检查令牌有效性)
- API 服务器上的令牌与用户之间的关联是通过加密的 cookie(Flask 的“会话”变量)完成的
阅读大量关于隐式授权与身份验证代码授权的讨论,似乎主要区别在于,在真正的 SPA 应用程序中,没有一个由资源提供者控制的服务器可以存储客户端密钥或令牌.但是,就我的情况而言,我不能将 SPA 应用程序视为传统的(重 ajax 的)网页吗?
我在 auth0 论坛中发现了这个post,它暗示这可能“很脆弱,因为实际上你有一个 OAuth2 流由两个独立的组件处理”,但我不明白组件之间的独立性如何应该有所作为。
【问题讨论】:
-
我认为应该将授权码发送回 SPA,然后 SPA 调用 /oauth2/token 将其交换为令牌?
标签: oauth-2.0 single-page-application auth0