【问题标题】:SPA calling a WebAPI calling a WebAPISPA 调用 WebAPI 调用 WebAPI
【发布时间】:2018-11-26 12:32:59
【问题描述】:

我正在构建一个 SPA (javascript),它将调用 WebAPI A (.net MVC API),然后调用(服务器端)WebAPI B (.net MVC API)。

所有三个实体均受 ADFS4 (OAuth2) 保护。在我的工作流程中,我希望 WebAPI A 代表已登录 SPA 的用户调用 WebAPI B。 在阅读 Microsoft 的各种文档时,我发现以下文章中描述的场景最适合我的案例:

https://docs.microsoft.com/en-us/windows-server/identity/ad-fs/development/ad-fs-on-behalf-of-authentication-in-windows-server

本文假设客户端应用程序可以执行授权大流程。尽管如此,在我的情况下,我正在处理一个应该使用 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) 假设我完全控制了所有三个实体的开发。

【问题讨论】:

    标签: oauth-2.0 single-page-application adfs4.0 implicit-flow


    【解决方案1】:

    SPA应用使用授权码流不是一个好主意,因为你必须真正保留可以生成access_token的密钥,这样不安全。

    我建议您为您的 spa 应用程序使用隐式流,并且您的服务器之间使用授权码流,这样您就可以确定安全性

    【讨论】:

      猜你喜欢
      • 2013-02-20
      • 1970-01-01
      • 1970-01-01
      • 2018-12-04
      • 2016-09-06
      • 2015-08-02
      • 2014-04-05
      • 1970-01-01
      • 2018-05-25
      相关资源
      最近更新 更多