Emitir credenciais de ID Verificada do Microsoft Entra usando um aplicativo

Neste tutorial, você executará um aplicativo de exemplo do computador local que se conecta ao seu locatário do Microsoft Entra. Usando o aplicativo, você vai emitir um cartão de especialista em credenciais verificadas e o verificará.

Neste artigo, você aprenderá como:

  • Criar o Cartão de Especialista em Credenciais Verificadas no Azure.
  • Reunir credenciais e detalhes do ambiente para configurar o aplicativo de exemplo.
  • Baixar o código do aplicativo de exemplo no computador local.
  • Atualizar o aplicativo de exemplo com seu Cartão de Especialista em Credenciais Verificadas e detalhes do ambiente.
  • Executar o aplicativo de exemplo e emita seu primeiro Cartão de Especialista em Credenciais Verificadas.
  • Verificar seu cartão de especialista em credenciais verificadas.

O diagrama a seguir ilustra a arquitetura de ID Verificada do Microsoft Entra e o componente que você configura.

Diagram that illustrates the Microsoft Entra Verified ID architecture.

Pré-requisitos

Criar o cartão de especialista em credenciais verificadas no Azure

Dica

As etapas neste artigo podem variar ligeiramente com base no portal do qual você começa.

Nesta etapa, você vai criar o cartão de especialista em credenciais verificáveis usando a ID Verificada do Microsoft Entra. Depois de criar a credencial, seu locatário do Microsoft Entra pode emiti-la para os usuários que iniciam o processo.

  1. Entre no centro de administração do Microsoft Entra como, no mínimo, um Administrador global.

  2. Selecione Credenciais verificáveis.

  3. Depois de configurar o locatário, Criar credencial deverá aparecer. Como alternativa, você pode selecionar Credenciais no menu à esquerda e selecionar + Adicionar uma credencial.

  4. Em Criar credencial, selecione Credencial Personalizada e clique em Avançar:

    1. Para o Nome da credencial, insira VerifiedCredentialExpert. Este nome é usado no portal para identificar suas credenciais verificáveis. Ele é incluído como parte do contrato de credenciais verificáveis.

    2. Copie o JSON a seguir e cole-o na caixa de texto Definição de exibição

      {
          "locale": "en-US",
          "card": {
            "title": "Verified Credential Expert",
            "issuedBy": "Microsoft",
            "backgroundColor": "#000000",
            "textColor": "#ffffff",
            "logo": {
              "uri": "https://didcustomerplayground.blob.core.windows.net/public/VerifiedCredentialExpert_icon.png",
              "description": "Verified Credential Expert Logo"
            },
            "description": "Use your verified credential to prove to anyone that you know all about verifiable credentials."
          },
          "consent": {
            "title": "Do you want to get your Verified Credential?",
            "instructions": "Sign in with your account to get your card."
          },
          "claims": [
            {
              "claim": "vc.credentialSubject.firstName",
              "label": "First name",
              "type": "String"
            },
            {
              "claim": "vc.credentialSubject.lastName",
              "label": "Last name",
              "type": "String"
            }
          ]
      }
      
    3. Copie o JSON a seguir e cole-o na caixa de texto Definição de regras

      {
        "attestations": {
          "idTokenHints": [
            {
              "mapping": [
                {
                  "outputClaim": "firstName",
                  "required": true,
                  "inputClaim": "$.given_name",
                  "indexed": false
                },
                {
                  "outputClaim": "lastName",
                  "required": true,
                  "inputClaim": "$.family_name",
                  "indexed": true
                }
              ],
              "required": false
            }
          ]
        },
        "validityInterval": 2592000,
        "vc": {
          "type": [
            "VerifiedCredentialExpert"
          ]
        }
      }
      
    4. Selecione Criar.

A seguinte captura de tela demonstra como criar uma credencial:

Screenshot that shows how to create a new credential.

Coletar credenciais e detalhes do ambiente

Agora que você tem uma nova credencial, vai coletar algumas informações sobre seu ambiente e a credencial que você criou. Você usa essas informações ao configurar seu aplicativo de exemplo.

  1. Em Credenciais Verificáveis, selecione Emitir credencial.

    Screenshot that shows how to select the newly created verified credential.

  2. Copie a autoridade, que é o identificador descentralizado, e registre-o para depois.

  3. Copie a URL do manifesto. É a URL que o Microsoft Authenticator avalia antes de exibir os requisitos de emissão de credenciais verificáveis ao usuário. Registre-a para uso posterior.

  4. Copie sua ID de locatário e registre-a para mais tarde. A ID do Locatário é o guid na URL do manifesto realçada em vermelho acima.

Baixe o código de exemplo

O aplicativo de exemplo está disponível no .NET e o código é mantido em um repositório do GitHub. Baixe o código de exemplo do GitHub aqui ou clone o repositório no computador local:

git clone https://github.com/Azure-Samples/active-directory-verifiable-credentials-dotnet.git

Configurar o aplicativo de credenciais verificáveis

Crie um segredo do cliente para o aplicativo registrado criado. O aplicativo de exemplo usa o segredo do cliente para confirmar sua identidade ao solicitar tokens.

  1. Entre no centro de administração do Microsoft Entra como, no mínimo, um Administrador global.

  2. Selecione ID do Microsoft Entra.

  3. Vá para a página Aplicativos>Registros de aplicativos.

  4. Selecione o aplicativo verifiable-credentials-app criado anteriormente.

  5. Selecione o nome para entrar nos detalhes de registros de aplicativo.

  6. Copie a ID do aplicativo (cliente) e armazene-a para mais tarde.

    Screenshot that shows how to copy the app registration ID.

  7. No menu principal, em Gerenciar, selecione Certificados e segredos.

  8. Selecione Novo segredo do cliente e faça o seguinte:

    1. Em Descrição, insira uma descrição para o segredo do cliente (por exemplo, vc-sample-secret).

    2. Em Expirar, selecione um período durante o qual o segredo será válido, por exemplo, seis meses. Em seguida, selecioneAdicionar.

    3. Registre o Valor do segredo. Você usará esse valor para uma configuração em uma etapa posterior. O valor do segredo não será exibido novamente e não será recuperável por outros meios. Registre-o assim que ele ficar visível.

Neste ponto, você deve ter todas as informações necessárias para configurar o aplicativo de exemplo.

Atualizar o aplicativo de exemplo

Agora, você fará as modificações no código do emissor do aplicativo de exemplo para atualizá-lo com a URL da credencial verificável. Esta etapa permite que você emita credenciais verificáveis usando seu locatário.

  1. Na pasta active-directory-verifiable-credentials-dotnet-main, abra o Visual Studio Code e selecione o projeto na pasta 1-asp-net-core-api-idtokenhint.

  2. Na pasta raiz do projeto, abra o arquivo appsettings.json. Esse arquivo contém informações sobre o ambiente da ID Verificada do Microsoft Entra. Atualize as seguintes propriedades com as informações que você registrou nas etapas anteriores:

    1. ID do locatário: sua ID de locatário
    2. ID do cliente: a ID do cliente
    3. Segredo do cliente: o segredo do cliente
    4. DidAuthority: o identificador descentralizado
    5. Manifesto de credencial: Sua URL do manifesto

    CredentialType é necessário apenas para apresentação. Portanto, se tudo o que você deseja fazer é emissão, ele não é necessário.

  3. Salve o arquivo appsettings.json.

O seguinte JSON demonstra um arquivo appsettings.json completo:

{
  "VerifiedID": {
    "Endpoint": "https://verifiedid.did.msidentity.com/v1.0/verifiableCredentials/",
    "VCServiceScope": "3db474b9-6a0c-4840-96ac-1fceb342124f/.default",
    "Instance": "https://login.microsoftonline.com/",
    "TenantId": "12345678-0000-0000-0000-000000000000",
    "ClientId": "33333333-0000-0000-0000-000000000000",
    "ClientSecret": "123456789012345678901234567890",
    "CertificateName": "[Or instead of client secret: Enter here the name of a certificate (from the user cert store) as registered with your application]",
    "DidAuthority": "did:web:...your-decentralized-identifier...",
    "CredentialType": "VerifiedCredentialExpert",
    "CredentialManifest":  "https://verifiedid.did.msidentity.com/v1.0/12345678-0000-0000-0000-000000000000/verifiableCredentials/contracts/VerifiedCredentialExpert"
  }
}

