Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oauth 2.0 SPA调用WebAPI调用WebAPI_Oauth 2.0_Single Page Application_Adfs4.0_Implicit Flow - Fatal编程技术网

Oauth 2.0 SPA调用WebAPI调用WebAPI

Oauth 2.0 SPA调用WebAPI调用WebAPI,oauth-2.0,single-page-application,adfs4.0,implicit-flow,Oauth 2.0,Single Page Application,Adfs4.0,Implicit Flow,我正在构建一个SPA(javascript),它将调用WebAPI a(.netmvcapi),然后再调用(服务器端)WebAPI B(.netmvcapi) 所有三个实体都受ADFS4(OAuth2)保护。在我的工作流中,我希望WebAPI A代表登录SPA的用户调用WebAPI B。 在阅读Microsoft的各种文档时,我发现以下文章中描述的场景最适合我的情况: 本文假设客户机应用程序可以执行授权流程。然而,在我的例子中,我正在处理一个SPA,它应该使用OAuth2的隐式流。此外,即使我

我正在构建一个SPA(javascript),它将调用WebAPI a(.netmvcapi),然后再调用(服务器端)WebAPI B(.netmvcapi)

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

本文假设客户机应用程序可以执行授权流程。然而,在我的例子中,我正在处理一个SPA,它应该使用OAuth2的隐式流。此外,即使我想使用授权grand flow,我仍然需要在SPA的ADF令牌端点上发布帖子,这是不可能的,因为ADFS4没有提供添加CORS头的方法。我当然可以在它前面部署一个代理并添加头。。。我还没有探讨过这个选择

我找到了一个解决办法,使这项工作,但它似乎更像是一个黑客给我;SPA在登录期间从ADFS4请求两个令牌(1个用于WebAPI A,1个用于WebAPI B)。它将两个令牌传递给WebAPI A,后者知道第二个令牌用于访问WebAPI B

这个解决方案似乎正确吗?我应该做些不同的事情吗

谢谢大家!

附言: 1) SPA无法直接访问WebAPI B,因为它只能在内部访问。
2) 假设我完全控制了所有三个实体的开发。

使用SPA应用程序的授权代码流不是一个好主意,因为您必须真正保留可以生成访问令牌的密钥,在这种情况下,这是不安全的

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