我有用于向客户端 (OAuth2) 发布令牌的 Web 应用程序,其中隐含授权代码授予类型。目前,每次客户端请求(应用程序)时,希望收到一个令牌以代表一个用户使用资源 api - 新令牌被给出并且旧令牌不再有效(无论请求是由哪个设备发出的)。
我想要的是。添加为希望代表同一用户访问资源 api 但使用不同设备生成请求的同一客户颁发不同令牌的可能性。
例子。安装在家庭计算机上的应用程序“ClientApp”想要从用户名“Max”获取访问 Web 服务“PhotoService”的令牌。为此,应用程序“ClientApp”为令牌引用授权服务“OAuth2Service”,它将继续引用“PhotoService”。结果,“ClientApp”收到了一个令牌。当安装在工作计算机上时,应用程序“ClientApp”试图从“OAuth2Service”获取令牌,然后应该给他一个新令牌,而在使用家用计算机时收到旧令牌必须保持有效。也就是说,令牌必须附加到发出请求的设备上,即客户端(client_id
) 以及客户端将代表其使用资源 api 的用户。对于同一个设备,同一个客户,同一个用户必须返回一个新的token,旧的应该是无效的。
如何区分发出请求的设备?
有原因我可以使用User-Agent
header(例如:)Mozilla / 5.0 (Windows NT 6.1; WOW64; rv: 41.0) Gecko / 20100101 Firefox / 41.0
,但是在不同的设备上可以安装相同版本的浏览器、操作系统。此外参数User-Agent
不能在向授权服务请求时。
方式#2 - 在http参数中传输设备的描述。早些时候我没有遇到这样的实现。出于这个原因,这种方法是值得怀疑的。
用于使用 Apache Oltu 实现 OAuth2 应用程序。