SPA + API OAuth流程,有什么用?

时间:2018-06-13 15:59:52

标签: node.js angular express authentication oauth-2.0

我们正在努力解决与我们的应用程序一起使用的OAuth流程。

我们使用Node.JS作为我们的后端API,将Angular作为我们的前端。

我们要做的是,登录用户,检索访问令牌并使用此访问令牌以发出一些API请求(基本POST / GET / PUT / DELETE)。

  • 用户(此时仍然未知)登陆登录表格或登记表格。他继续登录或注册。
  • 一旦登录他的仪表板上有一个访问令牌,现在每次他想要与API交互时,他必须使用他的访问令牌才能与后端进行互操作。 (这是一种经典行为)。

这看起来很简单,我们想要使用隐式流,但我们需要 client_id 来检索访问令牌,此时用户仍然是未知的。

然后我们考虑使用密码授予流程,因为我们的用户将拥有登录名/密码,但OAuth规格。建议不要使用它,除非我们别无选择。

我知道这是一个超级基本问题,但您推荐哪种OAuth流程?如果我们别无选择,我们只会使用密码授予,但希望探索每一个解决方案。

谢谢!

2 个答案:

答案 0 :(得分:1)

我不确定我明白你的意思:

  

我们想使用Implicit Flow,但我们需要一个   client_id以便检索访问令牌并且用户仍然是   此时未知。

如果您使用的是Oauth2.0s隐式流程,那么您的角度应用程序应该被注册为具有授权服务器的公共客户端 - 该过程将为您的角度应用程序提供唯一的client_id。然后,您的角度应用可以使用implicit grant并将未知用户重定向到授权服务器的授权端点,该端点在其client_id及其redirect_uri的查询字符串中传递,并且各种其他事情。

authorize 端点将提示用户注册/登录身份提供者并同意 范围您的Angular应用程序请求。  一旦用户登录(或注册),授权服务器就应该重定向回Angular应用程序的已注册redirect_uri,并在返回的http查询字符串的哈希段中传递access_token

答案 1 :(得分:0)

抱歉,我知道我没有直接回答您的问题。 但您是否考虑使用身份验证后端Auth0

安全性是关键,OAuth是一个复杂的协议。 Auth0为您提供管理用户,使用社交身份提供商以及与Angular集成所需的一切。