2016-08-09 4 views
2

Я пытаюсь обернуть голову тем, как защитить ресурсы веб-API с помощью Azure Active Directory. В настоящее время у меня есть угловое приложение, которое перенаправляет пользователя на страницу входа в Azure AD и возвращает id_token взамен. Этот токен идентификатора используется в последующих вызовах как токен-носитель, и, похоже, он работает. Мой вопрос здесь.Аутентификация на предъявителя Windows Azure Active Directory

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

Похоже, что здесь мы проводим проверку маркера-носителя. Я действительно не понимаю, как это работает. Является ли связь с Azure AD при каждом вызове API? Если да, то это идеальный подход (с точки зрения производительности)? Если нет, как это мешает кому-то просто создать свой собственный токен и взломать API?

Я уверен, что есть некоторые важные знания, которые мне не хватает, чтобы понять это, поэтому, если у вас есть какие-либо ресурсы, которые я должен прочитать, чтобы лучше понять это, пожалуйста, предложите.

Спасибо!

ответ

0

Вы можете определить, какие атрибуты вы хотите проверить, используя TokenValidationParameters и/или вы можете создать уведомление для реализации собственного валидатора.

В случае над вами кода определяется, что ValidateIssuer = true - это означает, что Эмитент будет проверяться - или иначе, промежуточное программное обеспечение будет проверять, если Эмитент (iss претензии в маркере) соответствует Id Арендатора на котором было зарегистрировано приложение (например, если приложение было зарегистрировано на tenant contoso.com, параметр проверяет, действительно ли токен был выпущен арендатором contoso.com) - блокирование токена, созданного другим арендатором.

ValidAudience = true сообщает промежуточному программному обеспечению, чтобы проверить, действительно ли генерируемый токен был сгенерирован для вашего приложения. Поэтому нет необходимости общаться с Azure AD каждый раз.

См. Это MSDN article для получения дополнительных опций для проверки токена.

Также см ниже большой пост о токена проверки:

http://www.cloudidentity.com/blog/2014/03/03/principles-of-token-validation/