asp.net – Ajax上的Identity Server 3 – 401而不是302
发布时间:2020-11-14 13:02:32 所属栏目: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中HttpContext.Current.User和Thread.CurrentPrin
- asp.net-mvc – MVC3验证与实体框架模型/数据库首先
- asp.net – 允许服务器/ usercontrol上的任何属性/属性
- asp.net-mvc – 使用MVC3剃刀的ASP.Net图表控件
- asp.net-mvc – 命名约定 – 控制器的一个规则,没有模型和视
- asp.net – WebForms:MasterPages中的动态(或绝对)脚本标记
- asp.net 2.0中利用Ajax2.0实现JSON传送大量页面数据
- asp.net-mvc – 从基本控制器继承LINQ-to-SQL数据上下文
- 如何在不使用MembershipProvider的情况下使用ASP.NET登录控
- asp.net实现access数据库分页的方法
推荐文章
站长推荐
- 在asp.net中将用户变量存储在数据库与会话中
- asp.net-mvc – asp.net MVC应该是View-Model封装
- asp.net – 如何打破VB.NET中的“if”块
- asp.net – 如何使用javascript生成假回发?
- asp.net-mvc – AntiXss保护Html模型属性
- asp.net – 使用/ signalr / ping调用时使用长轮
- asp.net-mvc – ASP.NET MVC忽略所有url结尾的“
- 敏感词汇过滤DFA算法
- asp.net-mvc-2 – 带有数组/列表的ASP.NET MVC 2
- asp.net-mvc – 更改ASP.NET MVC筛选器中的视图
热点阅读