提供对 Salesforce 中对象的认证的 Zope PAS 插件
项目描述
概述
使用 Zope 的可插拔身份验证服务 (PAS) 和 PlonePAS 的架构,Salesforce Auth Plugin 为在 Plone 门户内管理站点用户作为任意对象提供基础设施。通过 Salesforce.com 进行 Plone 用户管理的特性和功能包括
可配置的 SFObject 类型,用作认证的 Plone 用户
在 SFObject 上可配置的用户名和密码字段,用于凭证检查
可选的密码加密
可选的将用户数据从 Salesforce.com 缓存到以提高性能
将新的用户作为指定的 SFObject 类型从 Plone 门户添加到 Salesforce.com
从存储在 Salesforce.com 中的 Plone 用户检索和设置属性
安装、配置和使用
要求
拥有从http://www.salesforce.com获取API访问权限的Active Salesforce.com账户
针对Plone 3.x和4.0开发和测试。
salesforcebaseconnector(及其先决条件,如‘beatbox’ Python产品)配置salesforcebaseconnector的说明在产品的README.txt中,可在此处下载:http://plone.org/products/salesforcebaseconnector
对PAS和PlonePAS基础设施和功能有一定的了解。
将软件安装到Plone的步骤
重要:确保您按照上述说明安装/配置salesforcebaseconnector并设置您的登录名和密码。
像安装任何正常Plone产品一样安装salesforceauthplugin产品(使用添加/删除产品或快速安装器)。
配置插件
尽管您已经安装了Salesforce Auth插件,该插件创建并激活了一个用于身份验证、用户创建和配置文件管理的PAS插件,但这不会影响您的Plone站点的身份验证方案,直到您完成一些额外的配置。
通过ZMI在acl_users/salesforceauthmultiplugin配置salesforceauthplugin。(这是您Plone站点内的acl_users,而不是Zope根目录中的那个。)
至少,您需要确定和配置以下内容在Salesforce Auth插件
您将作为网站内用户的Salesforce.com对象(即联系人、潜在客户、帐户等)(记住,如果您想将多个Salesforce对象视为用户,可以通过设置多个Salesforce Auth插件来实现)。有关此信息的更多详细信息,请参阅本文件的“注意事项”。
上述所选SFObject的字段将作为身份验证的登录名和密码凭据。在此阶段,Salesforce Auth插件假定凭据将包括并限于用于“用户名”的某些字段,以及一个可选的加密感知字段用于密码。这看起来像
password|Password__c username|UserName__c此外,您还可以启用密码加密,设置额外的身份验证要求(以SOQL语句的形式),并选择在Salesforce.com中管理哪些属性,而不是在可变属性中。这看起来像
assistant_name|AssistantName department|Department
缓存
除了在您的acl_users对象中创建和激活一个用于身份验证、用户创建和配置文件管理的PAS插件之外,Salesforce Auth插件还与创建的插件关联一个RAM缓存。默认情况下,缓存期设置为10分钟。这对于确保Salesforce Auth插件的使用不会对您Plone站点的性能产生不利影响至关重要。
Salesforce Auth插件缓存用户枚举和用户属性。如果您只通过Plone管理用户和用户属性,则缓存不会产生任何不利影响,因为Salesforce Auth插件在更改发生时会使缓存无效。但是,请注意,当通过Salesforce.com修改用户时,Plone可能需要10分钟才能意识到更改。这适用于通过Salesforce.com进行的以下任何修改
新用户添加
用户删除
用户的属性更改
要修改缓存期:在ZMI中,转到您的门户根目录中的SalesforceAuthPluginCache。
要删除缓存:在ZMI中,转到acl_users/salesforceauthmultiplugin,并转到缓存选项卡。
用户身份验证还可以选择性地进行缓存。默认情况下是禁用的,除非您通常有用户从Salesforce Auth插件以外的其他来源登录Plone,否则可能不需要。要启用它,请在config.py中将CACHE_PASSWORDS设置为True。这可能会提高性能,但也会在通过salesforce.com更改密码时引入10分钟的延迟。
通过网络测试
让我们尝试加入一个网站,看看登录是否出现在Salesforce.com中
插件安装后,打开浏览器并输入您的Plone实例的URL。您可能需要先注销,这可能需要关闭并重新打开浏览器。
在Plone 3.0中,默认禁用注册。
作为网站管理员,转到“网站设置->安全”,然后勾选“启用自助注册”选项。
请确保您的新Plone网站的邮件服务器设置(以及“发件人:”地址)已设置,以便在您创建新帐户时,Plone可以发送欢迎邮件。
单击加入链接(右上角,登录链接旁边)以创建新登录。
添加用户并登录到您的Salesforce帐户,网址为http://www.salesforce.com。您刚刚添加的用户应该出现在您的联系人列表中。
然后,您应该能够注销Plone并尝试以您刚刚创建的新用户身份登录。请参阅本文件的“自定义”部分,了解有关如何进一步微调用户体验的提示。
自定义
有关对个性化表单进行简单调整的信息,请参阅该包文档目录中的“customizing_personalize.txt”中的文档。
提示
如果您在Salesforce对象上设置日期或日期时间属性,请确保您的输入字段类型为日期时间格式。手动操作如下
<input type="text" name="birthdate:date"/>
注意事项
截至目前,联系人、帐户和潜在客户对象已得到了充分的测试,是该产品的目标用例。人们可能经常想使用一些自定义Salesforce.com对象作为用户对象。虽然在技术上,可能任何对象都可以用于身份验证,假设已经配置了用户名和密码字段,其他Salesforce.com对象可能或可能无法与所有可用的PAS配置选项一起使用。
作为关于哪些Salesforce对象可能与此产品一起工作的注意事项的后续,截至目前,具有不接受字符串数据类型的要求字段的对象将无法作为用户添加实用工具使用。
例如,事件对象需要分钟长度的整数以及HTML4格式的日期/时间作为事件开始时间。相比之下,doAddUser接口要求在签名中仅传递登录名和密码。因此,当通过Salesforce.com API调用create时,我们使用提供的登录值用于创建对象所需的所有必要字段。因此,PAS加入功能不太可能向doAddUser提供所有更复杂Salesforce对象(如事件)所需的所有必要字段的数据类型,以便允许对象的初始创建。当然,PlonePAS将随后继续更新(使用设置属性功能)那些在注册过程中被临时存储登录值的字段,因为这是在doAddUser调用之后发生的。
自助服务用户和Salesforce.com用户尚未与该产品一起进行测试。它们可能或可能无法正常工作。
其他资源
产品主页是http://plone.org/products/salesforceauthplugin。有关文档和问题跟踪器的文档区域和问题跟踪器可用。
存在一个名为Plone Salesforce Integration的Google Group,其唯一目的是讨论和开发使Plone与Salesforce.com良好集成的工具。如果您有问题,加入该组并向邮件列表发布可能是获得支持的最佳方式。
如果失败,请尝试使用 Plone 用户邮件列表或 freenode 上的 #plone IRC 频道寻求支持。如果您在那里无法得到问题的解答,或者有兴趣帮助开发产品,请查看以下联系方式。
鸣谢
西雅图和波特兰的 Plone & Salesforce 团队
Jon Baldivieso <jonb –AT– groundwire –DOT– org>
Andrew Burkhalter <andrewburkhalter –AT– gmail –DOT– com>
Brian Gershon <briang –AT– webcollective –DOT– coop>
David Glick <davidglick –AT– groundwire –DOT– org>
Jesse Snyder <jesses –AT– npowerseattle –DOT– org>
感谢 Salesforce.com 基金会和 Enfold Systems 为 beatbox 以及 Salesforce Auth 插件的原始概念代码所做出的捐赠和工作(参见:http://gokubi.com/archives/onenorthwest-gets-grant-from-salesforcecom-to-integrate-with-plone)
请查看变更日志,了解帮助特定功能或修复特定错误的人员名单。
许可
根据 GPL 许可证分发。
请参阅 LICENSE.txt 和 LICENSE.GPL 以获取详细信息。
运行测试
强烈建议您在一个免费的开发者帐户上运行测试,而不是真实的 Salesforce.com 生产实例。… 话虽如此,要运行 Salesforce Auth 插件的测试,请执行以下操作
配置您的 Salesforce.com 实例
为了成功运行所有自动化单元测试,需要在您的 Salesforce.com 实例中进行一些修改。
在许多测试中,身份验证、用户创建和修改都是针对 Salesforce.com 联系人和/或潜在客户对象进行的。具体来说,单元测试创建对象,然后对两个自定义字段:密码和用户名进行身份验证。
为了使所有测试都能成功运行,请创建并配置以下字段,如下所示
字段标签
字段名称
字段类型
密码
密码
文本(100)
用户名
用户名
文本(50)
喜爱的布尔值
FavoriteBoolean
复选框
喜爱的浮点数
FavoriteFloat
数字(13, 5)
注意:您可以接受其他字段属性的默认值。
读取
运行测试 –> 从 SalesforceBaseConnector 中选择“在类 Unix 环境中运行测试”,SalesforceBaseConnector 是依赖项,因此您应该拥有它 :)
运行测试
而不是运行 salesforcebaseconnector 的测试套件,请执行以下操作
bin/instance test -s collective.salesforce.authplugin
如果您在运行测试时遇到问题,请参阅 SalesforceBaseConnector 中的“关于运行测试的常见问题解答”。
变更日志
1.5.2 (2011-12-20)
错误修复:如果插件已被删除,则在不安装时不会中断。[davisagli]
1.5.1 (2011-01-26)
修复了一个意外持久化的“baseconnector”属性的错误。[rocky]
1.5 (2010-11-24)
不要尝试检索组的属性。[davisagli]
目前不允许通过电子邮件属性进行搜索,这是一个针对 Plone 用户和组控制面板的优化。[davisagli]
在完成完全枚举后查询多个用户的存在或用户属性时的优化:在枚举期间获取属性并填充缓存。[davisagli]
处理由 Plone 4 会话插件提供的 Unicode 用户 ID。[davisagli]
由于我们将它们视为相同的方式,因此在 enumerateUsers 缓存键中不要将登录和 ID 分开。[davisagli]
在多个身份验证插件中使用时的优化:使用对象类型“提示”的映射以避免不必要的查询。还包括插件_id 在缓存键中,以避免多个插件覆盖彼此的缓存。[davisagli]
优化:在已知将要发生的调用期间身份验证时填充 getPropertiesForUser 和 enumerateUsers 缓存。[davisagli]
1.4 (2010-05-12)
修复了传递给 enumerateUsers 的 ID 和登录作为 Unicode 字符串的错误。[davisagli]
使调用安装方法时能够指定插件ID,以便安装多个认证插件。[davisagli]
更新了一个使用已弃用调用签名的查询调用。[davisagli]
使属性插件设置sf_obj_type属性,以指示与Salesforce认证插件关联的sObject类型。如果正在使用多个Salesforce认证插件,这可能很有用。[davisagli]
1.3 (2010-02-24)
修复了添加后无法删除额外认证条款的问题。[davisagli]
修复了在配置了额外认证条款时创建用于列举用户的查询的问题。[davisagli]
1.2 (2010-01-25)
为问题添加了 workaround,即从Salesforce返回空值的用户属性类型无法猜测,导致Plone用户首选项页面以及其他获取完整属性表的程序中断。[davisagli]
1.1 (2009-12-17)
现在支持Zope 2.12和Plone 4。[davisagli]
如果凭证不包含登录名和密码(例如,如果它们来自会话插件),则不要尝试进行认证。这可以避免一些虚假的吞没异常,并极大地减少将CACHE_PASSWORDS打开以避免不必要的Salesforce查询的需要——尽管如果您经常从其他来源登录用户(包括Salesforce),则仍然打开它可能是个好主意。[davisagli]
1.1rc1(2009-09-16)
在尝试连接Salesforce时,如果遇到SoapFaultError,则捕获异常,记录警告,并返回None,以便PAS尝试下一个插件。这使得在Salesforce中的密码更改后更容易恢复。[davisagli]
1.1b1(2009-09-08)
更新查询调用以使用完整的SOQL语句。[davisagli]
_buildAuthenticationQuery现在返回完整的SOQL语句,而不是salesforcebaseconnector的query方法之前期望的3个参数的老式参数集。[davisagli]
更新了对beatbox的依赖项版本规范。[davisagli]
1.0b2
修复了在使用collective.salesforce.authplugin时,如果启用配置常量CACHE_PASSWORDS存在的安全漏洞。SalesforceAuthPluginCache RAM Cache Manager中存储的视图 authenticateCredentials-username不包含用户密码的散列,因此允许其他人使用正确的用户名(但错误的密码)登录门户,只要使用正确凭证成功登录,就可以在缓存期间登录。尽管CACHE_PASSWORDS默认是禁用的,但大多数用户可能已经启用此选项,试图提高性能或节省Salesforce.com API请求。建议启用CACHE_PASSWORDS的版本低于1.0b2的用户立即升级![andrewb,感谢Quintagroup的发现和补丁]
停止使用商标Salesforce.com图标。[davisagli]
更优雅地处理Plone的默认共享选项卡,该选项卡在id、登录名和全名中搜索给定查询的相似之处。后者导致错误的结果,并且通常完全超过来自表单本身的XHR调用的超时时间。workaround是检查搜索参数中的全名,如果没有在“认证”或“属性”中进行映射,则将搜索查询视为登录名,以便搜索不会超时并丢失其他有效结果。[jessesnyder]
用户列举考虑了额外的条件子句,该子句之前在认证中得到了支持,但各种搜索表单会根据站点的配置返回不符合条件的用户。[andrewb]
1.0b1
以Salesforce.com Foundation、Enfold Systems、ONE/Northwest、NPower Seattle、Web Collective、Plone/Salesforce集成团队(http://groups.google.com/group/plonesf)的各种其他证明概念实现为历史影响为基础,发布了基于egg的Salesforce认证插件产品。[感谢Salesforce.com Foundation、Enfold Systems、ONE/Northwest、NPower Seattle、Web Collective、Plone/Salesforce集成团队]
项目详情
collective.salesforce.authplugin-1.5.2.zip 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 95481d2721ad7a3298f2787ef4054e501a72753cbae8296a2ed095c559eb2e7a |
|
MD5 | eb29767f750e2ef6211e8065251cc8dc |
|
BLAKE2b-256 | ab6632cec88aefe5d482b2fa1adba66333dde90e91f54ef1a0b49288bd2be6f3 |