我正在构建一个Angular(版本5)应用程序,它只与一个后端,我的API(Web服务器上的烧瓶应用程序)进行通信,后者又与我的数据库进行通信。该应用程序用于数据输入和可视化,其中数据不断加载并保存到后端或从后端保存。我控制了这三个部分。
我正在考虑使用Auth0来处理身份验证/用户管理。
我的问题是,我可以将此应用程序视为“常规”Web应用程序并使用身份验证代码授予,而不是通常建议用于SPA的隐式授权吗?那就是:
通过围绕Implicit Grants与Authentication Code Grants的大量讨论,看起来主要区别在于,在真正的SPA应用程序中,没有单一服务器由资源提供者控制,可以存储客户端密钥或令牌。但是,根据我的情况,我不能将SPA应用程序视为传统的(ajax-heavy)网页吗?
我在auth0论坛中发现了这个post,暗示这可能是“脆弱的,因为在实践中你有一个OAuth2流程应由两个独立的组件来处理”,但我不明白它们之间的独立性如何组件应该有所不同。
答案 0 :(得分:5)
是的,您可以使用身份验证代码授权。如果你使用它,有一些设计含义:
所以我建议:
因此,使用两个授权的主要区别在于,使用隐式授权,您的SPA需要能够在到期之前续订令牌(请参阅OpenID Connect Session Management)并使用验证码授予,后端需要有条不紊 - 为其客户保持会议。