Как использовать Google Authencticaion в основном веб-приложении asp.net и веб-API, который использует JWT - PullRequest
0 голосов
/ 05 июля 2019

Я работаю над веб-приложением в ядре asp.net 2.2.Веб-API обслуживает каждый запрос, поступающий из веб-приложения.Я использую аутентификацию токена JWT в веб-API.Этот токен идет в каждом запросе от веб-приложения.

Веб-приложение -----> Веб-интерфейс ----> Уровень данных ----> EF Core ----> DB

При входе в систему пользователь вводит адрес электронной почты и пароль в веб-интерфейсе и нажимает кнопку входа.Запрос направляется в Web API, а не в БД, переходящий из всех остальных слоев.Если пользователь действителен, то в Web API генерируется токен, который передается в ответе веб-приложению.Теперь при каждом последующем запросе от Web App к Web API Web-APP отправляет этот токен в заголовок.

Теперь я хочу добавить внешнего провайдера аутентификации, такого как Google.Проблема в том, что я не уверен, как обрабатывать поток моего приложения?Аутентификация Google предназначена только для веб-приложений и не влияет на функциональность веб-API.

Есть предложения?

Ответы [ 2 ]

0 голосов
/ 08 июля 2019

Я бы посоветовал вам использовать Identity Server 4 в качестве поставщика удостоверений.

Ваш веб-API будет ресурсом, защищенным Identity Server.В вашем клиентском приложении при запуске процесса аутентификации в соответствии с потоком аутентификации пользователь будет перенаправлен на идентификационный сервер для аутентификации, пользователь может выбрать локальный логин пользователя db или внешний логин через аутентификацию Google.Если пользователь выберет локальную базу данных, он введет свои учетные данные на странице входа в систему сервера идентификации и подтвердит их в своей локальной базе данных.если учетные данные верны, то сервер идентификации выдаст токен и перенаправит его обратно клиентскому приложению.Если пользователь выберет внешнюю учетную запись, он будет перенаправлен на страницу входа Google для входа, идентификационный сервер выдаст токен после перенаправления из Google (получит утверждения от токена, выданного Google) и перенаправит обратно с токеном в клиентское приложение.

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

Документ Identity Server: http://docs.identityserver.io/en/latest & Образцы кода .

0 голосов
/ 06 июля 2019

Что вам нужно сделать, это делегировать аутентификацию пользователя внешнему провайдеру идентификации (IdP).На экране входа в систему вы обычно позволяете пользователям выбирать между использованием электронной почты / пароля или внешнего IdP (например, Google, Facebook и т. Д.).Если пользователь выберет последний вариант, IdP позаботится об «проверке личности», а затем перенаправит вам HTTP (на указанный вами URL-адрес) вместе с токеном ID, который имеет цифровую подпись и содержит некоторую информацию о пользователе (имя, email, ...)

В этом случае изменение потока приложений будет следующим:

Web APP -----> Web API ----> Data Layer----> EF Core ---->DB

   | ^
   v |

Identity Provider (e.g. Google)

Обратите внимание, что перенаправление в IdP и из него обычно основано на HTTPперенаправления.В простом номинальном случае вам не нужно вызывать IdP из уровня веб-API, хотя вы должны определить каждый поддерживаемый в качестве доверенного источника токенов ID (необходим для проверки подписи)

Шаг за шагоминструкции обычно предоставляются IdP, rf Google Sign-In и Facebook login

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...