Verifiable Credentials プラグイン

概要: Discourse でグループやバッジへのアクセスを許可するために Verifiable Credentials を使用します。

:link: GitHub: https://github.com/coopcreds/discourse-verifiable-credentials
:arrow_right: インストール: プラグインのインストールガイドに従ってください。

デモ

以下のリンクの手順に従って、このプラグインを自分で試すことができます。「Cooperative Credential」が発行され、それを使用してグループへのアクセス権を取得し、cooperative credentials Discourse インスタンスでバッジを付与されます。この認証情報はテスト目的のみであり、予告なく取り消される可能性があることに注意してください。

https://coopcreds.com/test/

プロバイダー

現在、このプラグインは以下の検証可能な認証情報プロバイダーをサポートしています。

プロバイダー 検証タイプ サポート
MATTR OIDC はい
MATTR コールバック はい
Verifiable Credentials Ltd - 部分的

このプラグインは、あらゆるプロバイダーをサポートするように構築されていますが、追加のプロバイダーを追加するには実装作業が必要です。別のプロバイダーを追加したい場合は、お問い合わせください。

設定

このプラグインを使用するには、検証可能な認証情報に関するいくつかの理解が必要です。MATTR は、現在プラグインでサポートされている主要なプロバイダーであり、関連するビデオがいくつかあります。


このプラグインを使用すると、ユーザーの認証情報を検証して、Discourse のグループまたはバッジへのアクセス権を付与できます。以下のセクションでは、検証、グループ、バッジの設定について説明します。このプラグインは現在 MATTR のみをサポートしているため、手順は MATTR を使用することを前提としています。

検証者

使用する検証者設定の種類は、統合するシステムの種類によって異なります。検証者であり、自身が管理する Discourse を設定している場合は、コールバック検証を使用したい場合があります。単一の検証者に依存するネットワークの一部である場合、つまり「信頼できる当事者」である場合は、OIDC 検証を使用したい場合があります。

OIDC

OIDC 検証者を使用する場合(たとえば、MATTR Auth0 Integration を使用している場合)、次のサイト設定を設定する必要があります。

  • 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 テナントのクライアントシークレットではないことに注意)

コールバック

標準のコールバック検証を使用する場合は、次のサイト設定を設定する必要があります。

  • 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
    

コールバック

コールバック検証方法を使用している場合は、そのグループに使用したいプレゼンテーションテンプレートの ID を Identifier of credential that grants access to this group に設定する必要があります。グループごとに異なるプレゼンテーションテンプレートを使用できます。

バッジ

検証可能な認証情報内のクレームを使用して、ユーザーにバッジを付与できます。現在、ヘッダーコンポーネント(下記参照)を使用してのみこれを行うことができます。使用するサイト設定は verifiable credentials header badges で、次の形式のエントリが必要です。

badge_id~~claim:value

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

バッジの ID は、バッジのページの URL から取得できます。例:

/badges/9/autobiographer ## バッジ ID は 9

ヘッダー

プラグインのヘッダードロップダウンを使用して、複数のグループに一度にアクセスを許可したり、バッジとグループの両方に同時にアクセスを許可したりできます。関連する設定は次のとおりです。

  • verifiable credentials header: true
  • verifiable credentials header groups: グループ名のリスト(各グループは既に設定されている必要があります。上記参照)
  • verifiable credentials header badges: 上記参照
  • verifiable credentials header info url: ドロップダウンの右下にある「詳細はこちら」リンクの URL。

ヘッダーアイコンは、ユーザーがヘッダープレゼンテーションに含まれるグループのメンバーでない場合、またはヘッダープレゼンテーションに含まれるバッジを付与されていない場合に表示されます。ユーザーがそれをクリックすると、認証情報を検証することでアクセスできるリソースが表示されます。

サポート

このプラグインは、EU 資金による ESSIF Lab によってサポートされている Cooperative Credentials Project の一部として構築されています。今年後半に稼働する Cooperative Credentials ネットワークの複数の信頼できる当事者によって本番環境で使用されます。

Cooperative Credentials Project
ESSIF Lab

今後の予定

  • グループ固有のバッジサポートを追加します。
  • 検証可能な認証情報によるユーザー認証をサポートします。
  • EvernymTrinsic などの追加プロバイダーを追加します。
「いいね!」 16

これは純粋に技術的な注釈ですが、このプラグインが(部分的に)行っていること(つまり、OIDCと検証可能な資格情報を統合すること)に関する標準の議論に興味がある場合は、W3C CCGグループのメーリングリストからのこの最近のスレッドは、特にManuとTobias(MATTRのCTO)の間の議論は、読む価値があります。

(このような議論がディスコースインスタンスで行われればよかったのにと思います…)

「いいね!」 6

このプラグインはコンシューマーとしてのみ機能するという理解で合っていますか?

1つのDiscourseインスタンスが別のDiscourseインスタンスのクレデンシャルプロバイダーになることができるか疑問に思っています。

はい、その通りです。

いいえ、外部プロバイダーが必要です。例えば、https://mattr.global/ を使用するものなどです。

「いいね!」 1