[英]Determine user id in oauth callback
OAuth流程是:
对于OAuth身份验证,应用程序(也称为OAuth客户端)会将用户重定向到authorize_url
这会将用户重定向到oauth服务器的网络服务器,用户可以在其中授予网络应用访问他/她的帐户的权限
OAuth服务器将用户重定向到应用程序(也称为oauth客户端)提供的回调URL。 此时,回调来自OAuth服务器,因此没有会话ID或会话哈希。 应用程序如何确定调用post-oauth回调的用户?
我虽然这样做的方式是:
当您将用户重定向到authorize_url
您将某些参数附加到查询字符串?id=xxx
当OAuth服务器重定向到客户端提供的callback_url时,带有HTTP消息的参数之一将是在步骤1中附加到查询字符串的参数。
但是,这似乎不适用于我试图加入的OAuth服务器。
有什么建议?
在用户验证了您的请求令牌(通过输入用户名和密码)后,您应该将oauth_token和oauth_verifier参数发回,并附加到回调中。
如果这样可行,但您在回调中指定的其他参数不包含在回调中,则可能是提供者只是忽略您在请求令牌步骤中发送的oauth_callback。
如果是这种情况,提供程序将引用预定义的回调,通常是您在获取使用者密钥和密钥时指定的回调。
允许OAuth提供程序忽略授权流程期间发送的回调(签名除外)。 一些提供商这样做是为了增加额外的安全层。
您可以使用state参数,auth服务器也必须仅基于访问令牌提供用户详细信息服务。
你觉得“这不起作用”是什么意思?
服务器不回发查询部分? 您必须在您提供给oauth服务器的回调URL中对状态进行编码。 这可以在查询或路径部分中完成。 我认为没有理由不这样做?
也许你假设你有一个单独的通用回调,它会自动扩展状态? 目前为止知道情况并非如此。
编辑
我重新阅读了Google的实施文档:
You can specify a value for oauth_callback in an OAuthGetRequestToken request,
to determine where Google redirects the user after they authorize your access
request. The callback URL can include query parameters. The redirect will include
the same query parameters, as well as the authorized request token, which your
application must be able to parse.
For example, when supporting multiple languages, you can include
a query parameter that identifies the version of the application that a user is
viewing. An oauth_callback value of "http://www.yoursite.com/Retrievetoken?Lang=de"
would result in the redirect
"http://www.yoursite.com/Retrievetoken?Lang=de&oauth_token=DQAADKEDE".
Parsing the token and the language parameter ensures that the user is
redirected back to the correct version of the site.
因此(与我上面的陈述相反),OAuth服务器会主动将信息(&oauth_token = kkk)附加到您的URL。 该令牌应与您从“OAuthGetRequestTOken”获得的结果相同。 这对你不起作用?
据我所知,服务器应该逐字复制callback_url中的所有内容并添加从服务调用中收到的令牌
您是否记录了OAuth服务器的确切调用内容? 谁是服务提供商? 我无法想象他错过了这个功能......
我看不出您要将OAuth提供商的ID发送到OAuth Consumer的原因。 你能解释一下为什么需要这么做吗?
如果您有与您的用户关联的会话cookie,您将知道哪个用户将返回给您(重定向后),因为您可以与他进行会话 - 他将通过浏览器重定向并返回您的cookie。
即使OAuthProvider向您发送其内部用户ID(这是不必要的,我认为不太可能),您打算用它做什么 - 它与您的内部网站用户ID不匹配,它与用户ID完全不同提供者网站...或者我可能无法很好地得到你的问题....
最好的祝福
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.