4

我有一个标记为“公共(经过身份验证)”的 Azure API 应用程序,并在相关网关中设置了 Azure Active Directory 标识,如保护 API 应用程序中所述。

然后,我在同一个 Azure Active Directory 租户中创建了一个本机应用程序,并在委派权限中添加了访问网关的权限。

使用 ADAL 和以下代码,我能够成功地进行身份验证并获得访问令牌,但我不知道如何使用它来访问我的 API 应用程序。

string Tenant = "[xxx].onmicrosoft.com";
string Authority = "https://login.microsoftonline.com/" + Tenant;
string GatewayLoginUrl = "https://[gateway].azurewebsites.net/login/aad";
string ClientId = "[native client id]";
Uri RedirectUri = new Uri("[native client redirect url]");

async Task<string> GetTokenAsync()
{
  AuthenticationContext context = new AuthenticationContext(Authority);
  PlatformParameters platformParams = new PlatformParameters(PromptBehavior.Auto, null);
  AuthenticationResult result = await context.AcquireTokenAsync(GatewayLoginUrl, ClientId, RedirectUri, platformParams);

  return result.AccessToken;
}

我已经手动输入了x-zumo-auth header我在 Chrome 中获得的 API 应用程序测试了它,然后它就可以工作,但不是我使用 ADAL 获得的令牌。我还尝试了他们的示例代码中描述的浏览器表单,这些表单有效但没有给我刷新令牌。

我需要如何设置我的身份验证代码,以便我可以TokenCache在我的 API 应用程序中使用 a 和 ADAL?

4

2 回答 2

0

通常,在调用 Web api 时,您会在 Authorization 标头中传递访问令牌:

授权:承载 ThisIsTheAccessTokenYouRecievedFromADAL

于 2015-05-28T16:25:08.813 回答
0

您可能希望使用 AppServiceClient 对用户进行身份验证并调用受保护的 API 应用端点。将 Microsoft.Azure.AppService SDK (-pre) Nuget 包安装到您的客户端项目。

您可以在 GitHub 上的 AzureCards 示例中找到更多详细信息 - https://github.com/Azure-Samples/API-Apps-DotNet-AzureCards-Sample

于 2015-06-02T13:54:30.247 回答