我正在测试基于Qt的OAuth库(https://github.com/pipacs/o2)。我正在针对 Facebook 测试OAuth 2.0作为提供商。
我正在测试协议的 ImplicitGrant 流程。在此流程中,如果客户端将* request_type *查询参数设置为 token ,则响应将作为URL片段包含在内,并包含访问令牌。
Facebook,在浏览器中成功进行身份验证后,会回复重定向到我提供的uri,访问令牌会在 网址片段 中发送。
例如:浏览器被重定向到:
http://mylocalserver.com:8888/#access_token=ABCDE&expires_in=5162322
mylocalserver.com =本地主机
我在Qt中实现了一个小型HTTP服务器,可以处理所有这些重定向。
问题在于,在获取传入连接时,即从重定向启动它的浏览器,当我从套接字读取数据时,我看到片段部分缺少!例如:对于上面的本地网址,我看到的数据是:
GET / HTTP/1.1 Host: 127.0.0.1:8888 User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:22.0) Gecko/20100101 Firefox/22.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate Connection: keep-alive
正如您所见,片段完全缺失。为了解决这个问题,我发现FF / Chrome可能会将碎片放在位置标题中。但我也没有看到。
知道片段为什么会丢失以及如何将其取回/指示浏览器发送它?
答案 0 :(得分:0)
implict 流程适用于没有“服务器”的情况。片段(及其中的访问令牌)将由客户端代码(例如,javascript,本机客户端等)提取。这适用于无法安全保存机密的情况。如果可以(如在服务器中),通常使用授权代码流。预期GET中缺少的片段到服务器。