Согласование токена доступа от другого зарегистрированного приложения - PullRequest
1 голос
/ 06 августа 2020

Тестируя Поток веб-сервера OAuth 2.0 для интеграции веб-приложений в Salesforce, я нашел способ согласовать токен доступа, сделав что-то несколько странное.

Вот сценарий .

Я создал две учетные записи:

  • phdezann+user01-mbpt@force.com
  • phdezann+user02-8wl6@force.com

Со второй учетной записью я Мы создали New Connected App и включили Enable OAuth Settings и получили пару clientId и secretId, часть протокола OAuth.

Затем я запросил код авторизации, перейдя по адресу:

https://login.salesforce.com/services/oauth2/authorize?client_id=<client_id_of_user02_instance>&redirect_uri=http://localhost:8080&response_type=code

Здесь , и это интересная часть , я вошел в систему с user01 и смог получить код авторизации в обратном вызове.

И, наконец, я попытался преобразовать этот код авторизации в токен доступа:

curl \
  --location \
  --request POST 'https://login.salesforce.com/services/oauth2/token' \
  --header 'Content-Type: application/x-www-form-urlencoded' \
  --data-urlencode 'grant_type=authorization_code' \
  --data-urlencode 'code=<authorization_code_from_user01>' \
  --data-urlencode 'client_id=<client_id_of_user02_instance>' \
  --data-urlencode 'client_secret=<client_secret_of_user02_instance>' \
  --data-urlencode 'redirect_uri=http://localhost:8080'

И это сработало. Я получил:

{
  "access_token": "00D2X00000....",
  "signature": "CSfC0khkT7...",
  "scope": "api",
  "instance_url": "https://eu13.salesforce.com",
  "id": "https://login.salesforce.com/id/00D2X000003IgQFUA0/0052X00000AP6AdQAL",
  "token_type": "Bearer",
  "issued_at": "1596728532049"
}

Я действительно не понимаю, как это возможно, я наверняка что-то здесь пропустил.

1 Ответ

0 голосов
/ 06 августа 2020

Это задумано и связано с OAuth2, а не с Salesforce. Если вы собираетесь создать мобильное приложение или какую-нибудь потрясающую интеграцию с вашим веб-сайтом - непрактично просить каждого администратора создать приложение, вставить ключи в ваше мобильное приложение и распространить его среди пользователей ... ключи, которыми вы управляете, а затем конечные пользователи решают, доверяют ли они вам, хотят ли они продолжить, устраивают ли они запрашиваемый вами уровень доступа ...

Вы можете вставить свои ключи в https://openidconnect.herokuapp.com/ или используйте его как есть и получите доступ к своим организациям.

См. Также https://salesforce.stackexchange.com/q/213666/799 и https://salesforce.stackexchange.com/q/70489/799

...