я перешел с Google App Engine несколько месяцев назад. Но я все еще полагаюсь на него для аутентификации, потому что мои пользователи идентифицируются по их атрибуту user_id в GAE.
Для этого мои (теперь внешние) приложения перенаправляют пользователя в приложение Google App Engine с помощью зашифрованного, подписанного запроса на вход с отметкой времени. Затем приложение GAE выполняет вход с помощью службы «Пользователи» GAE. После успешного входа в GAE пользователь снова перенаправляется с использованием зашифрованного, подписанного ответа с отметкой времени на мое внешнее приложение.Элементарную реализацию можно найти здесь и здесь . Как видите, это очень просто и зависит от тяжелой криптографии, что приводит к плохой производительности.
Мои внешние приложения, в данном случае приложения Django, хранят user_id в поле пароля таблицы пользователей. Помимо user_id, я получаю только адрес электронной почты от GAE для хранения имени пользователя и электронной почты в Django.
Теперь я хотел бы удалить зависимость от службы GAE. Первый подход, который приходит на ум, вероятно, будет заключаться в том, чтобы отправить электронное письмо каждому пользователю с просьбой установить новый пароль, а затем выполнить мою собственную аутентификацию с использованием Django.
Я бы предпочел решение, основанное на службе Google OpenID, чтобы для пользователя фактически не было разницы. Это также предпочтительнее, потому что мне все равно нужно отправить пользователя в Google, чтобы получить токены AuthSub для API Календаря Google.
Проблема в том, что я не смог найти способ получить атрибут GAE user_id данной учетной записи Google без использования GAE. OpenID и все другие протоколы аутентификации используют разные идентификаторы.
Итак, теперь возникает вопрос: предоставляет ли Google какие-либо API, которые я мог бы использовать для этой цели, которых я еще не видел? Есть ли другие возможные решения или идеи о том, как перенести учетные записи пользователей?
Заранее спасибо!