Salesforce Различные файлы WSDL и когда их использовать - PullRequest
2 голосов
/ 26 августа 2011

Я работаю над функцией Salesforce, где мы пытаемся представить один метод веб-службы в пользовательском классе «Партнеру», чтобы они могли генерировать потенциальных клиентов.

Класс / метод создан/ проверено и функционирует должным образом, поэтому мы работаем над реализацией.

Я изучал всю документацию и рецепты поваренной книги Salesforce, но все, что я вижу, говорит только об использовании WSDL-файлов Enterprise или Partner., что дало бы им больше доступа, чем я считаю нужным.

Если я импортирую файл WSDL, сгенерированный из самого класса, у меня будет доступ к методам, но я не могу найти какой-либоспособ входа в систему (используя их примеры в качестве ссылки).

У меня есть 2 основных вопроса здесь.

  1. Мне действительно нужно дать полный доступ к моему экземпляру, чтобы выставить один метод?
  2. Какой минимальный минимум я должен предоставить?

Ответы [ 2 ]

5 голосов
/ 26 августа 2011

WSDL сам по себе является лишь определением веб-службы и не контролирует фактический доступ к вашей организации.Чтобы получить доступ к вашей организации, идентификатор сеанса должен быть включен в каждый запрос к веб-сервису.Идентификаторы сеансов привязаны к определенному пользователю в вашей организации, поэтому вы также можете контролировать доступ к ним, предоставляя им свой профиль и блокируя доступ только к тому, что ему нужно.Профили связаны с объектами / полями, а не с самими веб-службами, и думают о том, что им потребуется для доступа с точки зрения данных, поскольку они всегда могут использовать тот же сеанс для доступа к другим веб-службам.В профиле также есть элементы управления доступом на уровне класса Apex, но это не мешает им выполнять те же операции с данными через API-интерфейсы SOAP, поэтому убедитесь, что их профиль предоставляет только то, к чему им нужен доступ, и это будет применятьсяповсюду.

Что касается получения идентификатора сеанса, это в некоторой степени зависит от того, как вы взаимодействуете с ними и каково их приложение.В общем, рекомендуемый способ - использовать OAuth (называемый «Удаленный доступ» в справке Salesforce), благодаря чему имена пользователей и пароли не должны использоваться в их приложении, а скорее отправляются непосредственно в Salesforce к концу.пользователь.В зависимости от приложения можно выбрать несколько различных потоков, которые описаны в справке.Документ REST API имеет хорошее введение в использование OAuht для получения идентификатора сеанса (он же «токен» в OAuth).Говоря о REST, вы можете даже рассмотреть возможность использования нового Apex REST API , который позволяет создавать аналогичные пользовательские веб-сервисы из Apex, но с интерфейсами REST.

API-интерфейсы для партнеров и предприятий такжеиметь метод login (), что удобно, поскольку он также основан на SOAP, но теряет предпочтение, поскольку приложение должно напрямую обрабатывать имя пользователя и пароль.Если вы воспользуетесь этой опцией, вы войдете в систему с использованием API-интерфейса Partner и Enterprise, получите идентификатор сеанса и затем переключитесь на свой пользовательский веб-сервис.Так что, да, для этой опции вам придется использовать как WSDL, так и WSDL для Partner или Enterprise, и просто игнорировать другие методы, но опять же, наличие только тех методов не означает, что они могут получить к ним доступ (например, если вы удалитеУдалить из своего профиля для данного типа объекта, они не смогут использовать метод delete () для него).

1 голос
/ 26 августа 2011

То, что вы предоставляете, и то, что они могут сделать, - это две разные вещи: если вы предоставите им учетные данные пользователей, то они могут делать все, что может делать пользователь, независимо от того, какой WSDL они используют.Таким образом, вы захотите создать пользователя с ограниченными разрешениями, обладающего минимальными правами на выполнение того, что вы хотите.

Как только вы это получите, не имеет значения, если вы дадите им предприятие, партнерили пользовательский WSDL.

Если вы дадите им класс apex WSDL, им потребуется какой-либо способ входа в систему, например, вход через партнерский WSDL, один из потоков OAuth2, веб-таблица или пользовательскийссылка на сайт.(в зависимости от точного сценария).

Наконец, вы видели функцию web2lead, которая позволяет создавать потенциальных клиентов в вашей учетной записи Salesforce без необходимости использования WSDL или учетных данных.

...