嗨,大家好,我們正在Windows Azure上運行從頭構建ASP.NET MCV 3應用程序。 關於認證和授權層,我們正在考慮使用訪問控制服務。 我經歷了一些關於ACS的文章,在那裏我得到了基本的想法,但我仍然對它有一些疑問。Azure ACS - 最佳實踐實施
我的理解是,使用ACS我們將認證過程外包給一個或多個身份提供商(IP),基本上我們相信另一個系統(即Microsoft Live ID)來認證我們的用戶。 基本過程非常簡單:在身份驗證階段,我們將用戶重定向到ACS(我們稱之爲「可信」IP),將用戶(通過有效令牌)重定向到ACS並最終重定向到我們的應用程序。 這裏有很多問題......
由於我們不希望所有擁有Live ID帳戶的用戶都可以訪問我們的應用程序,我認爲應該有另一個流程來驗證該用戶並檢查他是否已註冊在我們的應用中。 問題在哪裏? 在ACS或我們的應用程序中。?
我對此有一個想法,但我不知道它是否是正確的方式: 在註冊階段,系統(我們的Web應用程序)詢問用戶哪個IP(即Live ID,Google, Facebook和我們的應用程序),他想用它在應用程序中對自己進行身份驗證。 然後用戶通過IP系統上的認證過程,當他回來時,我們將他的用戶名(IP用戶名)存儲在我們的數據庫中。 因此,下一次,在驗證階段,我們可以檢查用戶是否在我們的系統中註冊。
如果上述理論是正確的,那意味着在我們的應用程序。我們需要建立我們的會員供應商來存儲來自IP和選擇我們的應用的用戶的用戶名。作爲IP。 我正確嗎? 設計上述過程的最佳做法是什麼?
現在我們來談談授權和「角色」。 它如何與ACS協同工作? ACS是否爲每個用戶管理多個角色?
我的理解是,我可以通過ACS創建許多與IP相關的「規則組」,而不是一個用戶。 如果這是正確的,我們如何管理用戶在我們的應用程序角色? 比方說,我們有多個角色,我們的用戶可以與這些角色相關聯,我們可以使用ASC來管理它嗎?
所以最後的問題是: ACS本身是否覆蓋了整個認證和授權流程? 我們是否仍需要使用.net會員供應商? 爲了滿足我們的要求,最佳做法是什麼?
非常感謝您的貢獻。
Andrew非常感謝您的回答。所以關於ACS中的角色我是正確的,基本上我們不能將用戶關聯到角色,就像我們在.net成員資格提供者(UsersInRoles)中所做的那樣,但是我們可以將基於IP的角色關聯起來。 在註冊階段怎麼樣?我們應該在數據庫中存儲什麼,以便在認證階段識別用戶(作爲我們客戶的一部分)? – Francesco 2012-02-01 08:41:50
不,我要說的是** **可以**將用戶與使用ACS的角色相關聯。我已經擴大了我的迴應以覆蓋這一點。 – 2012-02-01 18:18:13