Безопасный веб-API с AAD-Авторизация была отклонена для этого запроса - PullRequest
0 голосов
/ 07 июня 2018

Я использую веб-приложение angularJS для входа в Azure => эта часть работает.

Но когда я пытаюсь получить доступ к авторизованному контроллеру в моем веб-приложении, я получаю «Авторизация была отклонена».Пока токен авторизации был отправлен в веб-API

my Startup.Auth.cs

public void ConfigureAuth(IAppBuilder app)
    {
        app.UseWindowsAzureActiveDirectoryBearerAuthentication(
            new WindowsAzureActiveDirectoryBearerAuthenticationOptions
            {
                Tenant = ConfigurationManager.AppSettings["ida:Tenant"],
                TokenValidationParameters = new TokenValidationParameters {
                     ValidAudience = ConfigurationManager.AppSettings["ida:Audience"]
                },
            });
    }

ApiController

 [Authorize]
public class ValuesController : ApiController
{
    // GET api/values
    public IEnumerable<string> Get()
    {
        return new string[] { "value1", "value2" };
    }

Ошибка:

<Error>
<script/>
  <Message>Authorization has been denied for this request.</Message>
</Error>

Заголовок ответа:

cache-control: no-cache
content-length: 81
content-type: application/xml; charset=utf-8
date: Thu, 07 Jun 2018 15:04:06 GMT
expires: -1
pragma: no-cache
server: Microsoft-IIS/10.0
status: 401
www-authenticate: Bearer
x-aspnet-version: 4.0.30319
x-powered-by: ASP.NET
x-sourcefiles: =?UTF-8?B? 
QzpcVXNlcnNcanF1aW5vbmVzViQXBwbGljYXRp 
b245XGFwaVx2YWx1ZXM=?=

1 Ответ

0 голосов
/ 07 июня 2018

AFAIK, мы бы использовали adal.js и adal-angular.js в приложении Angular JS для аутентификации пользователей и получения токенов на стороне клиента.Подробности, которые вы могли бы выполнить, изучив инструкции Azure AD AngularJS и Интеграция Azure AD в одностраничное приложение AngularJS , чтобы сузить эту проблему.

Но когда япопробуйте получить доступ к авторизованному контроллеру в моем веб-приложении, я получаю «Авторизация была отклонена».Пока токен носителя авторизации был отправлен в веб-API.

Если вы вручную включили промежуточное ПО для проверки токена, вам необходимо убедиться, что вы правильно настроили WindowsAzureActiveDirectoryBearerAuthenticationOptions.Audience или * 1014.* который будет сравниваться со свойством aud из входящего токена JWT.Вы можете нажать F12 при просмотре приложения и отследить сеть или использовать Fiddler для захвата вашего токена на предъявителя, а затем использовать https://jwt.io/ для декодирования вашего токена.

Более того, если вы используете встроенный Аутентификация и авторизация в службе приложений Azure для вашего веб-приложения бэкэнда, вам необходимо правильно настроить идентификатор клиента или РАЗРЕШЕННЫЕ АУДИТОРИРОВАННЫЕ АУДИТОРИИ для аутентификации AD в блейде Аутентификация / Авторизация приложения-службы приложения..

...