OAuth: почему основной идентификатор отличается при аутентификации в браузере и приложении WinPhone

#azure #authentication #oauth #google-authentication

#azure #аутентификация #oauth #google-аутентификация

Вопрос:

Я пытаюсь использовать аутентификацию Google OAuth для мобильного приложения, размещенного в Azure, но получаю идентификатор пользователя (SID) в разных форматах.

Когда я получаю доступ к API напрямую из браузера, я перенаправляюсь на страницу входа в Google, и после аутентификации следующий запрос к моему API приходит с заголовками:

 "x-ms-client-principal-name":"pavlolissovtest@gmail.com",  
"x-ms-client-principal-id":"108491597139717511334",  
"x-ms-client-principal-idp":"google",  
"x-ms-token-google-access-token":"ya29.Ci9-A-oE8p4vVelYhRKqjMKY6KGxeW4OtXT-KGtBO3AxsiBqiCawn8sxL-qg4msWrw"  
 

В приложении Windows Phone (аутентификация с помощью WindowsAzure.Мобильные сервисы.MobileServicesClient), при входе в систему с той же учетной записью, запрос приходит с разными заголовками:

 "x-ms-client-principal-id":"sid:3fc89f071b7cb8f18919614ac46d3636",
"x-ms-client-principal-idp":"google",
"x-ms-token-google-access-token":"ya29.Ci9-AxC3kfrYrV8ssLUkbwFJJYDPsklsUH7r3HG0f6KB_wWzXV9AqE_wGPASiYxcWQ"
 

Итак, теперь у меня есть разные основные идентификаторы для одной и той же учетной записи пользователя.
Если сейчас я позвоню https://www.googleapis.com/oauth2/v3/tokeninfo?access_token =, для обоих токенов я получаю один и тот же результат:

 {
 "azp": "1083509260178-cntp3794bggcs5dtkse0mtbvpqigoa78.apps.googleusercontent.com",
 "aud": "1083509260178-cntp3794bggcs5dtkse0mtbvpqigoa78.apps.googleusercontent.com",
 "sub": "108491597139717511334",
 "scope": "https://www.googleapis.com/auth/plus.me https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email",
 "exp": "1476643317",
 "expires_in": "3161",
 "email": "pavlolissovtest@gmail.com",
 "email_verified": "true",
 "access_type": "online"
}
 

Это позволяет мне идентифицировать пользователя, какой вариант входа в систему используется, но действительно ли правильно вызывать googleapis для каждого запроса? Каков правильный способ идентификации пользователя по заголовкам или, может быть, преобразования одного значения в другое?

И в чем смысл того, что эти значения разные?

Спасибо за ваш совет!