【发布时间】:2016-03-09 04:41:06
【问题描述】:
我有用于向客户端 (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 应用程序。
【问题讨论】:
标签: authentication oauth oauth-2.0 request oltu