Плагин Verifiable Credentials

Сводка: Используйте Verifiable Credentials для предоставления доступа к группам и значкам в Discourse.

:link: GitHub: https://github.com/coopcreds/discourse-verifiable-credentials
:arrow_right: Установка: Следуйте руководству по установке плагина.

Демонстрация

Вы можете протестировать этот плагин самостоятельно, следуя инструкциям по ссылке ниже. Вам будет выдана тестовая «Кооперативная учетная запись» (Cooperative Credential), которую вы сможете использовать для получения доступа к группе и получения значка на экземпляре Discourse для кооперативных учетных записей. Обратите внимание, что учетная запись предназначена только для тестовых целей и может быть отозвана без предупреждения.

https://coopcreds.com/test/

Поставщики

Плагин в настоящее время поддерживает следующих поставщиков Verifiable Credentials.

Поставщик Тип проверки Поддержка
MATTR OIDC Да
MATTR Callback Да
Verifiable Credentials Ltd - Частично

Плагин разработан для поддержки любого поставщика, но добавление дополнительных поставщиков требует некоторых работ по реализации. Если вы хотите добавить нового поставщика, пожалуйста, свяжитесь с нами.

Конфигурация

Для использования этого плагина необходимо некоторое понимание Verifiable Credentials. MATTR, основной поддерживаемый плагин поставщик, создал несколько видеороликов, актуальных для текущих опций плагина:

Этот плагин позволяет проверить учетную запись пользователя, чтобы предоставить ему доступ к группе(ам) или значку(ам) в Discourse. В следующих разделах описываются конфигурация проверки, группы и значка. Поскольку плагин в настоящее время поддерживает только MATTR, инструкции предполагают, что вы используете MATTR.

Верификатор

Тип конфигурации верификатора, который вы используете, будет зависеть от типа системы, с которой вы интегрируетесь. Если вы являетесь верификатором и настраиваете контролируемый вами Discourse, то вам, возможно, стоит использовать верификацию через обратный вызов. Если вы являетесь частью сети, которая полагается на единый верификатор, то есть вы являетесь «Зависимой стороной» (Relying Party), то вам, возможно, стоит использовать верификацию OIDC.

OIDC

Если вы используете верификатор OIDC (например, вы используете интеграцию MATTR Auth0), вам необходимо установить следующие настройки сайта:

  • verifiable credentials oidc: true
  • verifiable credentials mattr verifier id: Идентификатор (не DID) вашего верификатора OIDC
  • verifiable credentials mattr client id: Идентификатор клиента (client id) приложения клиента OIDC для вашего Discourse (обратите внимание, что это не идентификатор клиента вашего арендатора MATTR)
  • verifiable credentials mattr client secret: Секрет клиента (client secret) приложения клиента OIDC для вашего Discourse (обратите внимание, что это не секрет клиента вашего арендатора MATTR)

Callback

Если вы используете стандартную верификацию через обратный вызов, вам необходимо установить следующие настройки сайта:

  • verifiable credentials oidc: false
  • verifiable credentials mattr client id: Идентификатор клиента (client id) арендатора MATTR, где размещен верификатор
  • verifiable credentials mattr client secret: Секрет клиента (client secret) арендатора MATTR, где размещен верификатор
  • verifiable credentials mattr messaging did: DID с использованием keyType ed25519

Группа

Вы можете предоставлять доступ к группам, используя утверждения (claims) в проверенных учетных записях. Это означает, что вы можете избирательно предоставлять доступ к различным группам в вашем Discourse в зависимости от утверждений в учетной записи пользователя. Чтобы настроить группу для доступа через Verifiable Credentials, перейдите в «Управление» > «Членство» и установите следующие параметры:

  • 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
    

Callback

Если вы используете метод верификации Callback, вам также необходимо установить поле Identifier of credential that grants access to this group в идентификатор шаблона презентации, который вы хотите использовать для этой группы. Вы можете использовать разные шаблоны презентации для разных групп.

Значок

Вы можете выдавать значки пользователям, используя утверждения в проверенных учетных записях. В настоящее время это можно сделать только с помощью компонента заголовка (см. ниже). Используемая настройка сайта — verifiable credentials header badges, которая требует записей в следующем формате:

badge_id~~claim:value

Например:

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

Идентификатор значка можно получить из URL-адреса страницы значка, например:

/badges/9/autobiographer ## идентификатор значка — 9

Заголовок

Вы можете использовать выпадающее меню заголовка плагина для одновременного предоставления пользователям доступа к нескольким группам или к значкам и группам одновременно. Соответствующие настройки:

  • verifiable credentials header: true
  • verifiable credentials header groups: список названий групп (каждая группа должна быть уже настроена; см. выше)
  • verifiable credentials header badges: см. выше
  • verifiable credentials header info url: URL-адрес для ссылки «Узнать больше» в правом нижнем углу выпадающего меню.

Иконка заголовка появится, если пользователь не является членом группы, включенной в презентацию заголовка, или ему не был выдан значок, включенный в презентацию заголовка. Когда пользователь нажимает на нее, отображаются ресурсы, к которым он может получить доступ, проверив свои учетные записи.

Поддержка

Этот плагин создан в рамках проекта Cooperative Credentials, который поддерживается финансируемой ЕС лабораторией ESSIF Lab. Он будет использоваться в производственной среде несколькими зависимыми сторонами в сети Cooperative Credentials после ее запуска позже в этом году.

image           image

В планах

  • Добавить поддержку значков для конкретных групп.
  • Поддержка аутентификации пользователей через Verifiable Credentials.
  • Добавить дополнительных поставщиков, таких как Evernym и Trinsic.
16 лайков

Это чисто техническое примечание, но если вас интересует обсуждение стандартов вокруг того, что делает этот плагин (частично) — а именно интеграция OIDC с верифицируемыми учётными данными — то недавняя ветка из списка рассылки группы W3C CCG будет полезным чтением (особенно дискуссия между Ману и Тобиасом, техническим директором MATTR).

(Жаль, что такие обсуждения не проходят на экземпляре Discourse…)

6 лайков

Правильно ли я понимаю, что этот плагин работает только как потребитель?

Интересует, может ли один экземпляр Discourse быть поставщиком учетных данных для другого экземпляра Discourse.

Да, всё верно.

Нет, вам нужен внешний провайдер, например, использующий https://mattr.global/.

1 лайк