我的应用获取oauth2.0令牌以访问受保护资源,但我如何区分用户,例如,如果有userA和userB。 UserA可以访问网址/accout/info.jso?uid=2
来获取他的数据,但我的问题是userA是否获得了令牌,但是他通过网址/accout/info.jso?uid=userBId
访问了用户B的数据
oauth2.0系统如何避免这种问题?
答案 0 :(得分:0)
在OAuth 2.0中,资源所有者和请求访问的客户端是两个不同的实体。在你的问题中,听起来它们是同一个。存在OAuth以提供对第三方(客户端应用程序)的有限访问。
但是把它放在一边......如果你使用不记名代币,他们就不会提供任何身份证明。承载令牌的性质是,呈现它的人被授予与令牌相关联的访问权。其他令牌类型,例如SAML 2.0,带有关于客户端身份的更多语义信息。
在您的情况下,您要验证URI中标识的用户是否是发送请求的用户。单独的持票人令牌不会这样做。如果使用承载令牌,您的资源服务器将需要询问授权服务器是否向客户端请求其数据的用户发出了呈现的令牌。授权服务器必须记住它发出的访问令牌以及它发给它的人。它还应记住它们的发布范围以及它们何时到期,以便资源服务器可以检查该令牌是否仍处于活动状态,并且所请求的资源是否在所呈现的令牌的范围内。