Могу ли я получить доступ ко всем данным пользователей с помощью маркера доступа Salesforce администратора той же организации

#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.

Это может помочь:

Комментарии:

1. Спасибо @eyescream. Я понял, но говорю, как компания. Я хочу создать резервную копию всех данных организации с помощью Salesforce. Допустим, есть миллион пользователей, и только для того, чтобы получить их данные(скажем, чат, сообщения, файлы и т.д.), Я собираюсь получить согласие миллион раз, я не думаю, что это было бы возможно, если бы для всех них существовал разный токен для доступа к их данным. Как мне справиться с этой проблемой ( именно поэтому я говорил о чем-то вроде разрешения уровня приложения), пожалуйста, помогите мне.

2. системный администратор с надписью «изменить все данные» и администратор, проверяющий, имеет ли профиль, по крайней мере, доступ «для чтения» ко всем полям в интересующих вас таблицах. потому что, если есть поле, которое администратор не может видеть, оно также не будет отображаться в вызовах api

3. Спасибо за разъяснение. Теперь я все понял.