我有一個應用程序,我想要使用活動目錄與個人身份驗證從身份在MVC應用程序。 這個想法是我希望每個用戶都可以使用帶有AD憑據的表單登錄。 並使用Identity管理角色和權限。 我正在努力與歐文,現在我可以用AD進行身份驗證。但我不能爲用戶分配角色或聲明,因爲我的數據庫中沒有他們。 如何將身份驗證與AD和角色以及個人身份驗證聲明結合起來? 我用這個tuto進行AD認證。 http://tech.trailmax.info/2016/03/using-owin-and-active-directory-to-authenticate-users-in-asp-net-mvc-5-application/身份與活動目錄表單ASP.NET MVC 5
1
A
回答
2
瞭解此帖舊;但是,想分享我所做的工作。基本想法是用AD進行驗證。然後複製Identity中的憑據並將現有的Identity角色應用於新的登錄名。 雖然理解,但如果系統要求更改AD密碼,則會導致問題。 AD的密碼不會使用此代碼更新Identity。
其他要考慮的事情是使用AD的組和角色,而不是Identity的。
我從一個實現OWIN和Identity 2.0的應用程序開始。然後我按照上面提到的教程來添加AD身份驗證。自從我開始使用Identity和OWIN以來,所有登錄代碼都已就位。
- 我引用System.DirectoryServices.AccountManagement
- 創造了他AdAuthenticationService類
規範的LoginController我存在於的AccountController。在模型驗證之後和身份驗證代碼之前,我將以下代碼放入公共異步任務登錄(LoginViewModel模型,字符串returnUrl)中。請注意,我在他的代碼塊中刪除了返回。如果AD身份驗證正常,我希望它繼續通過身份驗證。如果沒有,它會在返回到登錄視圖時列出所有'錯誤'。
var authenticationManager = HttpContext.GetOwinContext().Authentication; var authService = new AdAuthenticationService(authenticationManager); var authenticationResult = authService.SignIn(model.UserName, model.Password); if (authenticationResult.IsSuccess) { ModelState.AddModelError("", "AD Authenticated: " + model.UserName); // we are in // check to see if user exixts in AspNetUsers. If not, add with default role. var inAsp = UserManager.Users.Any(x => x.UserName == model.UserName); if (!inAsp) { ModelState.AddModelError("", "Did not find User: " + model.UserName); var newUser = new ApplicationUser { UserName = model.UserName, Email = model.UserName + "@a_company.com" }; ModelState.AddModelError("", "Set new user " + model.UserName); // Add the AD user as an Identity user so we can relate a role to AD Login. var chkUser = UserManager.Create(newUser, model.Password); ModelState.AddModelError("", "Created new user: " + model.UserName + " Error: " + string.Join("\n", chkUser.Errors.ToArray())); //Add default User to Role Admin if (chkUser.Succeeded) { ModelState.AddModelError("", "Created Identity user: " + newUser.UserName); var result1 = UserManager.AddToRole(newUser.Id, "PM"); if (result1.Succeeded) ModelState.AddModelError("","Added PM role to user: " + newUser.UserName); } } }
陷阱是:
- 不具有在IdentityConfig.cs文件匹配的廣告的密碼驗證標準的密碼驗證。
- 沒有將我的AppPool標識設置爲LocalSystem。
共享視圖_LoginPartial.cshtml和_Layout.cshtml已經正確編碼。
相關問題
- 1. MVC 5身份驗證使用沒有單一登錄的活動目錄
- 2. ASP.NET MVC 5身份和Azure
- 3. ASP.NET MVC 5身份屬性
- 4. 將活動目錄組與Windows身份驗證aspnet mvc 3
- 5. Asp.net網頁與Windows身份驗證aganst活動目錄
- 6. 集成ASP.NET MVC 5身份和身份驗證與ServiceStack 4
- 7. 使用ASP.NET MVC 5身份進行單點登錄
- 8. ASP.NET MVC 5沒有表單身份驗證的單點登錄模式
- 9. 配置活動目錄成員身份
- 10. ASP.NET MVC身份登錄值
- 11. Sharepoint活動目錄表單身份驗證
- 12. ASP.NET MVC + Silverlight +表單身份驗證
- 13. 活動目錄+ HTTP身份驗證
- 14. 活動目錄身份驗證
- 15. ASP.NET MVC與表單身份驗證和WebApi與基本身份驗證
- 16. 集成ASP.NET MVC 2和活動目錄以及Windows身份驗證
- 17. ASP.NET MVC 5 OWIN區域身份驗證
- 18. ASP.NET MVC 5身份AddUserToRole不起作用
- 19. ASP.NET 5 MVC 6 + Rest API身份
- 20. ASP.NET MVC 5和WebAPI 2身份驗證
- 21. MVC 5 ASP.NET身份和信號R
- 22. 與asp.net的活動目錄
- 23. ASP.NET身份2.0與ASP.NET MVC 2
- 24. ASP.NET窗體身份驗證和活動目錄模擬
- 25. 活動目錄asp.net窗體身份驗證3
- 26. 如何在活動目錄中使用ASP.NET身份驗證?
- 27. 使用Asp.net Windows身份驗證的活動目錄
- 28. Asp.net Mvc身份
- 29. ASP.NET身份登錄
- 30. 修改登錄MVC 5 Asp身份
這取決於您在開始項目時選擇的內容。如果您選擇活動目錄,則很難實現,因爲在初始選擇後,MVC項目中的身份驗證很難修改。 – stink