Как защитить веб-API ASP.NET MVC с помощью OWIN/Katana?

Я пытаюсь защитить веб-API ASP.NET, используя поставщиков OWIN для Windows Azure Active Directory. Я настроил веб-API для использования токенов-носителей Windows Azure JWT, как показано ниже:

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

Затем я создал клиентское приложение, принадлежащее тому же каталогу, что и клиент веб-API. Я указал разрешения для предоставления клиентскому приложению доступа к веб-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, но пока ничего не сработало, любая помощь будет оценена по достоинству!


person Andre Lashley    schedule 09.04.2014    source источник


Ответы (1)


Ознакомьтесь с примерами, доступными по адресу https://github.com/AzureADSamples. Я думаю, что есть несколько примеров, которые должны быть применимы.

person mcollier    schedule 10.04.2014