我正在开发我的应用程序的身份验证部分,并且我遇到了使用OpenID进行编码身份验证的问题。
我查看了Tipfy示例代码,但似乎是在假设OpenID提供程序是硬编码为google的情况下编写的。
我希望用户能够提供他们想要的任何OpenID(不是重点吗?)。
有没有人有任何示例代码显示用户使用用户提供的OpenID登录?
答案 0 :(得分:6)
Tipfy是否允许任何OpenID身份验证?
如果您要使用Tipfy对任何OpenID Url进行身份验证,您不能这样做开箱即用。
一个主要原因是因为Tipfy没有任何发现机制来从给定的OpenID用户URL检索OpenID端点。
缺少什么Tipfy?
Tipfy不允许以下工作流程的 b。点:
a。用户提交foo.blogspot.com
b。框架从html页面检索foo.blogspot.com
获取OpenId端点:
<link rel="openid.server" href="http://www.blogger.com/openid-server.g" />
c。框架将用户重定向到远程登录页面。
Tipfy真正提供了什么?
Tipfy openid扩展名 * 只提供OpenIdMixin
,这只是一个基类,可用于构建对特定平台(例如Google)的OpenID支持。 />
实际上,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
等其他类名称附近有点误导;
文档字符串应该更清楚,以指定该类应该只是作为基类扩展而不是直接使用。
使用Tipfy,您需要在应用程序中支持任何OpenID网址?
您应该使用Google App Engine采用的相同消费者用户区域库来提供OpenID支持; here源代码和here实例。
具体而言,仔细查看openid.consumer.consumer.py
文件以及XRDS / OpenID发现的发生方式;我认为,通过一些工作,您应该能够将此部分集成到Tipfy OpenIdMixin
。
* OpenID代码从tornado.auth
移植答案 1 :(得分:2)
该代码只是一个例子。您只需要允许用户通过表单指定其OpenID提供程序的端点URL,并从POST获取值。这只是一个字符串。