簡體   English   中英

Asp.net MVC 3 Windows身份驗證與登錄表單

[英]Asp.net mvc 3 Windows Authentication with Login form

我已經創建了表單身份驗證應用程序。 我有用戶表,並創建了一個自定義成員資格提供程序。 我的用戶表與其他表有關系,例如角色和權限。

  1. 我將其更改為使用Windows身份驗證可以工作。 看起來很簡單,但是我不知道如何仍然能夠從表中讀取權限? 一些表與User表相關,並且需要用戶ID,在這里該怎么做? 我應該打破外鍵嗎?

  2. 如果用戶正在通過LAN訪問該頁面,則他/他應該被自動登錄,但是如果他們通過Internet訪問該應用程序,我應該允許他們登錄嗎? 這個怎么做? 他們應該使用什么密碼登錄(活動目錄或我的用戶表)?

我希望我能得到簡單容易的答案。

問候

如果您使用Windows身份驗證,則將提示用戶輸入憑據,僅用於訪問您的站點。 您將無法防止這種情況。 在通過身份驗證之前,他們甚至不會進入您的代碼。

盡管我從未將其綁定到Windows身份驗證,但我們已經使用SSO(單點登錄)完成了類似的操作。 這樣的想法是,您有兩個共享用戶憑據的應用程序,並且如果登錄到一個,則登錄到另一個。 第一個應用程序是支持基於表單的身份驗證的普通應用程序。 第二個是僅執行Windows身份驗證的應用程序,然后在成功登錄后重定向到您的普通應用程序。 由於您已經通過身份驗證,因此普通應用程序只需創建它的標准身份驗證cookie,然后將您帶到應用程序的主頁。

通常,這些方法是通過在URL中傳遞令牌來進行的,然后您可以通過反向通道將令牌贖回到SSO服務器(或Windows身份驗證服務器)中,以確認令牌是真實的。 如果成功兌換了令牌,則對反向通道調用的響應將包含用戶名和其他相關詳細信息。

該過程的草圖可能如下所示:

  1. 獲取對現場受保護操作的請求。
  2. 如果未通過身份驗證,則無需令牌即可重定向到登錄站點
    • 您的登錄站點包含基於表單的登錄表單和Windows身份驗證URL的鏈接。
  3. 用戶單擊Windows身份驗證URL
  4. Windows身份驗證站點進行身份驗證,在數據庫中為用戶創建一次性使用令牌,然后使用令牌重定向回您的登錄操作
  5. 您的登錄操作通過反向通道WebRequest將令牌贖回到Windows身份驗證服務器。
  6. Windows身份驗證服務器驗證令牌,將其標記為已使用,然后將用戶名返回到您的登錄操作。
  7. 您的登錄操作將創建標准表單身份驗證cookie,然后繼續正常進行。
  1. 在控制器中,您可以使用User.Identity.Name來獲取用戶的AD用戶名。 然后,可以將一個名為ADUSername的字段添加到用戶表(或更新現有用戶名字段中的值),以便可以將登錄的用戶鏈接到數據庫中的現有用戶記錄。

  2. 您無需執行任何操作,如果用戶正在從外部網絡或不在域中的任何計算機上訪問它,則瀏覽器將彈出用戶名/密碼提示。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM