#android #asp.net-web-api #oauth-2.0 #google-oauth #asp.net-identity-2
#Android #asp.net-web-api #oauth-2.0 #google-oauth #asp.net-identity-2
Вопрос:
Я создаю веб-сайт на asp, который использует Identity (версия 2.0), а также приложение для Android, подключенное к веб-сайту через Web API.
Я настроил Identity на использование учетных записей Google OAuth и работает довольно хорошо. Прямо сейчас я пытаюсь создать веб-API для приложения, и мне также нужно аутентифицировать мобильных пользователей.
Я дошел до того, что настроил идентификацию для управления токенами на предъявителя для api. Но для выполнения входа в систему единственный способ, который я нашел, — это использовать пользователя и пароль, как указано в документации:
grant_type=passwordamp;username=useramp;password=pass
Или выполните вызов OAuth через Интернет.
Поскольку Android также управляет Google OAuth. Есть ли способ настроить идентификацию для выполнения входа с помощью Google Oauth?
Я не нашел способа управлять внешними токенами на предъявителя или использовать токены аутентификации Google для выполнения подписи с помощью Web Api с идентификатором.
Возможно, я что-то недопонимаю.
Заранее благодарю.
Комментарии:
1. Отличный вопрос, я рад, что вы сами узнали ответ. Пожалуйста, напишите решение в ответе на свой собственный вопрос. Я проголосую за это! 🙂
Ответ №1:
Хорошо, каким-то образом я нашел, как это сделать.
- В Android получите идентификационный токен, используя scope audience:server: как в документах Google «Аутентификация и авторизация учетных записей».
- Отправьте конечному элементу токена веб-API в качестве пользователя адрес электронной почты и в качестве пароля токен.
grant_type=пароль и имя пользователя={электронная почта}и пароль={GoogleToken}
- В моем классе extendend из OAuthAuthorizationServerProvider на сервере я добавил проверку токена как из репозитория github googleplus / gplus-verifytoken-csharp в метод GrantResourceOwnerCredentials
- Если токен действителен, я могу заполнить UserLoginInfo и найти пользователя с помощью UserManager.
Затем продолжается обычная аутентификация, и пользователь проходит проверку подлинности в качестве обычного.
В любом случае, я думаю, что должен быть более элегантный способ сделать это.