通过Azure Active Directory验证客户端以连接到ApiApp

时间:2016-06-10 11:15:39

标签: c# authentication azure-active-directory

我使用Azure Active Directory保护了我的Azure API应用程序。

如何验证我的C#.NET客户端,以便我可以调用Api?我无法找到关于此的任何教程!

1 个答案:

答案 0 :(得分:3)

https://aka.ms/aaddev中有很多全面的文档和示例,你应该花点时间在那里逛一逛。我的回答完全来自那些样本,特别是这个样本:

https://github.com/Azure-Samples/active-directory-dotnet-native-desktop

首先,您需要按照以下步骤在Azure Active Directory中注册客户端应用程序:

  
      
  1. 登录Azure管理门户。
  2.   
  3. 点击左侧导航栏中的Active Directory。
  4.   
  5. 单击要注册示例应用程序的目录租户。
  6.   
  7. 单击“应用程序”选项卡。
  8.   
  9. 在抽屉中,单击“添加”。
  10.   
  11. 点击“添加我的组织正在开发的应用程序”。
  12.   
  13. 输入应用程序的友好名称,即“YourClientApp”,选择“Native Client Application”,然后单击“下一步”。
  14.   
  15. 输入重定向URI,即“https://yourClientsRedirectUri/”。点击完成。
  16.   
  17. 单击应用程序的“配置”选项卡。
  18.   
  19. 找到客户端ID值并将其复制到一边,稍后在配置应用程序时需要这样做。
  20.   
  21. 在“其他应用程序的权限”中,单击“添加应用程序”。在“显示”下拉列表中选择“其他”,然后单击上方的复选标记。定位&单击“YourApi”,然后单击底部复选标记以添加应用程序。从“委派的权限”下拉列表中选择“访问YourApi”,然后保存配置。
  22.   

然后,对于C#.NET客户端,您需要使用.Net的Active Directory身份验证库(ADAL)并执行以下操作:

var authority = "https://login.microsoftonline.com/";
var resource = "https://yourApisUri/";
var redirectUri = "https://yourClientsRedirectUri/";

var tenant = "yourAzureActiveDirectory.onmicrosoft.com";
var clientId = "yourClientsAzureADClientId";

var ctx = new AuthenticationContext(authority + tenant);

var t = ctx.AcquireToken(resource, clientId, new Uri(redirectUri));

using (var client = new HttpClient())
{
    client.DefaultRequestHeaders.Add("Authorization", "Bearer " + t.AccessToken);

    var url = "https://yourapi.com/yourmethod";
    await result = client.GetAsync(url);

    // Do whatever you want
}

重要说明:上面的代码只是一个起点,您应该确保阅读并遵循所有最佳实践,例如确保将TokenCache传递给AuthenticationContext构造函数并确保调用每当您需要令牌而不是自己缓存令牌时,AcquireToken。