OAuth2 authorization_code模式 客户端向认证服务器申请token 为何没有看到 user_id 字段?
access_token 肯定是要与 user_id 绑到一起,按照 OAuth2 标准为何没有 user_id 字段?
文档参看 4.1.3 节。
http://tools.ietf.org/html/rfc6749#section-4.1.3
如果没有 user_id,那么生成的 token,都是给到 client_id 对应的 user_id。
而存取用户资源的时候,又需要 user_id 来选择是哪个用户。
还是说,按照文档的流程对了即可,添加字段是可以自己把握的?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
你可以想象成为3个点,客户端->授权服务器->业务服务器,客户端与业务服务器通过API交互数据时需要user_id而get_authorization_code这个阶段是客户端与授权服务器的事,只要提供类似这样的参数就可以了。
client_id=the_client_id&response_type=code&redirect_uri=client_redirect_uri&scope=scope1,scope2&state=654321
其中前面2个参数是必传的(根据http://tools.ietf.org/html/rfc6749#section-4.1.1)。一种方法服务器端会做好token和user_id 的一一映射,存取用户资源的时候,服务器会根据token找到对应的user_id。
1.引导用户点击链接进入OAuth登录流程,携带client_id
2.用户输入信息点击登录,(此时已经有了user_id了)
3.OAuth平台生成token(服务端映射user、session、private_cache等数据与client_id绑定,比如user_id+client_id+client_ip+rand_str & sha1)
4.输出token给服务器
如果是获取当前用户,不用根据user_id来选择,发token就可以识别了,原理同session一样。很多网站,特别是腾讯旗下的,根本就不会给你user_id
access_token 要与 user_id 和 clint_id 绑在一起
那个第一次登陆返回的code中记录了user_id和client_id的~~
每个用户的access_token是不一样的,有了access_token再去换user_id
这里获取到token后就直接返回给客服端了,我该怎取到token并把他跟user_id绑定呢?