我在我的应用中使用google-oauth2身份验证工作流程,支持使用Google帐户登录。
我的问题是,当我从谷歌获得ID-Token时,它返回与Sub相同的OpenID(2.0)值。
这是预期的行为还是由于身份验证请求/工作流程的某些问题(如下所示)?
身份验证请求:
https://accounts.google.com/o/oauth2/auth?
client_id=xxxxxxxxxxxx.apps.googleusercontent.com&
response_type=code&
scope=email+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.
email+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcalendar+https%3A%2F
%2Fdocs.
google.com%2Ffeeds+https%3A%2F%2Fwww.googleapis.
com%2Fauth%2Fdocs+https%3A%2F%2Fmail.google.com%2Fmail%2Ffeed%2Fatom&
redirect_uri=http://example.com/oauth2/callback/google.json&
state=e410b0ae-696a-4b7d-9f3e-aec14c1acdd1&
access_type=offline&
openid.realm=http://example.com&
login_hint=fake_user@testedu.info&
hd=testedu.info
在回调中,以下代码段用于从Google获取令牌,以获取返回回调的“代码”值。
GoogleAuthorizationCodeTokenRequest tokenResponse = new
GoogleAuthorizationCodeTokenRequest(TRANSPORT, JSON_FACTORY,
googleAppClientId,googleAppClientSecret, code, callbackurl).execute();
以下是DB中现有的OpenID2.0值以及GoogleIdToken中返回的新Sub值。 sub被提取为:“idToken.getPayload()。getSubject()”
现有OpenID:107287433969474xxxxxx
子:107287433969474xxxxxx