Аутентификация с использованием любого OpenID с Tipfy - PullRequest
9 голосов
/ 31 января 2011

Я разрабатываю часть аутентификации своего приложения, и у меня возникли проблемы с аутентификацией кодирования с использованием OpenID.

Я посмотрел пример кода Tipfy, но он написан в предположении, что поставщик OpenID жестко запрограммирован в Google.

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

Есть ли у кого-нибудь пример кода, который показывает, как пользователь входит в систему, используя предоставленный пользователем OpenID?

Ответы [ 2 ]

6 голосов
/ 31 января 2011

Разрешает ли 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

2 голосов
/ 31 января 2011

Этот код является лишь примером. Вам просто нужно позволить пользователю указать URL-адрес конечной точки своего провайдера OpenID через форму и получить значение из POST. Это просто строка.

...