使用任何带有Tipfy的OpenID进行身份验证

Noa*_*ith 9 python openid google-app-engine tipfy

我正在开发我的应用程序的身份验证部分,我遇到了使用OpenID编码身份验证的问题.

我查看了Tipfy示例代码,但似乎是在OpenID提供程序硬编码为google的假设下编写的.

我希望用户能够提供他们想要的任何OpenID(这不是重点吗?).

有没有人有任何示例代码显示用户使用用户提供的OpenID登录?

sys*_*out 6

Tipfy是否允许任何OpenID身份验证?

如果您想使用Tipfy对任何OpenID Url进行身份验证,则无法开箱即用.
一个主要原因是因为Tipfy没有任何发现机制来从给定的OpenID用户URL检索OpenID端点.

什么Tipfy缺少?

Tipfy不允许b.以下工作流程:
一.用户提交foo.blogspot.com
b.框架检索foo.blogspot.com从html页面获取OpenId端点:

<link rel="openid.server" href="http://www.blogger.com/openid-server.g" />
Run Code Online (Sandbox Code Playgroud)

C.框架将用户重定向到远程登录页面.

Tipfy真正提供的是什么?

Tipfy openid扩展*只是提供了OpenIdMixin一个基类,可用于构建对特定平台(例如Google)的OpenID支持.
确实,GoogleMixin课程延伸OpenIdMixin:

class GoogleMixin(OpenIdMixin, OAuthMixin):
    """A :class:`tipfy.RequestHandler` mixin that implements Google OpenId /
    OAuth authentication.
Run Code Online (Sandbox Code Playgroud)

它的Google OpenID端点硬盘:

_OPENID_ENDPOINT = 'https://www.google.com/accounts/o8/ud'
Run Code Online (Sandbox Code Playgroud)

这个名字OpenIdMixin是附近像其他类的名字有点误导GoogleMixin,FriendFeedMixin,FaceBookMixin等等; 文档字符串应该更清楚,以指定该类应该只是作为基类扩展而不是直接使用.

使用Tipfy,您需要在应用程序中支持任何OpenID网址?

您应该使用Google App Engine 采用的相同的消费者用户区库来提供OpenID支持; 这里是源代码,这里是一个实例.

具体而言,仔细查看openid.consumer.consumer.py文件以及XRDS/OpenID发现的发生方式; 我认为,通过一些工作,您应该能够将此部分集成到Tipfy中OpenIdMixin.

*OpenID代码从tornado.auth移植