Как UseWindowsAzureActiveDirectoryBearerAuthentication проверяет токен носителя Azure Active Directory?

Я работаю над проверкой подлинности AzureAD в веб-API. У меня все отлично работает. Мне интересно, как приведенный ниже фрагмент кода проверяет токен Azure Active Directory.

app.UseWindowsAzureActiveDirectoryBearerAuthentication(
    new WindowsAzureActiveDirectoryBearerAuthenticationOptions{
        Audience = ConfigurationManager.AppSettings["ida:Audience"],
        Tenant = ConfigurationManager.AppSettings["ida:Tenant"]
    }
);

Q1) Будет ли он вызывать Azure Active Directory для запроса webapi?

Q2) Будет ли он содержать какие-либо ключи (закрытый ключ, открытый ключ и т. Д.)? Если да, то каковы токены? Как и где?

Q3) Как он расшифровывает токен на предъявителя?

Q4) Достаточно ли безопасно, чтобы зависеть от куска?

1 ответ

Q1) Будет ли он вызывать Azure Active Directory для запроса webapi?

Да, он получит открытые ключи по https://login.microsoftonline.com/common/discovery/keys при запуске приложения.

Q2) Будет ли он содержать какие-либо ключи (закрытый ключ, открытый ключ и т. Д.)? Если да, то каковы токены? Как и где?

Смотрите выше, он хранит открытые ключи в памяти.

Q3) Как он расшифровывает токен на предъявителя?

Он декодирует токен. Токены не зашифрованы, только закодированы в base64 и имеют цифровую подпись. Промежуточное программное обеспечение декодирует токен и проверяет правильность подписи с использованием открытого ключа (ключей), полученного ранее.

Q4) Достаточно ли безопасно, чтобы зависеть от куска?

В основном, у вас достаточно настроек для API с одним арендатором. Хорошей идеей, конечно, является определение делегированных прав / разрешений для приложений в манифесте вашего API в Azure AD, чтобы вы могли предоставлять приложениям, использующим API, разные уровни доступа к нему.

Другие вопросы по тегам