我正在將Azure AD身份驗證添加到現有的MVC應用程序,在該應用程序中它使用OWIN標識從SQL數據庫驗證用戶。使用OpenId連接到Azure AD,然後模擬現有的標識用戶
數據庫用戶在具有特定規則的複雜業務中用於管理應用程序的某些部分。
我已經實現ID連接與Azure和能夠登錄,但我需要映射驗證與用戶身份的AD已經存在,那麼這個冒充的身份與登錄..
我做了這個控制器我重定向到AD身份驗證成功後:
現在應用程序確實重定向,但身份保持從AD而不是身份之一。
這段代碼有什麼問題?我該如何解決它?
if (Request.IsAuthenticated)
{
//The AD Name Identity is the user email
var email = User.Identity.Name;
//Get the user from Identity Provider
var user = UserManager.Users.FirstOrDefault(t => t.Email == email);
if(user!= null)
{
//Sign In and Authenticate User
var identity = UserManager.CreateIdentity(user, DefaultAuthenticationTypes.ApplicationCookie);
var authenticationManager = HttpContext.GetOwinContext().Authentication;
authenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = true }, identity);
var authenticationOptions = new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie
};
var app = HttpContext.GetOwinContext().Get<AppBuilderProvider>().Get();
app.UseCookieAuthentication(authenticationOptions);
return RedirectToAction("Index", "Dashboard");
}
return RedirectToAction("Index", "Dashboard");
}
您好,感謝您的回覆..我正在尋找您提到的第一種方法,因爲最後我想要做的是連接2個源AD和本地帳戶,這個想法很簡單,如果一個AD用戶驗證和這個AD用戶已經存在本地然後我想看到他的實體,配置文件,數據..等等.. 是否有我可以參考的代碼示例?謝謝 –
非常感謝託尼,我能夠在你的指示幫助下做到這一點。這是謎題的一部分,我剛剛從一個新的MVC項目模板中複製了外部登錄機制,它的工作方式和預期的一樣。 –