我试图了解如何在同时拥有单页 JS 应用程序和 REST API 时实现 OAuth 2 授权代码流。目的是通过将身份验证卸载到 OAuth 提供程序来保护对 REST API 的访问。
目前我的流程看起来像:
1)
+--------------------+ +----------------+
| JS Single Page App | - redirect -> | OAuth Provider | - user enters credentials
+--------------------+ +----------------+
2)
+----------------+ +----------+
| OAuth Provider | - redirect with temporary code -> | REST API |
+----------------+ +----------+
3)
+----------+ +----------------+
| REST API | - request access token using code -> | OAuth Provider |
+----------+ <- return access token ------------- +----------------+
我现在应该怎么办?我目前的理解是,我应该在收到访问令牌后将用户重定向到将再次加载 JS 单页应用程序的页面。但是我应该与单页应用程序共享访问令牌并使用它的存在来验证任何访问我的 REST API 的请求,还是更好地创建一个单独的标识符并维护两者之间的服务器端映射new-identifier->access_token
?无论哪种方式,将任何标识符传输给客户端的最佳方式是什么?我宁愿不维护任何会话,也不希望标识符出现在重定向页面的 URL 栏中。我目前唯一能想到的就是创建一个临时 cookie,单页应用程序会读取然后擦除它,但不知何故感觉有点笨拙。