我们正在努力解决我们的应用程序要使用什么 OAuth 流程。
我们使用 Node.JS 作为后端 API,使用 Angular 作为前端。
我们想要做的是,登录用户,检索访问 token 并使用此访问 token 来发出一些 API 请求(基本 POST/GET/PUT/DELETE)。
- 用户(目前仍未知)登陆登录表单或注册表单。他继续登录或注册。
- 登录后,他会使用访问 token 登录仪表板,现在每次他想要与 API 交互时,他都必须使用访问 token 才能与后端进行互操作。 (这是一种经典行为)。
这看起来很简单,我们想要使用隐式流,但我们需要client_id来检索访问 token ,并且此时用户仍然未知。
然后我们考虑使用密码授予流程,因为我们的用户将拥有登录名/密码,但有 OAuth 规范。建议不要使用它,除非我们别无选择。
我知道这是一个非常基本的问题,但是您建议使用哪种 OAuth 流程?如果我们别无选择,我们将只使用密码授予,但希望探索每一个解决方案。
谢谢!
最佳答案
我不确定我是否理解您的意思:
we wanted to use the Implicit Flow but we need a client_id in order to retrieve an access token and the user is still unknown at this point.
如果您使用 Oauth2.0s 隐式流程,那么您的 Angular 应用程序应在授权服务器上注册为公共(public)客户端 - 该过程将为您的 Angular 应用程序提供唯一的 client_id
。然后,您的 Angular 应用程序可以使用隐式授权
并将未知用户重定向到授权服务器的authorise端点,并在查询字符串中传递其client_id
及其redirect_uri
和各种其他内容。
授权端点将提示用户注册/登录身份提供商并同意您的 Angular 应用请求的范围。
用户登录(或注册)后,授权服务器应该重定向回 Angular 应用的已注册 redirect_uri
,并在返回的 http 查询字符串的哈希段中传递 access_token
。
关于node.js - SPA+API OAuth流程,用什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50841594/