本文将分享asp.net-web-api–刷新令牌–服务器端存储和撤销多个客户端的详细内容,并且还将对oauth2.0刷新令牌的作用进行详尽解释,此外,我们还将为大家带来关于ApiBootv2.2.6
本文将分享asp.net-web-api – 刷新令牌 – 服务器端存储和撤销多个客户端的详细内容,并且还将对oauth2.0刷新令牌的作用进行详尽解释,此外,我们还将为大家带来关于ApiBoot v2.2.6 发布,新增配置客户端 OAuth2 刷新令牌过期时间、ASP Net Web API 2.1获取客户端IP地址、ASP.NET Web API,Web服务发现和客户端创建、asp.net web-api – ASP.net Web API RESTful Web服务基本身份验证的相关知识,希望对你有所帮助。
本文目录一览:- asp.net-web-api – 刷新令牌 – 服务器端存储和撤销多个客户端(oauth2.0刷新令牌的作用)
- ApiBoot v2.2.6 发布,新增配置客户端 OAuth2 刷新令牌过期时间
- ASP Net Web API 2.1获取客户端IP地址
- ASP.NET Web API,Web服务发现和客户端创建
- asp.net web-api – ASP.net Web API RESTful Web服务基本身份验证
asp.net-web-api – 刷新令牌 – 服务器端存储和撤销多个客户端(oauth2.0刷新令牌的作用)
我已经完成了访问令牌的生成和检索,现在我正在转向刷新令牌位.
我的问题是:
>我应该如何存储刷新令牌服务器端?
>我是否应该将clientID和散列和盐渍刷新令牌存储在数据库中(以及实用程序字段,例如到期日期)?
>如果我的API用户具有单个clientID和机密,但同时执行多个调用(假设他们希望在多台计算机上扩展客户端以获得更好的吞吐量),那么预期的行为是什么?
>具体来说,我的意思是如果客户端的一个访问令牌过期,但他们的刷新令牌也已过期?
当然,他们可以同时到令牌端点获取新的访问令牌和刷新令牌,但那个clientID的其他实例呢?假设它们的代码是相同的(即它们不共享刷新令牌的知识),每个实例也将继续请求新的访问和刷新令牌.
>如果为clientID存储单个刷新令牌,则最终会过度请求刷新令牌,可能每次访问令牌到期时都是如此,这是不可取的.
>如果您为客户存储多个刷新令牌,那么有多少是合理的数字?
另外,撤销刷新令牌的常见过程是什么?
是否只是从存储它的地方删除它一样简单?
谢谢.
解决方法
Should I just store the clientID and the hashed and salted refresh token in a database (Along with utility fields,such as an expiration date)?
我建议的方法是使用ASOS附加的票证标识符来创建它的所有令牌.您可以通过context.Ticket.GetTokenId()和context.Ticket.ExpiresUtc从SerializeRefreshToken事件中检索刷新令牌标识符和到期日期.
注意:默认标识符是GUID,但您可以使用context.Ticket.SetTokenId(“标记标识符”)替换它.
Specifically,I mean what if 1 of the client’s access tokens expires,but their refresh token has also expired? Of course they can go to the token endpoint to get a new access token and refresh token at the same time,but then what about the other instances for that clientID?
这实际上取决于您的应用程序要求以及如何实现它.您可以将刷新令牌视为完全独立,或者相反,相互依赖.这个逻辑通常会发生在HandletokenRequest中.
Also,what is the common process of revoking the refresh tokens? Is it as simple as just deleting it from wherever you’re storing it?
如果您使用默认令牌格式(超过推荐值),刷新令牌将被视为有效,直到它们过期.您可以通过进行数据库查找来检查令牌是否已从HandletokenRequest中撤消(您可以使用context.Ticket.GetTokenId()获取刷新令牌标识符)
ApiBoot v2.2.6 发布,新增配置客户端 OAuth2 刷新令牌过期时间
ApiBoot 是什么?
ApiBoot
是接口服务的落地解决方案,提供了一系列开箱即用的组件,通过封装来简化主流第三方框架的集成,从而提高开发者开发效率、学习成本、降低入门门槛,真正的实现开箱即用!!!
对 SpringBoot
简单了解的开发者就可以编写安全稳定的接口服务,可为移动端、网页端等多个端点提供丰富的安全接口。
ApiBoot依赖于SpringBoot,可以使用ApiBoot构建独立的Java应用程序。
愿景:
- 为Java开发者提供低门槛第三方框架集成解决方案,让复杂的框架集成使用的门槛更低。
- 开箱即用,内部封装了主流框架,只需添加依赖、简单配置即可使用。
- 各个组件可独立使用,不再冗余你的应用程序。
- 可简单快速的构建安全的restful资源接口服务。
- 可用于构建SpringCloud微服务服务实例。
如果你想要系统的学习
ApiBoot
可以访问我的博客文章 ApiBoot开源框架各个组件的系列使用文章汇总,或者官方文档 http://apiboot.minbox.io
更新日志 ✨
- 新增ApiBoot OAuth2的刷新令牌过期配置参数
- 升级Spring/SpringBoot依赖版本为v5.2.7/v.2.3.1
- 新增minbox-logging排除指定HttpStatus的参数配置
- 修改SpringMvc配置首选json-mapper的方式
- 升级flatten-maven-plugin插件版本
- 删除默认集成SpringCloud的指定版本(防止与业务系统版本冲突)
生态
ApiBoot主要的职责是封装并且落地项目中常用到的第三方依赖,会接入越来越多优秀的开源项目,提供统一的SpringBoot集成解决方案,完全遵循SpringBoot自定义Starter的规范实现。
下面是目前所集成的组件:
- 阿里云对象存储OSS组件
- 阿里云国际短信服务组件
- 多数据源动态切换组件
- 分布式日志开源框架组件
- 阿里云邮件服务组件
- APP消息推送组件(支持极光推送)
- ORM MyBatis Enhance开源框架组件(特性:方法命名规则查询、动态查询、内置方法,只增强不覆盖MyBatis本质特性)
- MyBatis Pageable自动化分页组件
- 分布式任务调度框架Quartz组件
- 分布式限流框架RateLimiter组件(支持Google令牌桶、Redis Lua脚本)
- 资源业务分离组件
- Spring Security + OAuth2 + JWT框架整合极简的解决方案组件(不写一行代码即可实现默认整合)
- 分布式高效有序ID生成组件
- Swagger文档组件
详见官方文档:https://apiboot.minbox.io
官方文档 & 源码
- 官方文档:http://apiboot.minbox.io
- 示例源码:https://gitee.com/minbox-projects/api-boot-chapter
- 码云:https://gitee.com/minbox-projects/api-boot
- GitHub:https://github.com/hengboy/api-boot
请给我支持
ApiBoot
框架目前是由恒宇少年 - 于起宇编写并开源,欢迎大家提出集成建议,也可以根据ApiBoot集成第三方依赖的方式自行编写后提交PR,请给我一定的支持,让我坚持去下,为开源做贡献。
- 请给
ApiBoot
源码仓库点个Star
,Watching
后可以收到每次发版的通知。 - Gitee
- GitHub
ASP Net Web API 2.1获取客户端IP地址
如何解决ASP Net Web API 2.1获取客户端IP地址?
以下链接可能会对您有所帮助。这是来自以下链接的代码。
参考:通过asp-net-web-api获取客户端IP
using System.Net.Http;
using System.ServiceModel.Channels;
using System.Web;
using System.Web.Http;
namespace Trikks.Controllers.Api
{
public class IpController : ApiController
{
public string GetIp()
{
return GetClientIp();
}
private string GetClientIp(HttpRequestMessage request = null)
{
request = request ?? Request;
if (request.Properties.ContainsKey("MS_HttpContext"))
{
return ((HttpContextwrapper)request.Properties["MS_HttpContext"]).Request.UserHostAddress;
}
else if (request.Properties.ContainsKey(RemoteEndpointMessageProperty.Name))
{
RemoteEndpointMessageProperty prop = (RemoteEndpointMessageProperty)request.Properties[RemoteEndpointMessageProperty.Name];
return prop.Address;
}
else if (HttpContext.Current != null)
{
return HttpContext.Current.Request.UserHostAddress;
}
else
{
return null;
}
}
}
}
下面是另一种方法。
参考:如何访问客户端的IP地址
对于网络托管版本
string clientAddress = HttpContext.Current.Request.UserHostAddress;
对于自托管
object property;
Request.Properties.TryGetValue(typeof(RemoteEndpointMessageProperty).FullName, out property);
RemoteEndpointMessageProperty remoteProperty = property as RemoteEndpointMessageProperty;
解决方法
您好,我需要在Web
api中获取请求某种方法的客户端IP,我尝试从此处使用此代码,但它始终返回服务器本地IP,如何以正确的方式获取?
HttpContext.Current.Request.UserHostAddress;
来自其他问题:
public static class HttpRequestMessageExtensions
{
private const string HttpContext = "MS_HttpContext";
private const string RemoteEndpointMessage = "System.ServiceModel.Channels.RemoteEndpointMessageProperty";
public static string GetClientIpAddress(this HttpRequestMessage request)
{
if (request.Properties.ContainsKey(HttpContext))
{
dynamic ctx = request.Properties[HttpContext];
if (ctx != null)
{
return ctx.Request.UserHostAddress;
}
}
if (request.Properties.ContainsKey(RemoteEndpointMessage))
{
dynamic remoteEndpoint = request.Properties[RemoteEndpointMessage];
if (remoteEndpoint != null)
{
return remoteEndpoint.Address;
}
}
return null;
}
}
ASP.NET Web API,Web服务发现和客户端创建
对于网站而言,能够针对WCF服务生成客户端的便利性显然是一个优势.我不熟悉RESTful Web服务,但我发现有Web应用程序描述语言(WADL).也许这是我的无知,但能够宣传正确的方式来消费你的服务肯定是一件好事吗?
我的主要问题是:是否存在为WEB API生成WADL或类似内容的任何内容?
次要问题:this tool看起来像生成基于WADL的客户端,还有什么能让生活轻松让客户端与RESTful Web服务保持同步吗?
解决方法
看看这里(以及更新的姚明帖子):
http://blogs.msdn.com/b/yaohuang1/archive/2012/05/21/asp-net-web-api-generating-a-web-api-help-page-using-apiexplorer.aspx
也
http://blogs.msdn.com/b/yaohuang1/archive/2012/06/15/using-apiexplorer-to-export-api-information-to-postman-a-chrome-extension-for-testing-web-apis.aspx
asp.net web-api – ASP.net Web API RESTful Web服务基本身份验证
我的第一个尝试是手动,解析授权头,解码和验证用户对我的数据库。它的工作,但我不知道,如果我缺少的东西。
我见过一些使用用户角色和原则的解决方案。虽然我不知道这些实际做什么,我几乎肯定我不会需要这些,因为在我的数据库中,我定义了我自己的用户和他们的角色。
还有我还没有完全理解,是如果服务的消费者必须发送凭证与每个请求或他们以某种方式缓存。我的服务应该做些什么才能发生,还是完全由消费者来处理?
最后一个问题关于客户使用javascript请求。如果他们尝试使用该服务,是否会出现任何“跨域请求”问题?
解决方法
从我的理解,如果你想要你的请求是无状态的,那么每个请求将需要设置验证字段
Jamie Kurtze在从DelegateHandler派生的类中包装必要的代码,而Rick Strahl使用过滤器检查调用是否有效。你可以在他的博客文章阅读更多在这个主题在A WebAPI Basic Authentication Authorization Filter
今天的关于asp.net-web-api – 刷新令牌 – 服务器端存储和撤销多个客户端和oauth2.0刷新令牌的作用的分享已经结束,谢谢您的关注,如果想了解更多关于ApiBoot v2.2.6 发布,新增配置客户端 OAuth2 刷新令牌过期时间、ASP Net Web API 2.1获取客户端IP地址、ASP.NET Web API,Web服务发现和客户端创建、asp.net web-api – ASP.net Web API RESTful Web服务基本身份验证的相关知识,请在本站进行查询。
本文标签: