Plugin de Credenciais Verificáveis

Resumo: Use Credenciais Verificáveis para conceder acesso a grupos e distintivos no Discourse.

:link: GitHub: https://github.com/coopcreds/discourse-verifiable-credentials
:arrow_right: Instalar: Siga o guia de instalação de plugins.

Demonstração

Você pode experimentar este plugin seguindo as etapas no link abaixo. Você receberá uma “Credencial Cooperativa” de teste que poderá usar para obter acesso a um grupo e receber um distintivo na instância do Discourse de credenciais cooperativas. Observe que a credencial é apenas para fins de teste e pode ser revogada sem aviso prévio.

https://coopcreds.com/test/

Provedores

Atualmente, o plugin oferece suporte aos seguintes provedores de credenciais verificáveis.

Provedor Tipo de Verificação Suportado
MATTR OIDC Sim
MATTR Callback Sim
Verifiable Credentials Ltd - Parcialmente

O plugin é construído para suportar qualquer provedor, mas adicionar provedores adicionais requer algum trabalho de implementação. Se você quiser adicionar outro provedor, entre em contato.

Configuração

É necessário algum entendimento de credenciais verificáveis para usar este plugin. A MATTR, o principal provedor suportado pelo plugin atualmente, fez alguns vídeos que são relevantes para as opções atuais do plugin:


Este plugin permite verificar a credencial de um usuário para dar a ele acesso a um ou mais grupos ou distintivos no Discourse. As seções abaixo detalham a configuração de verificação, grupo e distintivo. Como o plugin atualmente suporta apenas MATTR, as instruções assumem que você está usando MATTR.

Verificador

O tipo de configuração de verificador que você usa dependerá do tipo de sistema com o qual você está integrando. Se você é o verificador e está configurando um Discourse que você controla, talvez queira usar uma verificação de callback. Se você faz parte de uma rede que depende de um único verificador, ou seja, você é uma “Parte Confiável”, talvez queira usar a verificação OIDC.

OIDC

Se você estiver usando um Verificador OIDC (por exemplo, você está usando a Integração MATTR Auth0), você precisa definir as seguintes configurações do site:

  • verifiable credentials oidc: true
  • verifiable credentials mattr verifier id: O ID (não o DID) do seu Verificador OIDC
  • verifiable credentials mattr client id: O ID do cliente da Aplicação Cliente OIDC para o seu Discourse (observe que este não é o ID do cliente do seu tenant MATTR)
  • verifiable credentials mattr client secret: O segredo do cliente da Aplicação Cliente OIDC para o seu Discourse (observe que este não é o segredo do cliente do seu tenant MATTR)

Callback

Se você estiver usando uma verificação de callback padrão, você precisa definir as seguintes configurações do site:

  • verifiable credentials oidc: false
  • verifiable credentials mattr client id: ID do cliente do tenant MATTR onde o verificador está hospedado
  • verifiable credentials mattr client secret: Segredo do cliente do tenant MATTR onde o verificador está hospedado
  • verifiable credentials mattr messaging did: Um DID usando keyType de ed25519

Grupo

Você pode conceder acesso a grupos usando declarações em credenciais verificadas. Isso significa que você pode conceder seletivamente acesso a diferentes grupos em seu Discourse, dependendo das declarações na credencial de um usuário. Para configurar um grupo para ser acessado via credenciais verificáveis, vá em “Gerenciar” > “Associação” e defina o seguinte:

  • Allow users to join by verifiable credentials: true

  • Show verifiable credentials button on this group to non members: (autoexplicativo)

  • Redirect users to url upon verification.: Por exemplo, se você estiver usando uma credencial para dar a um usuário acesso a uma categoria à qual o grupo tem acesso, use este campo para enviar o usuário para a categoria quando o processo de verificação for concluído.

  • Cumulative list of claim(s) that grants access to this group. Format: key:value.: Observe que esta lista é cumulativa, o que significa que um usuário precisará de todas as declarações presentes em sua credencial para obter acesso. Exemplo

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

Callback

Se você estiver usando o método de verificação de Callback, você também deve definir o Identifier of credential that grants access to this group para o ID do template de apresentação que você deseja usar para esse grupo. Você pode usar diferentes templates de apresentação para diferentes grupos.

Distintivo

Você pode conceder distintivos a usuários usando declarações em credenciais verificáveis. Atualmente, você só pode fazer isso usando o componente de cabeçalho (veja abaixo). A configuração do site a ser usada é verifiable credentials header badges, que requer entradas neste formato:

badge_id~~claim:value

Por exemplo

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

Você pode obter o ID de um distintivo a partir do URL da página do distintivo, por exemplo:

/badges/9/autobiographer ## o ID do distintivo é 9

Cabeçalho

Você pode usar o menu suspenso de cabeçalho do plugin para conceder acesso a vários grupos de uma vez, ou distintivos e grupos ao mesmo tempo. As configurações relevantes são:

  • verifiable credentials header: true
  • verifiable credentials header groups: uma lista de nomes de grupos (cada grupo já deve estar configurado; veja acima)
  • verifiable credentials header badges: veja acima
  • verifiable credentials header info url: o URL para um link “saiba mais” no canto inferior direito do menu suspenso.

O ícone do cabeçalho aparecerá se o usuário não for membro de um grupo incluído na apresentação do cabeçalho, ou não tiver recebido um distintivo incluído na apresentação do cabeçalho. Quando o usuário clicar nele, ele exibirá os recursos aos quais pode ter acesso verificando suas credenciais.

Suporte

Este plugin é construído como parte do Cooperative Credentials Project, que é apoiado pelo ESSIF Lab financiado pela UE. Ele será usado em produção por várias partes confiáveis na rede Cooperative Credentials quando for lançado no final deste ano.

image|690x98,50% image|200x50

A fazer

  • Adicionar suporte a distintivos específicos de grupo.
  • Suportar autenticação de usuário via credenciais verificáveis.
  • Adicionar provedores adicionais como Evernym e Trinsic.
16 curtidas

Esta é uma nota puramente técnica, mas se você estiver interessado no debate sobre padrões em torno do que este plugin está (parcialmente) fazendo (ou seja, integrando OIDC com Credenciais Verificáveis), então este tópico recente da lista de e-mails do grupo W3C CCG é uma boa leitura (em particular a discussão entre Manu e Tobias (CTO da MATTR)).

(Eu gostaria que tais discussões fossem em uma instância de discourse…)

6 curtidas

Entendi corretamente que este plugin funciona apenas como um consumidor?

Gostaria de saber se uma instância do Discourse pode ser um provedor de credenciais para outra instância do Discourse.

Sim, é isso mesmo.

Não, você precisa de um provedor externo, por exemplo, um que use https://mattr.global/.

1 curtida