Как 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, разные уровни доступа к нему.