返回 401 而不是重定向身份服务器



我将 ASP.NET Core用于api,但找不到一种方法来配置身份以返回401而不是重定向到登录页面。我使用 IdentityServerAuthentication 中间件。

在启动.cs中,我提供了以下选项:

        var options = new IdentityServerAuthenticationOptions
        {
            Authority = Configuration.GetConnectionString("Authority"),
            ScopeName = "scopeName",
            RequireHttpsMetadata = false,
        };
        app.UseIdentityServerAuthentication(options);

我找到了一个解决方案,在请求中,可以添加值为 XMLHttpRequest 的标头 X-Request-With 。这将告诉标识不要重定向到登录页面。

要覆盖未经授权时重定向到身份服务器的默认行为,我们必须创建一个实现System.Web.MVC.AuthorizeAttribute的自定义授权类。 然后,如果用户未经授权(但通过身份服务器登录(,我们向用户显示一个未经授权的页面。

protected override void HandleUnauthorizedRequest(AuthorizationContext                 
filterContext)
{
if (filterContext == null) {
   throw new ArgumentNullException("filterContext");
}
//Intercept results where person is authenticated but still doesn't have 
permissions
if (filterContext.RequestContext.HttpContext.User.Identity.IsAuthenticated)
{
    filterContext.Result = new RedirectResult(ConfigSettings.KPToolsURL + 
    "/Error/HttpError401");
    return;
}
base.HandleUnauthorizedRequest(filterContext);
}

写了一篇关于它的博客文章,其中我详细介绍了 https://spin.atomicobject.com/2018/07/09/identityserver-auth-mvc/。

相关内容

  • 没有找到相关文章

最新更新