【问题标题】:How To Programmatically Add OpenID Users To Plone Site如何以编程方式将 OpenID 用户添加到 Plone 站点
【发布时间】:2014-09-07 06:53:11
【问题描述】:

在某些 OpenID 用户首次登录我的 Plone 站点之前,我需要为他们提供角色(包括成员角色)、成员数据和用户文件夹。也就是说,我需要以编程方式将 OpenID 用户添加到我的 Plone 站点。 portal_registration.addMember 无法添加 OpenID 用户。 plone.openid 有自己的 PAS 插件,它不创建成员对象。我该怎么做才能在 setuphandler 中复制?执行此操作的常用方法是手动登录 OpenID 用户,然后在登录后添加角色、成员数据和共享。但是,该用户故事无法以编程方式复制。

【问题讨论】:

    标签: plone


    【解决方案1】:

    唯一重要的是为每个用户生成的用户 ID。应该可以预先创建常规成员,其用户 id 与 open id 身份 url 匹配,为他们分配角色,然后使用 openid(仅)作为这些用户的替代身份验证方法。

    更新: 正如 Chris 在下面评论的那样,无法通过 Plone UI 添加具有 URL 作为 id 的用户,但必须通过 ZMI(Zope 管理界面)将它们直接创建到 PAS 用户文件夹中。

    【讨论】:

    • 假设我有带有预配置用户帐户的 ServiceX(特定于应用程序的权限和查看访问权限)。什么是用户名/openid_key/我应该要求用户发送给我的任何内容?然后我将预配置的服务帐户链接到该 OpenID 帐户。假设用户使用 Google 或 Yahoo OpenID 提供商? OpenID 提供商是否会返回电子邮件地址,以便我可以链接预配置的帐户?
    • 恐怕答案是否定的。 Plone 中当前默认的 OpenID 实现只是将 OpenID 身份 url 分配为用户 ID。并且该 url 可能不包含电子邮件地址,并且每个提供商都不同。为了支持这一点,plone.openid 应该升级以支持 OpenID 属性交换扩展。
    • 我曾尝试从 OpenID URL 创建成员,但 URL 包含在用户 ID 中无效的字符。如问题中所述,portal_registration.addMember 不会为用户标识获取 URL。我感谢有人终于回答。但是两年前我在处理需要这个的应用程序时没有找到答案,我放弃了使用 plone.openid 并且现在换了一份工作。这一切都没有实际意义,因为 OpenID 已死,我们使用的 OpenID 提供程序崩溃了,即将推出的 plone.login 将支持 OAuth。然而,它将如何将 OAuth 身份验证与成员对象联系起来是另一回事。
    猜你喜欢
    • 2012-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-18
    • 2015-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-12
    相关资源
    最近更新 更多