asp.net-web-api – 从数据存储实现动态OAuthBearerServerOption
发布时间:2020-12-16 09:13:42 所属栏目:asp.Net 来源:网络整理
导读:这篇文章的上下文涉及ASP.NET Web API 2.2 OWIN 环境是具有OWIN服务器和Web Api的单个应用程序. 背景: 在Startup类中,必须指定OAuthBearerServerOptions提供给OAuthBearerAuthenticationProvider.这些选项是在OWIN服务器启动期间创建的.在OAuthBearerServer
这篇文章的上下文涉及ASP.NET Web API 2.2 OWIN
环境是具有OWIN服务器和Web Api的单个应用程序. 背景: 在Startup类中,必须指定OAuthBearerServerOptions提供给OAuthBearerAuthenticationProvider.这些选项是在OWIN服务器启动期间创建的.在OAuthBearerServerOptions,我必须指定AccessTokenExpireTimeSpan,以便我可以确保令牌到期. 问题 我必须能够基于每个身份验证请求动态指定过期时间跨度.我不确定这是否可以做到并且在想: >可以吗? 启动配置内容: var config = new HttpConfiguration(); WebApiConfig.Register(config); var container = builder.Build(); config.DependencyResolver = new AutofacWebApiDependencyResolver(container); var OAuthServerOptions = new OAuthAuthorizationServerOptions() { AllowInsecureHttp = true,TokenEndpointPath = new PathString("/OAuth"),AccessTokenExpireTimeSpan = TimeSpan.FromMinutes(**THIS NEEDS TO BE DYNAMIC**)),Provider = new AuthorizationServerProvider() }; //STOP!!!!!!!! //DO NOT CHANGE THE ORDER OF THE BELOW app.Use statements!!!!! //Token Generation app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll); //this MUST come before oauth registration app.USEOAuthAuthorizationServer(OAuthServerOptions); app.USEOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions() { Provider = new BearerProvider() }); app.UseAutofacMiddleware(container); //this MUST come before UseAutofacWebApi app.UseAutofacWebApi(config);//this MUST come before app.UseWebApi app.UseWebApi(config); 我开始搞乱BearerProvider类(请参阅上面的app.USEOAuthBearerAuthentication以了解我使用此类的位置)以及具体的ValidateIdentity方法,但不确定这是否是auth工作流中设置此值的正确点.这似乎是合适的,但我寻求验证我的立场. public class BearerProvider : OAuthBearerAuthenticationProvider { public override async Task RequestToken(OAuthRequestTokenContext context) { await base.RequestToken(context); //No token? attempt to retrieve from query string if (String.IsNullOrEmpty(context.Token)) { context.Token = context.Request.Query.Get("access_token"); } } public override Task ValidateIdentity(OAuthValidateIdentityContext context) { //context.Ticket.Properties.ExpiresUtc= //SOME DB CALL TO FIND OUT EXPIRE VALUE..IS THIS PROPER? return base.ValidateIdentity(context); } } 提前致谢! 解决方法
设置context.Options.AccessTokenExpireTimeSpan实际上将更改全局值,并影响所有不适用于原始需求的请求.
正确的位置是TokenEndpoint方法. public override Task TokenEndpoint(OAuthTokenEndpointContext context) { ... if (someCondition) { context.Properties.ExpiresUtc = GetExpirationDateFromDB(); } ... } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc-3 – MVC 3子域路由
- asp.net C#Operation可能会破坏运行时的稳定性
- 显示在文本框,标签后面的菜单. ASP.NET/C#
- ASP.NET在嵌套在更新面板中的用户控件中注入javascript
- asp.net – Context.ession对象在Application_AcquireReque
- 标签 – 如何使用像asp这样的Razor:Literal?
- asp.net – 连接模式和断开模型在EF
- asp.net-mvc – 如何解决异常“文件不存在”?
- asp.net core 从单机到集群
- asp.net-mvc – “Inject”Request.Url.Hosts – ASP.net M
推荐文章
站长推荐
- .net – 即时生成站点地图
- asp.net-mvc – POST后重定向不会更改URL
- ASP.NET 或C# 中ASCII码含中文字符的编解码处理
- ms-access – 无法使用'(未知)’;文件已在使
- asp.net – 如何在弹出窗口中打开aspx网页
- asp.net-mvc-2 – 如何设置RadioButtonFor()在AS
- asp.net-mvc – MVC 3中ModelBinder构造函数注入
- asp.net – 你能使用基于属性的WebApi 2与WebFor
- asp.net-mvc – 尝试将asp.net web发布到Azure时
- asp.net-mvc-3 – 如何在自定义编辑器模板中获取
热点阅读