我正在開發我的應用程序的身份驗證部分,我遇到了使用OpenID進行編碼身份驗證的問題。使用任何OpenID與Tipfy身份驗證
我已經看過Tipfy示例代碼,但它似乎是在假設OpenID提供程序是硬編碼到Google的情況下編寫的。
我希望用戶能夠提供他們想要的任何OpenID(是不是那個點?)。
有沒有人有任何示例代碼顯示用戶使用用戶提供的OpenID登錄?
我正在開發我的應用程序的身份驗證部分,我遇到了使用OpenID進行編碼身份驗證的問題。使用任何OpenID與Tipfy身份驗證
我已經看過Tipfy示例代碼,但它似乎是在假設OpenID提供程序是硬編碼到Google的情況下編寫的。
我希望用戶能夠提供他們想要的任何OpenID(是不是那個點?)。
有沒有人有任何示例代碼顯示用戶使用用戶提供的OpenID登錄?
Tipfy是否允許任何OpenID身份驗證?
如果您想用Tipfy驗證任何OpenID Url,您不能這樣做開箱即用。
一個主要原因是因爲Tipfy沒有任何發現機制從給定的OpenID用戶url檢索OpenID端點。
什麼Tipfy丟失?
Tipfy不允許點b。以下工作流程:
a。用戶提交foo.blogspot.com
b。框架檢索foo.blogspot.com
獲得從HTML頁面的OpenID端點:
<link rel="openid.server" href="http://www.blogger.com/openid-server.g" />
℃。該框架將用戶重定向到遠程登錄頁面。
Tipfy真的提供什麼?
的Tipfy openid擴展*只需提供OpenIdMixin
,這只是一個基類建設OpenID的支持,以特定的平臺很有用(谷歌爲例)。
事實上,GoogleMixin
類擴展OpenIdMixin
:
class GoogleMixin(OpenIdMixin, OAuthMixin):
"""A :class:`tipfy.RequestHandler` mixin that implements Google OpenId/
OAuth authentication.
它具有谷歌OpenID端點硬繩:
_OPENID_ENDPOINT = 'https://www.google.com/accounts/o8/ud'
名稱OpenIdMixin
有點接近其他類的名字誤導像GoogleMixin
,FriendFeedMixin
,FaceBookMixin
等等; docstring應該更加清楚,指定該類應該僅作爲基類擴展,而不能直接使用。
你需要什麼來支持你的應用程序中使用Tipfy的任何OpenID網址?
您應該使用Google App Engine已經採用的相同的消費者用戶庫提供OpenID支持; here源代碼和here一個實例。
具體來說,仔細看看openid.consumer.consumer.py
文件以及XRDS/OpenID發現是如何發生的;我認爲通過一些工作,你應該能夠將這部分整合到Tipfy OpenIdMixin
中。
*中的OpenID碼從tornado.auth
謝謝,它似乎是一個很好的解釋 – 2011-02-06 23:10:45
移植該代碼僅僅是一個例子。您只需要允許用戶通過表單指定其OpenID提供程序的端點URL,並從POST中獲取該值。這只是一個字符串。
你在看什麼樣的代碼? – Gareth 2011-01-31 13:45:17
@Gareth:http://www.tipfy.org/wiki/extensions/auth/openid/ – 2011-01-31 14:16:46