我对Oauth2.0服务器的理解是,当资源所有者向客户端授予权限时,它会授权客户端访问资源。假设我有一个用户Bob,他被授予两个客户端(client1,client2)访问他的东西的权限。作为其一部分,Bob登录了2倍。曾经这样:
http://10.234.233.23:9081/oauth/authorize?client_id=client1&response_type=code&scope=all
,他得到一个验证码-> FIbSqy
对于第二位客户
http://10.234.233.23:9081/oauth/authorize?client_id=client2&response_type=code&scope=all
他再次获得第二个验证码-> h4ckJQ
他将这些身份验证代码分别交给app1和app2。然后,这些客户端登录到oauth服务器,并将那些auth-code交换为令牌。然后,在令牌被用来拨打电话并获取资源之后。
我的问题是,当auth服务器似乎要缓存第一人的凭据,然后再也不允许其他人登录时,您如何在auth服务器上一次对两个客户端进行身份验证。
因为对我来说,第一个客户端交换令牌的身份验证代码...获取令牌,然后其他每个对不起的客户端此后都会收到以下错误:
我知道您可以注册客户端...并且我已将所有客户端都注册到outh服务器中...但是我是否还缺少一个“登录” URL,因此它们都可以同时登录? / p>
答案 0 :(得分:1)
OAuth支持state
。建议这样做以防止跨站点请求伪造。此状态可用于同时支持多个登录。
http://10.234.233.23:9081/oauth/authorize?client_id=client1&response_type=code&scope=all&state=some-big-random-number-string