Пользовательская "универсальная" аутентификация на предъявителя OAuth 2.0 для защиты веб-API
В настоящее время я использую UseWindowsAzureActiveDirectoryBearerAuthentication для защиты веб-API. На данный момент это нормально, поскольку в тестовых средах используется Azure AD Identity.
Однако в производственной среде будет использоваться другой поставщик аутентификации (совместимый с OAuth 2).
Мне нужно преобразовать следующий специфический код Azure AD:
app.UseWindowsAzureActiveDirectoryBearerAuthentication(
new WindowsAzureActiveDirectoryBearerAuthenticationOptions
{
Audience = ConfigurationManager.AppSettings["ida:Audience"],
Tenant = ConfigurationManager.AppSettings["ida:Tenant"]
});
К чему-то более общему, которое пока будет работать с Azure AD, но в будущем его будет легко настроить для другого поставщика аутентификации. Например:
app.UseOAuthBearerAuthentication
(
new OAuthBearerAuthenticationOptions()
{
//...
}
);
Как последний может быть реализован для работы с Azure AD, а также быть достаточно "универсальным" для других поставщиков, совместимых с OAuth 2?
1 ответ
Oauth2 не определяет формат для токенов доступа. Azure AD использует JWT и объявляет свои координаты в различных документах метаданных, но нет никаких гарантий, что другие поставщики будут делать то же самое (и фактически они делают это не большую часть времени). Спецификация просто недостаточно детализирована, чтобы учесть такой общий компонент.