[英]Using Restforce gem with SalesForce API and Oauth 2.0
[英]Regulating Permitted users via Salesforce API (Using Rails & Restforce)
我正在创建一个连接到我们Salesforce实例的Rails应用程序。
我们的系统有大量用户和少数sysadmins。 Salesforce似乎在用户端通过用户配置文件处理了许多CRUD权限,但我还想确保只有经过批准的系统管理员才能“登录”应用程序,清除oauth并进行api调用。
我有一种感觉,如果不确保这一点,我们的其他用户将可以登录,但如果最终他们请求未设置为通过Salesforce权限查看的对象,则会引发错误。 但这很混乱...而且我还是不希望他们走那么远。
关于何时进行干预以使用Oauth并进行API调用保护应用程序是否有最佳实践/建议?
我正在使用出色的Restforce Gem,并使用omniauth来存储返回的用户详细信息。
我目前的想法是创建一个简单的数组:
@whitelisted_admins = [user1.uid, user2.uid, user3.uid]
然后在我的/models/user.rb
使用before_save检查user.name是否包含在数组中:
class User < ActiveRecord::Base
def self.from_omniauth(auth)
before_save { user.uid.in?(@whitelisted_admins) }
where(auth.slice(:provider, :uid).permit!).first_or_initialize.tap do |user|
user.provider = auth.provider
user.uid = auth.uid
user.name = auth.info.name
user.oauth_token = auth.credentials.token
user.refresh_token = auth.credentials.refresh_token
user.instance_url = auth.credentials.instance_url
user.save!
end
end
end
然后,我可以在每次Restforce API调用之前运行某些程序...
所以对我的问题:
我不会做一系列管理员,这比让Salesforce规范权限要混乱得多。 如果您只想限制非管理员个人资料用户,那么我将首先在User模型和提供访问权限的用户上创建is_admin
列。
我假设您的系统管理员在单个配置文件下,则可以通过在用户创建过程中调用Salesforce API来获取用户配置文件,从而确定用户是否是管理员。
但是,老实说,我会让Salesforce处理用户权限。 您最终将在应用程序中注入大量的复杂性,以管理次要的UX问题。
编辑-如何限制对ConnectedApp的访问:
选择ConnectedApp,然后单击“编辑”。
在OAuth策略下,将允许的用户更改为“管理员批准的用户已被预授权”,然后保存
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.