2014-07-07 55 views
2

我们正试图从的OpenID 2.0迁移至OAuth 2.0登录(ID连接)从OpenID的迁移到OAuth 2.0登录(ID连接)2.0

我们通过google docs OpenID 2.0 (Migration)

,我们已经是问题出发即openid_id在ID令牌请求中没有返回

首先验证请求:

https://accounts.google.com/o/oauth2/auth?client_id=xxxxxxxxxxxxxxx.apps.googleusercontent.com&response_type=code&scope=openid+email&redirect_uri=http://domain.local/customer/auth-callback&openid.realm=http://domain.local/customer&state=secrettoken 

当用户被重定向回我们得到以下PARAMS:

'state' => 'secrettoken', 
'code' => 'codeforexchange', 
'authuser' => '0', 
'num_sessions' => '1', 
'session_state' => 'absasd951d57fcc1148f59b6b455ec86045a731c..1de3', 
'prompt' => 'none', 

然后我们就https://accounts.google.com/o/oauth2/token交换令牌,我们收到以下:

'access_token' => 'accesstoken', 
'token_type' => 'Bearer', 
'expires_in' => 3594, 
'id_token' => 'idtoken' 

当我们尝试解析https://www.googleapis.com/oauth2/v1/tokeninfo ne上的令牌信息时ither openid_id或总和是存在于docs - Step 3: Map OpenID 2.0 identifiers to OpenID Connect identifiers

响应描述只是(ID令牌):

"issuer": "accounts.google.com", 
"issued_to": "xxxxxxxxx-xxxxxxx.apps.googleusercontent.com", 
"audience": "xxxxxxxxx-xxxxxxx.apps.googleusercontent.com", 
"user_id": "user_id", 
"expires_in": 3594, 
"issued_at": 1404741485, 
"email": "[email protected]", 
"email_verified": true 

任何人都知道为什么呢?

注:此“domain.local”以前使用通过OpenID 2.0登录因此,我希望openid_id应退还(能够识别用户迁移从OpenID的2.0至OpenidConnect)

有类似的问题这不幸并没有解决我的问题。

回答

0

According to this该子包含在ID令牌中。我假设openid_id也在那里。

ID令牌是一个安全令牌,使用一个客户端 时,以及潜在的其他请求的权利要求由授权服务器包含关于最终用户的身份验证 权利要求。 ID令牌是 ,表示为JSON Web令牌(JWT)[JWT]。

+0

不幸的是,正如你在我们的问题中看到的 - 我们提供了id_token(我已经更新了我的问题,以便更清楚)。我想这是一个错误..: -/ – Tomor

+0

该死的。你可能已经看过[这个问题](http://stackoverflow.com/questions/22842475/migrating-google-openid-to-openid-connect-openid-id-does-not-match?rq=1) ,但如果没有,它可能有帮助 – brocknz

+0

是的,我们做到了,但无论如何,谢谢你。 – Tomor

4

获得id_token后,您必须解码才能找到openid_id。 https://www.googleapis.com/oauth2/v1/tokeninfo在编码请求数据中是否包含openid_id时,不会返回openid_id作为响应。为了验证你可以在这里解码你的id_token; https://developers.google.com/wallet/digital/docs/jwtdecoder

+0

感谢您的回复,我会以这种方式进行测试。 – Tomor

+0

如果我半天前才发现这个问题:/ Google也欺骗了我,给出了这个错误的回应。 – olamedia