我知道openId connect可以发出一个可以被。使用的Id令牌 客户端(依赖方)对最终用户进行身份验证。但它如何用于保护资源服务器免受客户端模拟? (我认为问题与Client impersonation in OAuth application with implicit authorization)
非常相似说,有一个SPA(android + webAPI),客户端(android app)实现了openid connect隐式流,并将直接使用访问令牌与资源服务器(web api)通信。 该应用程序首先将最终用户重定向到openid提供程序,并获得id令牌和访问令牌。 但是,有一个恶意应用程序窃取了访问令牌并冒充客户端与资源服务器进行通信。
如果没有id令牌,资源服务器如何知道访问令牌是否被盗?
答案 0 :(得分:0)
我认为不可以。正如您所说,OpenID Connect是关于向客户端验证最终用户。它没有说明如何向资源服务器验证客户端。客户端和资源服务器之间的关系纯粹是OAuth2,资源服务器通常所做的就是检查授权服务器是否发出了访问令牌。 OAuth2规范的Section 10.16还讨论了如何将访问令牌误用于隐式授权。
使用隐式授权,无法保证客户端不是恶意的。它甚至不被授权服务器验证。这与授权代码授权不同,其中客户端直接向令牌端点进行身份验证。尽管如此,使用普通的OAuth2,客户端不会对资源服务器进行身份验证,因此资源服务器不知道客户端正在发送请求。
OAuth2省略了如何实现或验证访问令牌,因此根据详细信息,资源所有者可能能够从令牌获取有关哪个客户端请求访问令牌的更多信息。但是通过隐式授权,您没有任何保证。
答案 1 :(得分:0)
也许我是错的,但这不是客户机密的原因吗?恶意应用程序现在不应该是客户端机密,因此也不能向资源服务器发出成功的请求。