Я внедряю двойную аутентификацию в 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, если внешний пользователь получит доступ к странице, перенаправьте на страницу входа.