Защита API с помощью Azure AD и локальных учетных записей - PullRequest
0 голосов
/ 04 мая 2020

Я хочу защитить свой API, чтобы его могли вызывать только пользователи, аутентифицированные в Azure AD и имеющие локальные учетные записи в моем приложении. Выходом будет приложение React SPA. Я уже создал Po C, который аутентифицирует пользователей с Azure AD, и я могу вызывать свой API из SPA.

Теперь я хотел бы добавить поддержку локальных учетных записей. Я думал об использовании ASP. NET Core Identity для управления локальными пользователями. Затем я бы создал конечные точки для SPA, чтобы получить токены JWT. Но я не уверен, что это путь к go. Я вижу примеры кода, генерирующего токены, и это не очень сложно реализовать, но это безопасность. Может быть, не стоит делать это самостоятельно?

Я вижу, что люди используют IdentityServer4, и из того, что я читал, можно также использовать мои локальные ASP. NET учетные записи Core Identity и интегрироваться с Azure Объявление. Но это был бы еще один инструмент в моем технологическом стеке, который мне нужно было бы изучить. Он не будет использоваться совместно с другими приложениями, и это будет другой сервис, который мне потребуется для развертывания и управления. Может быть, это перебор для этого сценария?

Какие еще есть варианты?

1 Ответ

0 голосов
/ 05 мая 2020

Теперь я хотел бы добавить поддержку локальных учетных записей. Я думал об использовании ASP. NET Core Identity для управления локальными пользователями. Затем я бы создал конечные точки для SPA, чтобы получать токены JWT.

Вы можете сделать это, добавив конечные точки в api для аутентификации токена . Ваше клиентское приложение передает учетные данные пользователя в веб-API, веб-API проверяет учетные данные из локальной базы данных и создает токен JWT обратно в клиентское приложение. Для проверки токена ваш веб-интерфейс создаст две схемы аутентификации, одну для токена AAD и одну для токена пользователя локальной базы данных.

Я вижу, что люди используют IdentityServer4 и из того, что я прочитал также можно использовать мои локальные ASP. NET учетные записи Core Identity и интегрировать с Azure Ad.

Identity Server 4 поддерживает внешние поставщики удостоверений, такие как Azure Active Directory, и может использовать ASP. NET Core Identity для управления пользователями. Если вы понимаете OpenID Connect, это не сложно реализовать, и вы можете воспользоваться такими функциями, как единый вход / выход. Здесь - это пример кода, который объединяет EF и ASP. NET Identity. Вы можете просто добавить внешних провайдеров идентификации, таких как AAD:

services.AddAuthentication()
.AddOpenIdConnect("aad", "Azure AD", options =>
{
    options.ClientId = "<appID>";
    options.Authority = "https://login.microsoftonline.com/<tenant>/";             
    options.CallbackPath = "/signin-oidc-aadtenant";            
    options.SaveTokens = true;                                 
    options.SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme;

})
...