2013-04-04 28 views
0

我已經使用Microsoft預定義的模板在Visual Studio中啓動了ASP.NET網站。這是爲了幫助我瞭解ASP.NET中的OpenID。DotNetOpenAuth示例中ProviderUserName列的用途

在示例站點內包含的SQL數據庫中,有一個名爲UsersOpenAuthAccounts的表,其中包含一個名爲ProviderUserName的列。

任何人都可以告訴我這個專欄的目的嗎?在我的測試中,這似乎存儲了我將登錄到OpenID網站的用戶名(例如我的Google用戶名 - 我的電子郵件地址)。但是,我也看到ProviderUserId列保存了值IAuthenticationResponse.ClaimedIdentifier,例如,

https://www.google.com/accounts/o8/id?id=AIt................g3c 

...這將被用於識別用戶針對未來請求的OpenID提供者。

因此,包括ProviderUserName列是否有任何意義?它實際上並未在Microsoft示例站點的其他地方使用。

回答

1

ProviderUserName是一個壞主意(IMO)。

OpenID聲明的標識符是檢查返回用戶的正確字符串。它降低了使用其他任何東西的安全性,包括電子郵件地址如果你只對OpenID登錄感興趣,那麼你可能只想拋出ASP.NET提供的代碼,直接使用DotNetOpenAuth的OpenIdRelyingParty並自己處理用戶表。它將與您當前的代碼一樣簡單,但沒有不必要的列。

ASP.NET團隊的額外列和外觀類爲您提供了將OpenID登錄與OAuth登錄混合的功能,這些登錄允許您在您的站點接受Twitter和Facebook帳戶。 OAuth沒有被設計成一個認證協議,所以使用它的人必須自己構建一個用戶名的想法。爲了使其具有全球唯一性,必須以發佈該用戶名的提供商爲前綴。所以你有ProviderName(「twitter」或「google」)和一個ProviderUsername,它是來自OAuth服務提供者的賬戶的用戶名(或者用戶標識)。

+0

「直接使用DotNetOpenAuth的OpenIdRelyingParty並自己處理用戶表」。是的,這是我的計劃,因爲我正在將OpenId功能集成到已經具有權限的現有應用程序中。感謝您提供非常明確的答案。 – EvilDr 2013-04-05 07:53:55

相關問題