#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 для каждого запроса? Каков правильный способ идентификации пользователя по заголовкам или, может быть, преобразования одного значения в другое?
И в чем смысл того, что эти значения разные?
Спасибо за ваш совет!