我寫過一個網站,使用Owin使用標準登錄表單進行登錄。這工作正常。每個客戶都在其服務器上擁有自己的網站版本,並使用不同的web.config值,因此它們的行爲方式均符合各自的要求。MVC ASP.Net本地Active Directory登錄
我現在被要求提供一個版本,通過檢索他們的Windows ID自動登錄用戶,然後使用它從本地Active Directory獲取他們的詳細信息。
我有一個腳本會做到這一點,但我很難調用它。
我想保留儘可能多的代碼,因此我可以繼續使用User和UserManager對象。
我希望有可能修改Startup.Auth.cs腳本中的某些內容,以便不使用LoginPath作爲CookieAuthenticationOptions,而是指向我的Active Directory腳本。
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Account/Login"),
Provider = new CookieAuthenticationProvider
{
// Enables the application to validate the security stamp when the user logs in.
// This is a security feature which is used when you change a password or add an external login to your account.
OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
validateInterval: TimeSpan.FromMinutes(30),
regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
}
});
不幸的是更換與Active Directory腳本的路徑LOGINPATH導致無限循環,導致查詢字符串是針對瀏覽器的錯誤太長。
我已設置IIS有: 匿名身份驗證:禁用,ASP.Net模擬:啓用,窗體身份驗證:禁用,Windows身份驗證:啓用
我一直停留在此爲過去的5天,以便任何幫助將不勝感激。謝謝。
感謝您的答案列表。唯一不是'UseWindowsAzureActiveDirectoryBearerAuthentication'僅適用於Azure Active Directory,而我需要連接到存儲在本地服務器上的Active Directory? – spaceduk
要添加更多詳細信息,我正在使用LDAP連接字符串連接到Active Directory – spaceduk
對不起,我的錯。在這種情況下,只需創建您自己的提供程序,它將根據您的AD檢查用戶名和密碼,並將其添加到appBuilder中的CookieAuthenticationOptions對象。您的提供者類應該繼承CookieAuthenticationProvider並覆蓋您需要的登錄方法。在這裏你可以找到可用的方法列表https://msdn.microsoft.com/en-us/library/microsoft.owin.security.cookies.cookieauthenticationprovider(v=vs.113).aspx – hellwd