使用ADAL

时间:2015-05-27 17:45:41

标签: c# authentication azure azure-active-directory azure-api-apps

我有一个Azure API应用程序标记为"公共(经过身份验证)"并按照Protect an API App中的详细说明在关联的网关中设置Azure Active Directory标识。

然后,我在同一个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;
}

我已经测试了API应用程序手动输入x-zumo-auth header我进入Chrome浏览器然后它可以正常工作,但不是我使用ADAL的令牌。我还尝试了sample code中描述的浏览器表单,但这些表单有效,但没有给我刷新令牌。

如何设置验证码,以便在API应用中使用TokenCache和ADAL?

2 个答案:

答案 0 :(得分:0)

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

授权:Bearer ThisIsTheAccessTokenYouRecievedFromADAL

答案 1 :(得分:0)

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

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