Azure Web服务经过身份验证的Azure Web服务

时间:2018-05-16 12:27:56

标签: c# asp.net azure asp.net-core azure-authentication

我有一个基于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授权和流程(我可能无法解决这个问题,我不知道)......但是有一些简单,相对“无脑的“让一个服务与另一个服务安全对话的方式,而不构建某种复杂的脚手架和/或配置?我有点希望有一种方法可以实例化HttpClientWebRequest,调用一些方法来获取正确的授权标题(或者可能是cookie?),并以快乐的方式发送我的请求。但如果它存在,它对我来说仍然是难以捉摸的。

对此有任何说明都会有所帮助,谢谢。

1 个答案:

答案 0 :(得分:1)

这取决于。首先,要清楚,您是尝试从API应用程序调用MVC应用程序中的操作?这似乎有点奇怪(更常见的情况是,MVC前端可能需要调用api)。无论如何,它应该仍然是相同的。

问题:您是否希望api应用程序始终将MVC应用程序称为“自身”?那么,你的api app会有一个被授权在你的MVC应用上调用动作的身份吗?如果是这样,这正是OAuth客户端凭据流的用途:

https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-protocols-oauth-service-to-service

通过此流程,您可以创建代表API应用程序的Azure AD应用程序注册。然后,在运行时,您的API应用程序使用其客户端ID和客户端密钥来获取可用于调用MVC应用程序的令牌(通常作为授权标头中的承载令牌传递)。您可以通过应用程序注册执行的部分工作是授予其对MVC应用程序的委派访问权限,但您也可以管理要在MVC应用程序中访问的“客户”。

希望这是有道理的。