Приложения Google входят в систему в django

Я разрабатываю django приложение, которое интегрируется с приложениями Google. Я хотел бы позволить пользователям войти в систему с их учетными записями приложений Google (учетные записи в Google разместили домены, не учетные записи Google), таким образом, они могут получить доступ к своим документам, календарю и этажерке.

Чтобы сделать это, я загрузил и начал использовать django_openid_auth (и таким образом, python-openid).

Во-первых, для тестирования его я использовал этот URL в своих настройках:

OPENID_SSO_SERVER_URL = 'https://www.google.com/accounts/o8/id'

И с этим мне удалось перенаправить пользователя к странице учетных записей Google, чтобы войти в систему и затем возвратиться к моему собственному домену с циклом аутентификации, описанным людьми Google, успешно завершенными. Однако для входа в систему в учетные записи Google мало полезно для меня, поскольку я хотел бы пользователей, у которых есть учетная запись приложений Google в их размещенном домене - но не учетная запись Google - для входа в систему с. Чтобы сделать это, я прочитал статью Google об открытии "Обнаружение Конечных точек OpenID для Размещенных Доменов" и изменил вышеупомянутые настройки к:

OPENID_SSO_SERVER_URL = 'https://www.google.com/accounts/o8/site-xrds?hd=.com'

- где, очевидно, мой фактический домен;)

Но бэкенд ответил следующим сообщением:

Аутентификация OpenID перестала работать: состояние HTTP Response от хоста URL идентификационных данных не 200. Получил состояние 404

Отлаживая немного, мне удалось узнать, что код в python-openid (версия 2.2.4) является тем, который неправильно истолковывает ответ от Google, но я вполне в потере здесь.

Я видел аутентификацию в своей собственной доменной работе в socialwok.com и puffypoodles.com, Таким образом, я совершенно уверен, что подлинный цикл для моих работ домена приложений Google, но так или иначе python-openid, может казаться, не завершает его (хотя, и я повторяю, это работает просто великолепно с простыми учетными записями Google).

Я должен попытаться исправить python-openid или являюсь там другим способом зафиксировать это? Кому-либо успешно удалось войти в систему с приложениями Google в чистом django приложении (не в механизме приложения Google)?

10
задан 22 February 2010 в 19:37
поделиться

1 ответ

Согласно http://groups.google.com/group/google-federated-login-api/web/openid-discovery-for -hosted-domains , Google немного изменил способ обнаружения IdP и проверки XRDS пользователей, чтобы предоставить пользователям Google Apps openid в виде http://example.com/openid?id=108441225163454056756 форматировать, не прося пользователей создать свои собственные серверы openid. Для небольших компаний люди могут получить свой openid в своем домене с помощью всего лишь доменного имени, если они используют Google Apps.

Это может быть хорошим подходом, потому что люди могут использовать свою учетную запись Google Apps для аутентификации, и они по-прежнему могут выдавать openid в своем собственном домене, для которого они могут изменить серверную часть аутентификации в будущем. Он прост и расширяем, но, к сожалению, он еще не стал стандартом. Итак, если вы используете стандартную библиотеку, такую ​​как python-openid, вы столкнетесь с некоторыми проблемами.

Чтобы решить эти проблемы, вам нужно самостоятельно пропатчить python-openid, чтобы следовать подходу Google.

Я сталкивался с той же проблемой раньше, и у меня есть исправленная версия python-openid v2.1.1, которая мне подходит.

Если нужно, я могу опубликовать свой код после некоторой очистки. Это был быстрый патч, так что не ждите слишком многого :)

8
ответ дан 4 December 2019 в 01:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: