2009-04-20 54 views
3

我有一個web應用程序,我在構建ASP.NET具有以下安全性要求:思考如何廢除撰寫自定義成員資格和角色提供者的想法。意見?

  1. 必須能夠與傳回一個唯一的關鍵應用程序的主認證方案整合表示用戶已通過第三方網站登錄。
  2. 必須能夠使用現有的用戶/角色表。
  3. 可以使用表單身份驗證,並允許用戶通過單獨的登錄頁面登錄,如果他們不是第三方站點的成員。

我已經試過定製SQL作用和成員提供者,但我碰到的問題,特別是存在具有唯一標識符(providerKey)一個強類型的MembershipUser對象,沒有地方給我自己自定義密鑰集(將有兩個)標識用戶。

我是否應該廢棄我的自定義成員資格提供程序實現,而只是使用Cookie /會話呢?我真的想使用內置的功能,但它似乎不可行。

回答

1

您可能想要做的是在現有功能的頂部構建項目1,首先嚐試。隨着返回的信息,自動登錄用戶。如果第一個進程失敗,使用內置代碼進行標準認證。

我已經爲使用DotNetNuke的客戶端多次爲ASP.NET成員資格提供者構建了這種類型的系統,它工作得很好。

+0

你如何處理你想要在登錄/表單cookie中保留的自定義字段?像ID一樣,你需要從系統中提取其他數據?換句話說,您如何「添加」ASP成員提供者爲您提供的內容? – Caveatrob 2009-04-20 18:55:55

+0

我們使用成員資格提供程序中存在的配置文件屬性功能來存儲額外的數據。 – 2009-04-20 19:35:53

0

我成功拋棄了會員供應商,根本不使用它。我創建了一個新的IMembershipService接口和一個處理我的Web應用程序用戶的創建和驗證的實現。

我創建了我自己的用戶模型。這使我可以在我的應用程序中擁有靈活的角色模型。我可以自由創建上下文域角色,並將它們與實際的用戶模型分離。

這真的不那麼難。請記住鹽漬你的密碼等,並閱讀一些安全書。

您仍然可以使用此方法使用FormsAuthentication。

大多數依賴於asp.net會員提供商的系統確實是一種精神分裂症。您將擁有2個用戶表,例如在CommunityServer中,您具有aspnet_users和cs_Users,其中cs_Users引用aspnet_users的MembershipId,並在其中引入另一個UserId。它也反映了用戶名等。

相關問題