I am using OpenIdConnect provider with Owin/Katana for authentication in my asp.net mvc application. OpenIdConnect Provide authenticates users against Active Directory. I wa
To add to the accepted answer in case someone battles with this like I did. I found that the following options worked for me -
Option 1
//redirect to a page
context.AuthenticationTicket.Properties.RedirectUri = "Url";
Option 2
//redirect to a page
context.HandleResponse();
context.Response.Redirect("/Error?message=" + context.Exception.Message);
Be aware that the second option caused my HttpContext.User.Identity to be null. I suppose because HandlResponse discontinues all processing. Still useful if that is not a concern.
I was able to achieve this by writing custom AuthorizeAttribute and using it on every class in my application. In the custom authorize attribute I am checking for the a Claim which will be available if the authorization check is successful and redirecting the user to a separate view if not authorized.
public class CustomAuthorize : AuthorizeAttribute
{
public override void OnAuthorization(System.Web.Mvc.AuthorizationContext filterContext)
{
base.OnAuthorization(filterContext);
if (filterContext.HttpContext.User.Identity.IsAuthenticated)
{
if(UserClaims.PersonId == 0)
{
UrlHelper helper = new UrlHelper(filterContext.RequestContext);
string url = helper.Action("Unauthorized","Error",null,filterContext.HttpContext.Request.Url.Scheme);
filterContext.Result = new RedirectResult(url);
}
}
}
}