我有用于向客户端发出令牌的Web应用程序(OAuth2),其中授权的授权类型为授权类型。此时,每次客户端请求(应用程序),希望接收代表一个用户使用资源api的令牌时,都会给出新令牌并且旧令牌不再有效(无论请求是在哪个设备上进行的) )。
我想要的是什么。为希望代表同一用户访问资源api的同一客户添加不同令牌的可能性,但生成不同设备的请求。< / p>
示例。安装在家庭计算机应用程序上“ClientApp”希望获取一个令牌,以便从用户名“Max”访问Web服务“PhotoService”。为此,应用程序“ClientApp”指代令牌的授权服务“OAuth2Service”,它将继续引用“PhotoService”。结果,“ClientApp”接收令牌。当安装在工作计算机上时,应用程序“ClientApp”尝试从“OAuth2Service”获取令牌,然后应该给他一个新令牌,而在使用家用计算机时收到旧令牌必须保持有效。也就是说,必须将令牌附加到发出请求的设备,客户端(client_id
)以及客户端将使用资源api的用户。对于同一设备,同一客户,同一用户必须返回一个新令牌,而旧版本应无效。
如何区分发出请求的设备?
有理由我可以使用标题的User-Agent
(例如:Mozilla / 5.0 (Windows NT 6.1; WOW64; rv: 41.0) Gecko / 20100101 Firefox / 41.0
),但在不同的设备上可以安装相同版本的浏览器OS。此外,参数User-Agent
不能在请求授权服务时使用
方式#2 - 在http参数中传输设备的描述。早些时候我没有遇到这样的实施。出于这个原因,这种方法值得怀疑。
使用Apache Oltu实现OAuth2应用程序。
答案 0 :(得分:0)
自问这个问题以来已经有一段时间了,但是如果情景仍然有效,我会留下一些想法。
OAuth2不会阻碍用户使用多个设备。您只需在服务器上为同一用户存储多个令牌。
该设备的描述如下:
,可以将其视为用户监控实际使用的设备的工具。
最后;已经过身份验证的设备可以使用给定令牌访问服务,而未经身份验证的设备必须通过身份验证过程才能接收令牌。