OAUTH2, как я могу взять имя пользователя, если у меня есть доступ или refresh_Token

2

У меня есть приложение С#, которое использует oauth2 для подключения к стороннему приложению. Сначала пользователь перенаправляется во внешнее приложение (ERP), где он вводит имя пользователя и пароль, и генерируется токен доступа, действительный в течение 1 часа, и генерируется токен обновления, действительный 50 лет. Я использую этот токен обновления из своего приложения и на основании этого я получаю новый токен доступа. У меня есть ClientId и ClientSecret. Могу ли я получить зарегистрированное имя пользователя с этими 2 токенами?

Request :
POST /connect/token HTTP/1.1
Authorization: Basic base64(client_id:client_secret)
Content-Type: application/x-www-form-urlencoded;charset=UTF-8

"grant_type=refresh_token&refresh_token=<refresh_token>"

Response:
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8

{
  "access_token": <access_token>,
  "refresh_token": <refresh_token>,
  "token_type":"bearer",
  "expires_in":3600
}
Теги:
oauth-2.0
access-token
refresh-token

2 ответа

0

Если вы получаете токен в формате JSON Web Token (обычно называемый автономным токеном доступа), вы можете декодировать полезную нагрузку токена и получить имя пользователя. Обычно это может быть задано как субъектное ("вспомогательное") утверждение или оно может быть отправлено в виде отдельного утверждения в JWT. Перейдите по этой ссылке, чтобы узнать о претензиях JWT.

Если это не так, то есть токен доступа непрозрачен, тогда вам нужно использовать конечную точку самоанализа токена. Вам необходимо убедиться, что такая конечная точка предоставляется вашим сервером авторизации (внешняя сторона, предоставившая вам маркер доступа). Если это так, вы можете вызвать конечную точку самоанализа и получить информацию о токене. Этот ответ используется для проверки правильности токена доступа, а также для получения утверждений, таких как имя пользователя. Пожалуйста, прочитайте больше об ответе на самоанализ по этой ссылке.

Кроме того, вы можете переключиться на [ OpenID Connect ] (OIDC) 3. Это будет включать идентификатор токена в ответе токена, который является JWT. Вы можете использовать это для получения имени пользователя (+ другая информация о пользователе) и аутентификации конечного пользователя в дополнение к проверке JWT. Проверьте, поддерживается ли OIDC вашим сервером авторизации.

Что касается обновления токена, у вас должен быть действительный токен доступа или действительный ответ токена, чтобы получить все вышеперечисленное. Обновление не имеет никакого значения для вашего приложения, кроме как для получения новых, обновленных токенов.

0

Вы можете попробовать что-то вроде декодирования вашего токена с помощью одной из библиотек на jwt.io, вы можете протестировать его, скопировав и вставив свой токен на сайт и проверив, содержит ли ваш токен нужную вам информацию. затем, если вы прокрутите вниз, есть много библиотек, которые вы можете использовать для декодирования токенов в вашем коде. Взгляните на официальную библиотеку Microsoft здесь, которую также можно установить через менеджер Install-Package System.IdentityModel.Tokens.Jwt

Ещё вопросы

Сообщество Overcoder
Наверх
Меню