可验证凭证插件

摘要: 使用 可验证凭证 为 Discourse 中的群组和徽章授予访问权限。

:link: GitHub: https://github.com/coopcreds/discourse-verifiable-credentials
:arrow_right: 安装: 遵循 插件安装指南

演示

您可以按照下面的链接中的步骤自行试用此插件。您将获得一个测试“合作凭证”,然后可以使用它来获得群组访问权限,并在合作凭证 Discourse 实例上获得徽章。请注意,凭证仅供测试之用,可能会在恕不另行通知的情况下被撤销。

https://coopcreds.com/test/

提供商

该插件目前支持以下可验证凭证提供商。

提供商 验证类型 支持
MATTR OIDC
MATTR 回调
Verifiable Credentials Ltd - 部分

该插件旨在支持任何提供商,但添加其他提供商确实需要一些实现工作。如果您想添加其他提供商,请联系我们。

配置

使用此插件需要对可验证凭证有一定的了解。MATTR 是该插件目前支持的主要提供商,他们制作了一些与当前插件选项相关的视频:

此插件允许您验证用户的凭证,以便让他们在 Discourse 中访问群组或徽章。以下各节将介绍验证、群组和徽章的配置。由于该插件目前仅支持 MATTR,因此说明假定您正在使用 MATTR。

验证器

您使用的验证器配置类型将取决于您所集成的系统类型。如果您是验证者并正在设置您自己控制的 Discourse,那么您可能希望使用 回调验证。如果您是依赖于单个验证器的网络的一部分,即您是“依赖方”,那么您可能希望使用 OIDC 验证。

OIDC

如果您正在使用 OIDC 验证器(例如,您正在使用 MATTR Auth0 集成),则需要设置以下站点设置:

  • verifiable credentials oidc: true
  • verifiable credentials mattr verifier id: 您的 OIDC 验证器的 ID(不是 DID)
  • verifiable credentials mattr client id: 您的 Discourse 的 OIDC 客户端应用程序的客户端 ID(请注意,这不是您的 MATTR 租户客户端 ID)
  • verifiable credentials mattr client secret: 您的 Discourse 的 OIDC 客户端应用程序的客户端密钥(请注意,这不是您的 MATTR 租户客户端密钥)

回调

如果您正在使用标准的 callback 验证,则需要设置以下站点设置:

  • verifiable credentials oidc: false
  • verifiable credentials mattr client id: 托管验证器的 MATTR 租户的客户端 ID
  • verifiable credentials mattr client secret: MATTR 租户的客户端密钥,其中托管着验证器
  • verifiable credentials mattr messaging did: 使用 keyTypeed25519 的 DID

群组

您可以使用已验证凭证中的声明来授予对群组的访问权限。这意味着您可以根据用户凭证中的声明,有选择地授予对 Discourse 中不同群组的访问权限。要设置一个可以通过可验证凭证访问的群组,请转到“管理” > “成员资格”并设置以下内容:

  • Allow users to join by verifiable credentials: true

  • Show verifiable credentials button on this group to non members: (不言而喻)

  • Redirect users to url upon verification.: 例如,如果您使用凭证让用户访问群组有权访问的类别,请使用此字段在验证过程完成后将用户重定向到该类别。

  • Cumulative list of claim(s) that grants access to this group. Format: key:value.: 请注意,此列表是累积的,这意味着用户需要拥有其凭证中的所有声明才能获得访问权限。示例

    https://coopcreds.com/cooperativeMembershipType:member
    https://coopcreds.com/cooperative:pavilion
    

回调

如果您正在使用回调验证方法,那么您还必须将“Identifier of credential that grants access to this group”设置为您要用于该群组的演示模板的 ID。您可以为不同的群组使用不同的演示模板。

徽章

您可以使用已验证凭证中的声明向用户授予徽章。目前,您只能使用标题组件(见下文)来执行此操作。要使用的站点设置是 verifiable credentials header badges,它需要以下格式的条目:

badge_id~~claim:value

例如

34~~https://coopcreds.com/cooperativeMembershipType:member

您可以从徽章页面的 URL 中获取徽章的 ID,例如:

/badges/9/autobiographer ## 徽章 ID 为 9

标题

您可以使用插件的标题下拉菜单一次授予用户对多个群组的访问权限,或者同时授予徽章和群组的访问权限。相关设置是:

  • verifiable credentials header: true
  • verifiable credentials header groups: 群组名称列表(每个群组必须已配置;见上文)
  • verifiable credentials header badges: 见上文
  • verifiable credentials header info url: 下拉菜单右下角“了解更多”链接的 URL。

如果用户不是包含在标题演示中的群组的成员,或者尚未获得包含在标题演示中的徽章,则标题图标将显示出来。当用户单击它时,它将显示他们可以通过验证其凭证来访问的资源。

支持

此插件是 Cooperative Credentials Project 的一部分,该项目由欧盟资助的 ESSIF Lab 支持。今年晚些时候,当合作凭证网络上线时,它将被多个依赖方投入生产使用。

coopcreds.com
essif-lab.eu

待办事项

  • 添加特定于群组的徽章支持。
  • 支持通过可验证凭证进行用户身份验证。
  • 添加其他提供商,如 EvernymTrinsic
16 个赞

这是一份纯粹的技术说明,但如果您对该插件(部分)正在做的事情(即 OIDC 与可验证凭证集成)的标准辩论感兴趣,那么 W3C CCG 小组邮件列表上的这个最新帖子是一个很好的阅读材料(特别是 Manu 和 Tobias(MATTR 的 CTO)之间的讨论)。

(我希望这样的讨论能在 discourse 实例上进行……)

6 个赞

我理解得对吗,这个插件仅作为消费者工作?

我想知道一个 Discourse 实例是否可以成为另一个 Discourse 实例的凭证提供者。

是的,没错。

不可以,您需要一个外部提供商,例如使用 https://mattr.global/ 的提供商。

1 个赞