0

我有用于向客户端 (OAuth2) 发布令牌的 Web 应用程序,其中隐含授权代码授予类型。目前,每次客户端请求(应用程序)时,希望收到一个令牌以代表一个用户使用资源 api - 新令牌被给出并且旧令牌不再有效(无论请求是由哪个设备发出的)。

我想要的是。添加为希望代表同一用户访问资源 api 但使用不同设备生成请求的同一客户颁发不同令牌的可能性。

例子。安装在家庭计算机上的应用程序“ClientApp”想要从用户名“Max”获取访问 Web 服务“PhotoService”的令牌。为此,应用程序“ClientApp”为令牌引用授权服务“OAuth2Service”,它将继续引用“PhotoService”。结果,“ClientApp”收到了一个令牌。当安装在工作计算机上时,应用程序“ClientApp”试图从“OAuth2Service”获取令牌,然后应该给他一个新令牌,而在使用家用计算机时收到旧令牌必须保持有效。也就是说,令牌必须附加到发出请求的设备上,即客户端(client_id) 以及客户端将代表其使用资源 api 的用户。对于同一个设备,同一个客户,同一个用户必须返回一个新的token,旧的应该是无效的。

如何区分发出请求的设备?


有原因我可以使用User-Agentheader(例如:)Mozilla / 5.0 (Windows NT 6.1; WOW64; rv: 41.0) Gecko / 20100101 Firefox / 41.0,但是在不同的设备上可以安装相同版本的浏览器、操作系统。此外参数User-Agent不能在向授权服务请求时。
方式#2 - 在http参数中传输设备的描述。早些时候我没有遇到这样的实现。出于这个原因,这种方法是值得怀疑的。

用于使用 Apache Oltu 实现 OAuth2 应用程序。

4

1 回答 1

0

自从提出这个问题以来,已经有一段时间了,但如果场景仍然有效,我会留出一些想法。

OAuth2 不会阻碍用户使用多个设备。您只需在服务器上为同一用户存储多个令牌。

设备描述如:

  • 用户代理
  • IP地址
  • 一些用户输入的描述
  • ETC

可以在认证后添加,可以作为用户监控自己实际使用什么设备的工具。

到底; 已经通过身份验证的设备可以使用给定的令牌访问服务,而未经身份验证的设备必须通过身份验证过程才能接收令牌。

于 2016-03-08T20:41:06.667 回答