繁体   English   中英

通过Salesforce API规范允许的用户(使用Rails和Restforce)

[英]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调用之前运行某些程序...

所以对我的问题:

  1. 将其作为哈希而不是存储在活动记录中是否对安全性有影响,这有多大意义?
  2. 在Oauth,API调用...或两者同时检查是否更好? (我吓坏了,默认情况下都使用...)

我不会做一系列管理员,这比让Salesforce规范权限要混乱得多。 如果您只想限制非管理员个人资料用户,那么我将首先在User模型和提供访问权限的用户上创建is_admin列。

我假设您的系统管理员在单个配置文件下,则可以通过在用户创建过程中调用Salesforce API来获取用户配置文件,从而确定用户是否是管理员。

但是,老实说,我会让Salesforce处理用户权限。 您最终将在应用程序中注入大量的复杂性,以管理次要的UX问题。

编辑-如何限制对ConnectedApp的访问:

  1. 转到ConnectedApp

在此处输入图片说明

  1. 选择ConnectedApp,然后单击“编辑”。

  2. 在OAuth策略下,将允许的用户更改为“管理员批准的用户已被预授权”,然后保存

在此处输入图片说明

  1. 向下滚动到“配置文件”部分,单击“管理配置文件”,选择要授予对应用程序访问权限的配置文件,然后保存

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM