asp.net – Ajax上的Identity Server 3 – 401而不是302
发布时间:2020-11-17 08:55:31 所属栏目:asp.Net 来源:互联网
导读:我有一个web api / mvc混合应用程序,我已将其配置为使用cookie身份验证.这适用于应用程序的mvc部分. web api确实强制执行授权,但不返回401 – Unauthorized它返回302 – Found并重定向到登录页面.我宁愿它返回401.我试图挂钩到CookieAuthenticationProvider.O
|
我有一个web api / mvc混合应用程序,我已将其配置为使用cookie身份验证.这适用于应用程序的mvc部分. web api确实强制执行授权,但不返回401 – Unauthorized它返回302 – Found并重定向到登录页面.我宁愿它返回401.我试图挂钩到CookieAuthenticationProvider.OnApplyRedirect委托,但似乎没有调用.我错过了什么?我目前的设置如下: AntiForgeryConfig.UniqueClaimTypeIdentifier = Constants.ClaimTypes.Subject;
JwtSecurityTokenHandler.InboundClaimTypeMap = new Dictionary<string,string>();
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = "Cookies",ExpireTimeSpan = TimeSpan.FromMinutes(20),SlidingExpiration = true,CookieHttpOnly = true,CookieSecure = CookieSecureOption.Never,//local non ssl-dev only
Provider = new CookieAuthenticationProvider
{
OnApplyRedirect = ctx =>
{
if (!IsAjaxRequest(ctx.Request))
{
ctx.Response.Redirect(ctx.RedirectUri);
}
}
}
});
app.USEOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
{
Authority = IdentityConfig.Authority,ClientId = IdentityConfig.SoftwareClientId,Scope = "openid profile roles",RedirectUri = IdentityConfig.RedirectUri,ResponseType = "id_token",SignInAsAuthenticationType = "Cookies"
});
解决方法在您的示例中,UseCookieAuthentication不再对此进行控制,而是使用USEOpenIdConnectAuthentication.这涉及使用Notifications属性并拦截OpenID Connect身份验证请求.尝试以下灵感: app.USEOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
{
Authority = IdentityConfig.Authority,SignInAsAuthenticationType = "Cookies",Notifications = new OpenIdConnectAuthenticationNotifications
{
RedirectToIdentityProvider = notification =>
{
if (notification.ProtocolMessage.RequestType == OpenIdConnectRequestType.AuthenticationRequest)
{
if (IsAjaxRequest(notification.Request) && notification.Response.StatusCode == (int)HttpStatusCode.Unauthorized)
{
notification.Response.StatusCode = (int)HttpStatusCode.Unauthorized;
notification.HandleResponse();
return Task.FromResult(0);
}
}
return Task.FromResult(0);
}
}
}); (编辑:南阳站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – 什么时候使用ViewData而不是ViewModels?
- asp.net-mvc – ASP.NET MVC会话超时,绝对还是滑动?
- asp.net – Web部署安装程序(MSI)中没有“IIS 7部署处理程序
- ASP.NET UpdatePanel和Javascript __dopostback
- ASP.NET MembershipProvider加密/解密
- 在IIS上部署ASP.NET Core项目的图文方法
- asp.net – 如何从复选框列表中获取最新的选定值?
- ASP.NET Page_Init被解雇了两次!
- 在对ASP.NET MVC Action的AJAX请求期间有网络请求超时时会发
- asp.net-mvc-3 – Azure网站上的RavenDb – 访问被拒绝
推荐文章
站长推荐
- asp.net-mvc – View中的意外NullReferenceExcep
- asp.net – 如何在gridview中将navigateurl添加到
- asp.net-mvc – ELMAH和SQL Server 2008 R2?
- asp.net-mvc – ASP.NET MVC WebSite中的ERR_EMP
- Asp.net(C#)读取数据库并生成JS文件制作首页图片
- asp.net-web-api – Web Api:找不到System.Net.
- .net – 可以为空的枚举类型的奇怪行为
- ASP.NET成员:拒绝用户阻止CSS,页面无法正确呈现
- asp.net-mvc – 可以浏览DataAnnotations的自定义
- asp.net-mvc – 不要在ASP .NET MVC 4 BundleCon
热点阅读
