我正在构建一个 SPA (javascript),它将调用 WebAPI A (.net MVC API),然后调用 (服务器端) WebAPI B (.net MVC API)。
所有三个实体均受 ADFS4 (OAuth2) 保护。在我的工作流程中,我希望 WebAPI A 代表已登录 SPA 的用户调用 WebAPI B。在阅读 Microsoft 的各种文档时,我发现以下文章中描述的场景最适合我的情况:
本文假设客户端应用程序可以执行授权大流程。尽管如此,在我的情况下,我正在处理一个应该使用 OAuth2 隐式流的 SPA。此外,即使我想使用授权大流程,我仍然需要从 SPA 在 ADFS 的令牌端点上进行 POST,这是不可能的,因为 ADFS4 不提供添加 CORS 标头的方法。我当然可以在它前面部署一个代理并添加标题......我还没有探索这个选项。
我找到了一个解决方案来完成这项工作,但它对我来说更像是一个 hack;登录期间的 SPA 从 ADFS4 请求两个令牌(1 个用于 WebAPI A,1 个用于 WebAPI B)。它将两个令牌传递给知道第二个令牌用于访问 WebAPI B 的 WebAPI A。
这个解决方案看起来正确吗?我应该做一些不同的事情吗?
谢谢!
PS:1) SPA 不能直接访问 WebAPI B,因为它只能在内部访问。2)假设我完全控制了所有三个实体的开发。