返回401而不是重定向identityserver

时间:2017-03-20 10:51:51

标签: asp.net-core asp.net-identity identityserver4

我使用ASP.NET Core作为api,无法找到一种方法来配置标识以返回401而不是重定向到登录页面。我使用IdentityServerAuthentication中间件。

在Startup.cs中,我给出了以下选项:

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

        };
        app.UseIdentityServerAuthentication(options);

2 个答案:

答案 0 :(得分:1)

我找到了解决方案, 在请求中,您可以添加标头X-Requested-With,其值为XMLHttpRequest。 这将告诉身份不会重定向到登录页面。

答案 1 :(得分:0)

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

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/