使用OAuth2客户端凭据流保护Azure API管理中的后端服务

时间:2019-04-25 15:50:36

标签: c# azure-active-directory asp.net-core-webapi openid-connect azure-api-management

我已经部署了.NET Core Web API,并通过Azure API管理提供了访问。现在,我希望使用OAuth2客户端凭据流来保护后端。

我添加了Azure AD身份验证,如下所示:

services.AddAuthentication(AzureADDefaults.BearerAuthenticationScheme)
                .AddAzureADBearer(options =>
                {
                    Configuration.Bind("AzureAd", options);
                });

我已经在Azure AD中创建了一个应用程序注册和客户端密钥,并通过使用以下代码创建令牌并调用API来确认它正在运行。

var clientCred = new ClientCredential(clientId, clientSecret);

            var result = await authContext.AcquireTokenAsync(resource, clientCred);

            return result.AccessToken;

是否可以在Azure API管理中使用此流?我希望Azure API管理来处理获取令牌并传入标头。

我找到的最接近的是下面的文章,但这似乎涉及API传递标头的使用者,这似乎使API Management订阅功能失去了作用

https://docs.microsoft.com/en-us/azure/api-management/api-management-howto-protect-backend-with-aad

1 个答案:

答案 0 :(得分:0)

目前,在APIM端执行此操作的唯一方法是使用send-request策略执行OAuth流。这将需要您提供APIM客户端ID和密码,但是您可以使用命名值来安全地存储它们。