Emitir seu primeiro cartão de especialista em credenciais verificadas

Agora você está pronto para emitir seu primeiro cartão de especialista em credenciais verificadas executando o aplicativo de exemplo.

  1. No Visual Studio Code, execute o projeto Verifiable_credentials_DotNet. Ou, na linha de comando do sistema operacional, execute:

    cd active-directory-verifiable-credentials-dotnet\1-asp-net-core-api-idtokenhint
    dotnet build "AspNetCoreVerifiableCredentials.csproj" -c Debug -o .\bin\Debug\net6.
    dotnet run
    
  2. Em outra janela do prompt de comando, execute o seguinte comando. Esse comando executa o ngrok para configurar uma URL em 5000 e torná-la publicamente disponível na Internet.

    ngrok http 5000
    

    Observação

    Em alguns computadores, talvez seja necessário executar o comando neste formato: ./ngrok http 5000.

  3. Abra a URL HTTPS gerada pelo ngrok.

    Screenshot that shows how to get the ngrok public URL.

  4. Em um navegador da Web, selecione Obter credencial.

    Screenshot that shows how to choose to get the credential from the sample app.

  5. Usando seu dispositivo móvel, digitalize o código QR com o aplicativo Authenticator. Você também pode digitalizar o código QR diretamente da câmera, o que abrirá o aplicativo Authenticator para você.

    Screenshot that shows how to scan the QR code.

  6. Neste momento, você verá uma mensagem de aviso de que esse aplicativo ou site pode ser arriscado. Selecione Avançado.

    Screenshot that shows how to respond to the warning message.

  7. No aviso de site suspeito, selecione Continuar mesmo assim (não seguro) . Você está vendo esse aviso porque seu domínio não está vinculado ao DID (identificador descentralizado). Para verificar seu domínio, siga o artigo Vincular seu domínio ao DID (Identificador Descentralizado). Para este tutorial, você pode ignorar o registro de domínio e selecionar Continuar mesmo assim (não seguro).

    Screenshot that shows how to proceed with the risky warning.

  8. Você será solicitado a inserir um código PIN que é exibido na tela em que você leu o código QR. O PIN adiciona uma camada extra de proteção à emissão. O código do PIN é gerado aleatoriamente toda vez que um código QR de emissão é exibido.

    Screenshot that shows how to type the pin code.

  9. Depois de inserir o número do PIN, a tela Adicionar uma credencial é exibida. Na parte superior da tela, você poderá ver uma mensagem Não verificado (em vermelho). Esse aviso está relacionado à validação de domínio mencionada acima.

  10. Selecione Adicionar para aceitar sua nova credencial verificável.

    Screenshot that shows how to add your new credential.

Parabéns! Agora você tem uma VC de especialista em credencial verificável.

Screenshot that shows a newly added verifiable credential.

Volte para o aplicativo de exemplo. Ele mostra que uma credencial foi emitida com êxito.

Screenshot that shows a successfully issued verifiable credential.

Nomes da credencial verificável

Sua credencial verificável contém Megan Bowen para os valores de nome e sobrenome na credencial. Esses valores foram embutidos em código no aplicativo de exemplo e adicionados à credencial verificável no momento da emissão do conteúdo.

Em cenários reais, seu aplicativo recebe os detalhes do usuário de um provedor de identidade. O snippet de código a seguir mostra em que local o nome é definido no aplicativo de exemplo.

//file: IssuerController.cs
[HttpGet("/api/issuer/issuance-request")]
public async Task<ActionResult> issuanceRequest()
  {
    ...
    // Here you could change the payload manifest and change the first name and last name.
    payload["claims"]["given_name"] = "Megan";
    payload["claims"]["family_name"] = "Bowen";
    ...
}

Próximas etapas

Na próxima etapa, você aprenderá como aplicativo de terceiros, também conhecido como aplicativo de terceira parte confiável, pode usar o próprio serviço de API de credenciais verificáveis do locatário do Microsoft Entra para verificar as suas credenciais.