2011-01-31 54 views
9

我正在開發我的應用程序的身份驗證部分,我遇到了使用OpenID進行編碼身份驗證的問題。使用任何OpenID與Tipfy身份驗證

我已經看過Tipfy示例代碼,但它似乎是在假設OpenID提供程序是硬編碼到Google的情況下編寫的。

我希望用戶能夠提供他們想要的任何OpenID(是不是那個點?)。

有沒有人有任何示例代碼顯示用戶使用用戶提供的OpenID登錄?

+1

你在看什麼樣的代碼? – Gareth 2011-01-31 13:45:17

+2

@Gareth:http://www.tipfy.org/wiki/extensions/auth/openid/ – 2011-01-31 14:16:46

回答

6

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有點接近其他類的名字誤導像GoogleMixinFriendFeedMixinFaceBookMixin等等; docstring應該更加清楚,指定該類應該僅作爲基類擴展,而不能直接使用。

你需要什麼來支持你的應用程序中使用Tipfy的任何OpenID網址?

您應該使用Google App Engine已經採用的相同的消費者用戶庫提供OpenID支持; here源代碼和here一個實例。

具體來說,仔細看看openid.consumer.consumer.py文件以及XRDS/OpenID發現是如何發生的;我認爲通過一些工作,你應該能夠將這部分整合到Tipfy OpenIdMixin中。

*中的OpenID碼從tornado.auth

+0

謝謝,它似乎是一個很好的解釋 – 2011-02-06 23:10:45

2

移植該代碼僅僅是一個例子。您只需要允許用戶通過表單指定其OpenID提供程序的端點URL,並從POST中獲取該值。這只是一個字符串。