Лучшие практики аутентификации API Salesforce.com для фоновых приложений - PullRequest
13 голосов
/ 02 апреля 2012

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

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

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

Ответы [ 3 ]

11 голосов
/ 02 апреля 2012

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

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

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

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

0 голосов
/ 08 апреля 2015

Аутентификация веб-сервера OAuth 2.0 лучше всего подходит для текущего варианта использования.

https://help.salesforce.com/HTViewHelpDoc?id=remoteaccess_oauth_web_server_flow.htm&language=en_US

0 голосов
/ 13 июня 2013

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...