【发布时间】:2014-12-22 12:12:10
【问题描述】:
我正在为我们的 salesforce 实例创建一个连接的 Rails 应用程序。
我们的系统有一大群用户和少数系统管理员。 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 调用之前运行一些东西...
所以我的问题:
- 将此作为哈希而不是存储在活动记录中是否存在安全隐患,这很重要吗?
- 在 Oauth、API 调用...或两者都进行检查是否更好? (我吓坏了,都默认了……)
【问题讨论】:
标签: ruby-on-rails security oauth salesforce