asp.net – Ajax上的Identity Server 3 – 401而不是302
发布时间:2020-12-15 20:37:53 所属栏目:asp.Net 来源:网络整理
导读:我有一个web api / mvc混合应用程序,我已将其配置为使用cookie身份验证.这适用于应用程序的mvc部分. web api确实强制执行授权,但不返回401 – Unauthorized它返回302 – Found并重定向到登录页面.我宁愿它返回401.我试图挂钩到CookieAuthenticationProvider.
我有一个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 – Knockoutjs可编辑网格
- ASP.Net页面生命周期
- asp.net-mvc – 如何在Razor帮助器中使用UrlHelper?
- asp.net-mvc – 图像优化框架未初始化
- iis-7 – 使用asp.net在开发机器上创建无cookie应用程序
- asp.net-mvc-4 – 在TrasactionScope中使用WebSercurity.Cr
- 如何使用ASP.NET获取访问者位置(国家,州和城市)
- 我需要知道什么才能使asp.net应用程序全球化?
- asp.net-mvc – 存储库模式和单元测试ASP.NET Web API
- asp.net-web-api – 在WebApi2帮助页面中启用文档
推荐文章
站长推荐
- asp.net-core – project.json版本控制格式
- asp.net-mvc – 为什么在我的ASP MVC4应用程序中
- asp.net-mvc-routing – ASP.NET Web Api路由(II
- ASP.NET设计网络硬盘之删除文件夹实现代码
- asp.net-mvc-3 – 登录后重定向MVC3
- asp.net-mvc – 在MVC4中为ViewModel设置默认值的
- asp.net-mvc – Dotnetopenauth使用自定义身份提
- asp.net-mvc – 我的bin部署MVC4应用程序中的区域
- asp.net – 使用母版页在Aspx页面中引用CSS工作表
- asp.net – 虽然会话丢失,但Owin仍会对用户进行身
热点阅读