2009-12-18 67 views
0

我的網站可以從多個域(我自己的博客引擎)訪問。那麼,我如何交叉認證?ASP.NET - 針對多個域的驗證

我正在使用:IIS7,C#,asp.net會員,表單身份驗證。

+0

您是試圖同時驗證所有域還是允許來自多個域的用戶? – GrayWizardx 2009-12-18 17:04:42

+0

對不起,錯字。域名,我的意思是網站域名。 – complez 2009-12-18 17:14:25

+0

是的,那扔了我,和你的'交叉認證'。請參閱我答案的第二部分。 – 2009-12-18 17:16:41

回答

2

如果您使用的是Active Directory(假設您指的是域),則可以簡單地配置多個ActiveDirectoryMembershipProvider部分並使用asp:Login控制模板,爲要驗證的域添加下拉列表,然後打開Login控件的OnAuthenticate事件,請設置所選的AD成員資格提供程序。

對於不同的提供商,如SQL Server會員提供商,我不知道我明白了問題所在。你能詳細說明嗎?

在我試圖再次讀你的問題幾次後,我會猜測這裏。如果對於「多個域」,則表示您有多個網站(多個完全限定的域名),並且您希望使用相同的SQL Server數據存儲對用戶進行身份驗證,並運行相同的網站,則解決方案應指向相應的DNS記錄到原始託管服務器的IP地址。 任何體面的域名註冊商都應允許您更改DNS記錄。

但是,Forms Auth創建一個cookie,並且由於明顯的安全問題,您將無法從不同於您所在的域讀取該cookie,因此在這種情況下,您會被卡住。

我能看到的唯一可能性是你在查詢字符串中傳遞了一些加密的身份,但這是非常非常狡猾的,因爲你打算確保它有一個最小的有效時間限制一個權利的蠕蟲(安全漏洞)。可能不推薦。

Crikey,這是一個說「不,你不能 - 安全」的很長一段路。

如果正在談論sub域名而不是關於不同的頂級域名,那麼您實際上可以這樣做,請參閱this post

+0

他說這是窗體身份驗證... – 2009-12-18 16:58:36

+0

是的,ActiveDirectoryMembershipProvider只是插入到Forms Auth的另一個成員資格提供程序。 – 2009-12-18 17:00:30

+0

@Wim Hollebrandse:我正在使用SqlMembershipProvider? – complez 2009-12-18 17:04:56