Невозможно аутентифицировать пользователей, используя двойную аутентификацию в asp.net mvc - PullRequest
1 голос
/ 07 мая 2019

Я внедряю двойную аутентификацию в asp.net mvc 5. Для внутренних пользователей аутентификация происходит через Azure AD. Для внешнего пользователя есть страница входа для входа. Когда внешний пользователь пытается получить доступ к приложению, он должен бытьперенаправлены на страницу входа.

Где я должен аутентифицировать пользователя и проверить, является ли он внутренним или внешним пользователем. Также, пожалуйста, предложите, где указать URL перенаправления для страницы входа?

Ниже приведен сценарийЯ попытался на основе некоторых блогов.

Я создал настраиваемый атрибут с именем ExternalAuthAttribute.Я унаследовал ActionFilterAttribute, IAuthenticationFilter.

Я пытался в обоих OnAuthentication и OnAuthenticationChallenge перенаправить на страницу входа.Но это не работает.Ниже приведен код.

public void OnAuthentication(AuthenticationContext filterContext)
        {

            var user = filterContext.HttpContext.User;
            if (user == null || !user.Identity.IsAuthenticated)
            {
                filterContext.Result = new HttpUnauthorizedResult();
                //   filterContext.Result = new HttpUnauthorizedResult();
                RedirectResult redirectResult = new 
                RedirectResult("Account/Login", true);
            }
}

 public void OnAuthenticationChallenge(AuthenticationChallengeContext filterContext)
        {

            var user = filterContext.HttpContext.User;
            if (user == null || !user.Identity.IsAuthenticated)
            {
                   filterContext.Result = new HttpUnauthorizedResult();
                RedirectResult redirectResult = new  RedirectResult("Account/Login", true);
            }
        }

*************Controller****************************
  [Authorize]
    public class AccountController : Controller
    {


        public AccountController()
        {
            _dataAccessor = dataAccessor;
        }
        [ExternalAuthAttribute]
        public ActionResult Login()
        {
            if (User.Identity.IsAuthenticated)
            {
                return View();
            }
            else
                return View("Login");
        }
    }

Результат вывода,

ЕСЛИ пользователь является внутренним пользователем, войдите в систему с помощью Azure AD, если внешний пользователь получит доступ к странице, перенаправьте на страницу входа.

...