如何使用OWIN/Katana保护ASP.NET MVC Web Api

本文关键字:NET MVC Web Api ASP 保护 何使用 OWIN Katana | 更新日期: 2023-09-27 17:57:47

我正在尝试使用Windows Azure Active Directory的OWIN提供程序来保护ASP.NET web API的安全。我已将web api配置为使用Windows Azure JWT承载令牌,如下所示:

public void Configuration(IAppBuilder app)
{
   app.UseWindowsAzureBearerToken(new WindowsAzureJwtBearerAuthenticationOptions()
     {
       Audience = "http://mywebsitename.azurewebsites.net",
       Tenant = "mydefaultdirectory.onmicrosoft.com"
     });
}

然后,我创建了一个客户端应用程序,该应用程序与webapi租户属于同一目录。我指定了授予客户端应用程序访问web api的权限。当我尝试创建客户端应用程序并根据API进行身份验证时,出现了问题。

该客户端只是一个简单的windows商店应用程序,使用按钮点击方法对windows azure进行身份验证,点击代码如下:

 private async void myButton_Click(object sender, RoutedEventArgs e)
    {
        AuthenticationContext ac = new AuthenticationContext("https://login.windows.net/nameofazureactivedirectorytenant");
        AuthenticationResult ar =
         await ac.AcquireTokenAsync("api/pathtoresource",
          "xxxxxxxx-xxxx-xxxxx-xxxx-xxxxxxxxxxxx");
        // Call Web API
        string authHeader = ar.CreateAuthorizationHeader();
        HttpClient client = new HttpClient();
        HttpRequestMessage request = new HttpRequestMessage(
          HttpMethod.Get, "http://mywebsitename.azurewebsites.net/api/pathtoresource");
        request.Headers.TryAddWithoutValidation("Authorization", authHeader);
        HttpResponseMessage response = await client.SendAsync(request);
        string responseString = await response.Content.ReadAsStringAsync();
    }

该应用程序无法正确创建身份验证上下文,所以我认为我给它传递了错误的参数。我已经看过很多博客文章和SO的答案,但到目前为止一切都不起作用,任何帮助都将不胜感激!

如何使用OWIN/Katana保护ASP.NET MVC Web Api

查看https://github.com/AzureADSamples.我认为有一些例子应该适用。