Подтвердить что ты не робот

Лучшая практика для проверки подлинности API Salesforce.com для фоновых приложений

API Salesforce.com, похоже, предполагает, что вы всегда будете использовать приложение в качестве активного пользователя. Их методы аутентификации (Session ID и OAuth) поддерживают это, поскольку они оба требуют, чтобы аутентифицированный пользователь "делал что-то".

Какова стратегия, когда у вас есть фоновое приложение, которое нуждается в доступе к API? Примеры, которые я видел, запрашивают ваши полные учетные данные - имя пользователя, пароль и токен безопасности. Я не только не хочу знать или хранить эту информацию, но она может меняться (из политики паролей и т.д.), И я предпочел бы не отключать приложение из-за этого.

Какова "наилучшая практика" для долговечной аутентификации API SFDC, которая не требует взаимодействия с пользователем?

4b9b3361

Ответ 1

Запросы API Salesforce.com работают в контексте пользователя, идентифицированного sessionId (aka access_token) (единственное исключение - неавторизованные пользовательские API-интерфейсы).

Итак, чтобы совершать вызовы API, вам понадобится sessionId, вы можете получить его, как вы говорите, сохраняя токен имени пользователя/пароля/безопасности и вызывая логин (или поток username/password oauth2), когда вам нужно.

В качестве альтернативы вы можете использовать интерактивный поток OAuth, который требует от пользователя только один раз авторизации вашего приложения, после чего вам будет предоставлен долгоживущий токен, называемый токеном обновления. В любой момент после этого вы можете использовать службу токенов oauth2, чтобы получить новый access_token (который затем может выполнять вызовы API), используя только токен обновления.

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

Ответ 2

К сожалению, вам нужно использовать учетную запись для доступа к SF API. Вначале я думал, что целью создания удаленного доступа было избежать этого, но, увы, это не так.

Не уверен, что то, что я делаю, - это лучший способ сделать что-то, но я использую конкретный пользователь API, который мы создали для этой цели, и сохраняем учетные данные в файле конфигурации и шифруем пароль с помощью DPAPI. Я использую SOAP WS, поэтому я вызываю login (имя пользователя, psswd), и я использую этот идентификатор сеанса в последующих вызовах. Вы также можете получить свой идентификатор сеанса с помощью OAuth 2.0, но для этого вам необходимо создать приложение удаленного доступа, и вам потребуется еще имя пользователя/пароль.