می خواهم یک برنامه وب را با فرم ورود به سیستم ایجاد کنم و با حساب Active Directory تأیید اعتبار کنم. کاربران ما گاهی اوقات از دستگاهی استفاده می کنند که کاربران قادر به ورود به سیستم نیستند ، بنابراین ما نمی خواهیم از [احرازهویتویندوز استفاده کنیم.

نحوه تنظیم آن در حال حاضر این است:

 [HttpPost]
 [AllowAnonymous]
 [ValidateAntiForgeryToken]
  عمومی ActionResult ورود (ورودViewModel vm)
 {
     // برخی جزئیات را برای خوانایی حذف کرد

    اگر (principalContext.ValidateCredentials (vm.username ، vm.password))
    {
        userPrincipal = UserPrincipal.FindByIdentity (principalContext، IdentityType.SamAccountName، vm.username)؛
    }

    اگر (userPrinciipal! = صفر)
    {
        TempData ["username"] = userPrincipal.LogonName؛
        بازگشت RedirectToAction ("PageForValidatedUser")؛
    }
}


اقدام عمومیResult PageForValidatedUser ()
{
    if (TempData ["username"] == تهی)
    {
        بازگشت RedirectToAction ("ورود")؛
    }
        string username = TempData ["username"] .ToString ()؛
        ValidatedUser vu = GetUserInfoByUsername (نام کاربری)؛
        ViewModel vm = SetupViewModel (vu)؛
        Return View (vm)؛
    }
}

و در web.config و در IIS ، آن را به تأیید هویت ناشناس تنظیم کردم.

   

تأیید هویت با این روش "خوب کار می کند" ، اما من نمی دانم اگر با تأیید اعتبار فرم (مانند این یا این) با استفاده از موارد زیر ، امنیت بیشتری داشته باشید. ویژگی ها:

  • FormsAuthentication.SetAuthCookie for login
  • FormAuthentication.SignOut for logout
  • loginUrl and [Authorize]