我正在构建一个SPA (javascript),它将调用WebAPI A (.net MVC API),然后调用(服务器端) WebAPI B (.net MVC API)。
这三个实体都受到ADFS4 (OAuth2)的保护。在我的工作流程中,我希望WebAPI A代表登录到WebAPI的用户调用SPA B。在阅读Microsoft的各种文档时,我发现以下文章中描述的场景最适用于我的案例:
本文假设客户端应用程序可以执行授权大流。然而,在我的例子中,我处理的是一个SPA,它应该使用OAuth2的隐式流。此外,即使我想使用授权大流,我仍然需要从SPA中在ADFS的令牌端点上发布一篇文章,这是不可能的,因为ADFS4不提供添加CORS头的方法。当然,我可以在它前面部署一个代理并添加标题.我还没有探讨过这一选择。
我找到了一个解决方案来实现这一工作,但在我看来,这更像是一次黑客攻击;在登录期间,SPA从ADFS4请求两个令牌(一个用于WebAPI A,一个用于WebAPI B)。它将两个令牌传递给WebAPI A,后者知道第二个令牌用于访问WebAPI B。
这个解决方案看起来正确吗?我应该做些不同的事吗?
谢谢!
PS: 1) SPA不能直接访问WebAPI B,因为它只能在内部访问。2)假设我对所有三个实体的开发都有完全的控制权。
发布于 2018-08-10 15:45:13
为SPA应用程序使用授权代码流并不是一个好主意,因为您必须真正保留可以生成access_token的密钥,在这种情况下这是不安全的。
我建议您对spa应用程序使用隐式流,在服务器之间使用授权代码流,这样您就可以确保安全性。
https://stackoverflow.com/questions/50896308
复制相似问题