Разрешает ли Tipfy любую аутентификацию OpenID?
Если вы хотите аутентифицировать любой URL-адрес OpenID с помощью Tipfy, вы не можете сделать это из коробки.
Одна из основных причин заключается в том, что у Tipfy нет механизма обнаружения для извлечения конечной точки OpenID из заданного URL-адреса пользователя OpenID.
Что отсутствует в Tipfy?
Tipfy не допускает точку b. следующего рабочего процесса:
a. пользователь отправляет foo.blogspot.com
b. , которую извлекает фреймворк foo.blogspot.com
получение конечной точки OpenId со страницы html:
<link rel="openid.server" href="http://www.blogger.com/openid-server.g" />
c. платформа перенаправляет пользователя на страницу удаленного входа в систему.
What Tipfyдействительно предлагает?
Tipfy openid расширение * просто предлагает OpenIdMixin
, который является просто базовым классом, полезным для построения поддержки OpenID для конкретной платформы(Например, Google).
Действительно, класс GoogleMixin
расширяется OpenIdMixin
:
class GoogleMixin(OpenIdMixin, OAuthMixin):
"""A :class:`tipfy.RequestHandler` mixin that implements Google OpenId /
OAuth authentication.
и имеетКонечная точка Google OpenID жестко привязана:
_OPENID_ENDPOINT = 'https://www.google.com/accounts/o8/ud'
Имя OpenIdMixin
немного вводит в заблуждение рядом с именами других классов, таких как GoogleMixin
, FriendFeedMixin
, FaceBookMixin
и т. д .;строка документа должна быть более понятной, чтобы указать, что класс должен быть просто расширен как базовый класс и не использоваться напрямую.
Что необходимо для поддержки любого URL-адреса OpenID в приложении, использующем Tipfy?
Вы должны использовать ту же самую пользовательскую библиотеку пользователей , которую Google App Engine принял для поддержки OpenID; здесь исходный код и здесь живой пример.
В частности, более подробно рассмотрим файл openid.consumer.consumer.py
и то, как происходит обнаружение XRDS / OpenID;Я думаю, что после некоторой работы вы сможете интегрировать эту часть в Tipfy OpenIdMixin
.
* код OpenID перенесен из tornado.auth