0

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

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

4

1 回答 1

1

这种取决于。首先,要明确的是,您是在尝试从 API 应用程序调用 MVC 应用程序中的操作吗?这似乎有点奇怪(更常见的是,MVC 前端可能需要调用 api)。无论如何,它应该仍然是一样的。

问题:您是否希望您的 api 应用程序始终将 MVC 应用程序称为“自身”?那么,您的 api 应用程序将拥有一个被授权在您的 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 应用程序中允许访问的“客户端”。

希望这是有道理的。

于 2018-05-16T13:07:54.393 回答