如何区分在服务器上请求令牌OAuth2的设备?
我有用于向客户端发放令牌的Web应用程序(OAuth2),其中包含授权授权类型。目前,每次客户端请求(应用程序)时,希望接收代表一个用户使用资源api的令牌 - 给出新令牌并且旧令牌不再有效(不管该请求是由哪个设备制定的)。如何区分在服务器上请求令牌OAuth2的设备?
我想要什么。为想要代表同一用户访问资源API的同一客户添加发布不同令牌的可能性,但是会为不同设备生成请求。
示例。安装在家用电脑应用程序中“ClientApp”想要获取令牌以从用户名“Max”访问Web服务“PhotoService”。为此,应用程序“ClientApp”指的是令牌的授权服务“OAuth2Service”,它将继续引用“PhotoService”。结果,“ClientApp”收到一个令牌。当安装在工作计算机上时,试图从“OAuth2Service”获取令牌的应用程序“ClientApp”应该被赋予新的令牌,而使用家用计算机时收到的旧令牌必须保持有效。也就是说,令牌必须连接到发出请求的设备,客户端(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应用程序。
这个问题被问到了一段时间,但在情况仍然有效的情况下,我会留下一些想法。
OAuth2不妨碍用户使用多个设备。您只需在服务器上为同一用户存储多个令牌。像装置的
描述:
- 用户代理
- IP地址
- 一些用户输入的描述
- 等
可以在认证之后加入,并且可以被视为用户监视他实际使用的设备的工具。
最后;已经通过身份验证的设备可以使用给定的令牌访问服务,而未经身份验证的设备则必须通过身份验证过程才能接收令牌。