我有一个基于Azure的.NET Core Web API应用程序,我想与基于Azure的MVC5应用程序进行通信。 MVC5应用程序要求其客户端在Azure AD实例中具有凭据。我们使用SSO Azure AD凭据连接到此应用程序。
.NET Core应用不对Azure进行身份验证;消费者无法获得凭据传递。但是......它托管在同一个Azure实例中,所以看起来我应该能够相对轻松地将来自web api的经过身份验证的请求发送到MVC应用程序。
关于此的文档令人困惑。有人谈论x.509证书(这似乎没有必要),OAuth 2.0授权和流程(我可能无法解决这个问题,我不知道)......但是有一些简单,相对“无脑的“让一个服务与另一个服务安全对话的方式,而不构建某种复杂的脚手架和/或配置?我有点希望有一种方法可以实例化HttpClient
或WebRequest
,调用一些方法来获取正确的授权标题(或者可能是cookie?),并以快乐的方式发送我的请求。但如果它存在,它对我来说仍然是难以捉摸的。
对此有任何说明都会有所帮助,谢谢。
答案 0 :(得分:1)
这取决于。首先,要清楚,您是尝试从API应用程序调用MVC应用程序中的操作?这似乎有点奇怪(更常见的情况是,MVC前端可能需要调用api)。无论如何,它应该仍然是相同的。
问题:您是否希望api应用程序始终将MVC应用程序称为“自身”?那么,你的api app会有一个被授权在你的MVC应用上调用动作的身份吗?如果是这样,这正是OAuth客户端凭据流的用途:
通过此流程,您可以创建代表API应用程序的Azure AD应用程序注册。然后,在运行时,您的API应用程序使用其客户端ID和客户端密钥来获取可用于调用MVC应用程序的令牌(通常作为授权标头中的承载令牌传递)。您可以通过应用程序注册执行的部分工作是授予其对MVC应用程序的委派访问权限,但您也可以管理要在MVC应用程序中访问的“客户”。
希望这是有道理的。