How to use Windows Active Directory Authentication and Identity Based Claims?

前端 未结 5 1976
一向
一向 2020-12-07 12:21

Problem

We want to use Windows Active Directory to authenticate a user into the application. However, we do not want to use Active Directory groups to manage autho

5条回答
  •  甜味超标
    2020-12-07 12:59

    Shoe your solution above pushed me toward a direction that worked for me on MVC6-Beta3 Identityframework7-Beta3 EntityFramework7-Beta3:

    // POST: /Account/Login
    [HttpPost]
    [AllowAnonymous]
    [ValidateAntiForgeryToken]
    public async Task Login(LoginViewModel model, string returnUrl = null)
    {
        if (!ModelState.IsValid)
        {
            return View(model);
        }
    
        //
        // Check for user existance in Identity Framework
        //
        ApplicationUser applicationUser = await _userManager.FindByNameAsync(model.eID);
        if (applicationUser == null)
        {
            ModelState.AddModelError("", "Invalid username");
            return View(model);
        }
    
        //
        // Authenticate user credentials against Active Directory
        //
        bool isAuthenticated = await Authentication.ValidateCredentialsAsync(
            _applicationSettings.Options.DomainController, 
            _applicationSettings.Options.DomainControllerSslPort, 
            model.eID, model.Password);
        if (isAuthenticated == false)
        {
            ModelState.AddModelError("", "Invalid username or password.");
            return View(model);
        }
    
        //
        // Signing the user step 1.
        //
        IdentityResult identityResult 
            = await _userManager.CreateAsync(
                applicationUser, 
                cancellationToken: Context.RequestAborted);
    
        if(identityResult != IdentityResult.Success)
        {
            foreach (IdentityError error in identityResult.Errors)
            {
                ModelState.AddModelError("", error.Description);
            }
            return View(model);
        }
    
        //
        // Signing the user step 2.
        //
        await _signInManager.SignInAsync(applicationUser,
            isPersistent: false,
            authenticationMethod:null,
            cancellationToken: Context.RequestAborted);
    
        return RedirectToLocal(returnUrl);
    }
    

提交回复
热议问题