#api #oauth-2.0 #salesforce #access-token
Вопрос:
Я могу получить токен обновления и доступа для администратора в Salesforce. Мой вопрос: аналогично Microsoft, смогу ли я получить доступ ко всем данным пользователей и их данным в одной организации/арендаторе с помощью этого токена. Я не уверен, что Salesforce написала об этом где-либо в своей документации. Я уже реализовал API для Microsoft(там у нас есть разрешение на приложение), там я использовал поток Client_credentials и могу получить доступ ко всем пользователям и их данным с помощью токена администратора, но я не уверен в Salesforce. Есть ли у Salesforce какая-либо концепция разрешений для приложений? Пожалуйста, помогите мне с этим.
Ответ №1:
О боже. «У огров есть слои».
Нет, это не гарантировано, даже если у вас есть доступ к системному администратору. (Фактическое имя профиля не имеет значения, все дело в флажках типа «Изменить все данные»). Даже в MAD могут быть поля, которые администратор может видеть в пользовательском интерфейсе, но вы не сможете использовать их в API, пока профиль администратора не будет исправлен. И вдобавок ко всему есть OAuth2.
1 — я линия защиты — «можете ли вы вообще видеть эту таблицу в базе данных», которая контролируется уровнем профиля/набора разрешений.
2-я строка — «хорошо, но можете ли вы увидеть / отредактировать / удалить эту конкретную запись в таблице«. Это может быть предоставлено с изменением всех данных, права собственности на записи, правил общего доступа, иерархии ролей…
3-я строка — «хорошо, итак, какие конкретные поля в этой записи вы можете видеть/редактировать«. Это относится к профилям/наборам разрешений и безопасности на уровне полей (FLS). Пользовательский интерфейс SF несколько смягчен для системных администраторов, но FLS применяется в REST API (не помните об API SOAP). Так что БЕЗУМИЯ недостаточно, ваш администратор SF должен обратить внимание и проверить, поставить галочку во всех флажках… Если вы запросите поле, которое вы не должны видеть, ошибка будет такой же, как если бы вы допустили опечатку/поле действительно не существовало.
Если бы вы использовали SOAP API или поток имени пользователя и пароля OAuth2, это могло бы быть концом. Но поскольку вы используете другой поток и получаете токены обновления — области OAuth2 выходят на первое место.
Допустим, вы создали потрясающее мобильное приложение и разрешили войти в него с помощью Salesforce. Сколько вам нужно сделать с данными пользователя SF и на какую сумму он собирается дать согласие. Основная информация о пользователе, электронная почта, возможно, публикация чего — то в ленте Чата- конечно. Полный доступ к базе данных — ни в коем случае. Области OAuth ограничивают возможности подключающегося приложения, даже если к нему обращается системный администратор. Если все, что у вас есть, — это информация о пользователе Chatter и OpenID-вы получите идентификатор сеанса в своем приложении, но вы не сможете повысить его и запускать запросы к учетным записям, контактам и т. Д.
Это огромная тема, и часть ее заключается в том, чтобы задавать Google правильные вопросы. Параноидальная организация может иметь права пользователя, установленные для системного администратора, например, при входе в систему из офисной сети/VPN, но ограниченные при входе из дома. Так что на самом деле наличие токов не является гарантией успеха.
TL;DR — проверьте, есть ли в нем «Изменить все данные» и все флажки, отмеченные рядом с полями, которые вы должны видеть в безопасности на уровне полей. Это будет хорошее начало, но их может быть больше, и администраторам может потребоваться создать специального пользователя интеграции только для вас. Системный администратор не означает root, особенно с доступом к API.
Это может помочь:
- https://trailhead.salesforce.com/en/content/learn/modules/data_security
- https://resources.docs.salesforce.com/latest/latest/en-us/sfdc/pdf/salesforce_security_impl_guide.pdf
- https://help.salesforce.com/articleView?id=sf.remoteaccess_oauth_tokens_scopes.htmamp;type=5
- https://help.salesforce.com/articleView?id=sf.remoteaccess_oauth_username_password_flow.htmamp;type=5 («этот поток не поддерживает области«, поэтому вы получаете полный доступ, но также «этот ответ не отправляет маркер обновления.«)
- https://trailhead.salesforce.com/en/content/learn/modules/connected-app-basics/connected-app-basics-api-integration но подумайте о том, чтобы проверить весь тренинг, https://trailhead.salesforce.com/en/content/learn/trails/build-integrations-using-connected-apps
Комментарии:
1. Спасибо @eyescream. Я понял, но говорю, как компания. Я хочу создать резервную копию всех данных организации с помощью Salesforce. Допустим, есть миллион пользователей, и только для того, чтобы получить их данные(скажем, чат, сообщения, файлы и т.д.), Я собираюсь получить согласие миллион раз, я не думаю, что это было бы возможно, если бы для всех них существовал разный токен для доступа к их данным. Как мне справиться с этой проблемой ( именно поэтому я говорил о чем-то вроде разрешения уровня приложения), пожалуйста, помогите мне.
2. системный администратор с надписью «изменить все данные» и администратор, проверяющий, имеет ли профиль, по крайней мере, доступ «для чтения» ко всем полям в интересующих вас таблицах. потому что, если есть поле, которое администратор не может видеть, оно также не будет отображаться в вызовах api
3. Спасибо за разъяснение. Теперь я все понял.