0

再会!

我正在尝试配置我的 Azure API 应用程序,使其只能由受信任的应用程序使用 Azure AD(公共认证)访问。我在 AD 中为 WPF 应用程序和我的 API 应用程序创建了实体。我授予我的 WPF 应用程序实体访问我的 API 应用程序的权限。我使用以下方法访问我的 API。

        public Task<string> COGetOrganisationsAsync()
        {
            if(adAuth == null) adAuth = new coADAuthentication(ClientID, RedirectURL, Authority, ResourceURI);

            string token = adAuth.AcquireTokenOrRefresh();

            using(HttpClient httpClient = new HttpClient())
            {
                httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);

                Uri requestURI = new Uri(new Uri(Authority), "Organization/GetAll"); 
                HttpRequestMessage httpRequest = new HttpRequestMessage(new HttpMethod("POST"), requestURI);
                var req = httpClient.PostAsync(requestURI, httpRequest.Content).ContinueWith(httpResponseMessage =>
                {
                    return httpResponseMessage.Result.Content.ReadAsStringAsync();
                });

                return req.Result;
         }

我成功收到了一个有效的令牌,我将它添加到标题中。我的 req.Result 在以下消息中

{ "status": 403, "source":" https://serviceplan-resourceg01234567890abcdef.azurewebsites.net/MyMethod/GetAll ", "message": "Permissions for service \"myService\" 设置为公共身份验证但没有身份验证与请求相关联。” }

状态 403 告诉我服务器确实收到了我的请求,但它是禁止的。代码工作正常,因为当我将身份验证更改为公共时,我收到了正确的数据。

我不确定我的 Azure AD 配置是否正确,但我这几天一直在寻找解决方案。Azure 文档分散、过时或对我的特定场景没有用处。

我的问题是,有没有其他人有同样的问题,有人可以建议我一些有用的文档吗?

非常感谢!

4

2 回答 2

1

很抱歉,您找不到所需的东西。应用服务 API 应用为许多提供程序提供开箱即用的支持,您只需在网关处启用和配置即可。然后网关后面的服务将进行身份验证,并且它们都将共享相同的身份验证提供程序(当然,如果它们被配置为公共身份验证),因此 API App A 的调用者不必重新进行身份验证即可访问 API App B.

您可以在保护 API 应用程序中找到分步指南:添加 Azure Active Directory 或社交提供商身份验证

话虽如此,导致混乱或过时的文章是什么?我们正在努力使这些文章尽可能容易被发现,因此任何反馈都将帮助我们改进。

于 2015-05-22T15:19:57.363 回答
0

API 应用平台使用“zumo 令牌”抽象 API 应用的身份验证。这个想法是,无论您想使用哪个身份验证提供程序,例如 AAD、Facebook、Google、Twitter 或 Microsoft 帐户,它都(大部分)对您的客户端代码是透明的。一般流程是

  1. 您配置管理您的 API 应用程序的网关以使用您想要的身份验证提供程序。在你的情况下,AAD。
  2. 您要求用户在 https:///login/aad 登录
  3. 这会将 AAD 令牌放入网关并返回一个 zumo 令牌
  4. 然后您的客户端代码获取 zumo 令牌并使用它来调用 API 应用程序

Panagiotis 指出的http://azure.microsoft.com/en-us/documentation/articles/app-service-api-dotnet-add-authentication/有详细信息。

于 2015-05-26T21:04:56.673 回答