Ir para o conteúdo

Autenticação de Cliente

O Vinyl pode operar como um servidor de autorização OpenID Connect (OIDC). O servidor de autorização permite que aplicativos clientes, incluindo outras instâncias do Vinyl, autentiquem usuários. O processo de login do OIDC produz um token de acesso que permite que o aplicativo cliente acesse recursos protegidos em nome do usuário. Os recursos protegidos incluem APIs REST e Webhook hospedadas no Vinyl, bem como fontes de dados do Vinyl Connector.

Suporte a Protocolo

O protocolo OIDC é definido pelo padrão OpenID Connect Core 1.0. OIDC é uma camada de identidade construída sobre a estrutura de autorização OAuth 2.0, definida por RFC-6749. Juntos, esses padrões descrevem:

  • Fluxos – Um fluxo é um processo pelo qual o cliente recupera tokens de identidade e acesso. Por esta razão, os fluxos também são chamados de subvenções.
  • Endpoints - Cada fluxo envolve uma ou mais solicitações HTTP para URLs conhecidas.
  • Escopos – Os aplicativos clientes podem solicitar um ou mais escopos. Os escopos determinam quais tokens são emitidos (identidade, atualização), o que está incluído nesses tokens (declarações) e quais APIs podem ser acessadas com esses tokens.
  • Reivindicações - Conforme descrito pelo padrão, o token de identidade é fundamentalmente um JSON Web Token (JWT). JWTs são baseados em declarações. O escopo solicitado determina quais declarações estão incluídas no token de identidade.

Fluxos Suportados

O servidor de autorização Vinyl suporta os seguintes fluxos básicos do OAuth 2.0:

  • Código de autorização. O fluxo do Código de Autorização permite que o cliente adquira um token de acesso, que permite ao cliente acessar recursos protegidos em nome do usuário. O fluxo do Código de Autorização é um fluxo interativo: um usuário deve estar presente para iniciar o fluxo do Código de Autorização.
  • Credenciais do cliente. O fluxo de Credenciais do Cliente permite que o aplicativo cliente adquira um token de acesso em seu nome. Este é um fluxo de servidor para servidor, normalmente operando como uma conta de serviço.
  • Token de atualização. O fluxo Refresh Token permite que o cliente solicite um novo token de acesso assim que o token atual expirar. Isso às vezes é chamado de "acesso off-line". O fluxo de token de atualização pode ser usado em combinação com os fluxos Código de Autorização ou Credenciais do Cliente. O escopo offline_access habilita o fluxo de token de atualização (veja abaixo).

Conforme observado acima, o OIDC é baseado na estrutura de autorização OAuth 2.0. O OIDC aproveita os fluxos do OAuth 2.0, usando o parâmetro scope para ativar a funcionalidade específica do OIDC. O servidor de autorização Vinyl suporta os seguintes fluxos OIDC:

  • Código de autorização. Quando o escopo openid é especificado, o fluxo do Código de Autorização permite que o cliente autentique um usuário retornando um token de identidade adicional. Escopos adicionais determinam quais declarações estão incluídas no token.
  • Token de atualização. O fluxo de token de atualização opera no OIDC da mesma forma que no OAuth 2.0.

O servidor de autorização não suporta fluxos implícitos ou híbridos do OIDC. O fluxo de credenciais do cliente OAuth 2.0 não é um fluxo OIDC.

O fluxo do Código de Autorização pode ser usado com ou sem a extensão Proof Key for Code Exchange (PKCE), conforme definido por RFC-7636.

Endpoints Suportados

O servidor de autorização do Vinyl publica os seguintes endpoints:

Endpoint Padrão Descrição
/conectar/autorizar RFC-6749 Emite um código de autorização.
/conectar/token RFC-6749 Emite um token de acesso.
/conectar/introspectar RFC-7662 Acesse a introspecção do token.
/connect/userinfo Núcleo OIDC Introspecção de token de identidade.
/.bem conhecido/configuração-openid Descoberta do OIDC Configuração do provedor OpenID Connect.

Escopos Suportados

O servidor de autorização Vinyl suporta os seguintes escopos:

Escopo Descrição
aberto Emite um token de identidade OIDC.
perfil Inclui declarações de perfil de usuário no token de identidade.
* email* Inclui declarações de endereço email no token de identidade.
telefone Inclui declarações de número de telefone no token de identidade.
acesso_offline Emite um token de atualização para uso no fluxo de token de atualização.
* Não disponível para clientes públicos
api Autoriza o acesso a APIs REST, Webhook e Vinyl Connector hospedadas no Vinyl.

Reivindicações Suportadas

Conforme observado acima, o token de identidade é um token JWT baseado em declarações. O cliente pode determinar quais declarações estão incluídas no token de identidade especificando escopos.

Escopo Reivindicações
aberto sub
perfil nome, apelido, localidade e zoneinfo
* email* * email* e email_verified
telefone número_telefone e número_telefone_verificado

Para obter uma descrição de cada uma dessas reivindicações, consulte a seção 5.1 Reivindicações padrão do padrão OIDC. Qualquer reivindicação padrão não listada explicitamente acima não é suportada.

Configuração

Para utilizar o servidor de autorização, o administrador do Vinyl deve primeiro:

  1. Habilite o servidor de autorização.
  2. Registre um aplicativo cliente.
  3. Configure o aplicativo cliente.

Habilite o Servidor de Autorização

Para habilitar o servidor de autorização, comece entrando no Vinyl como administrador:

  1. Clique no link IDE.
  2. Clique no botão Provedores de segurança.
  3. No painel Autenticação do usuário, localize o provedor de segurança Servidor de autorização e clique no ícone Detalhes (Chevron).
  4. Clique no botão Editar.
  5. Marque a opção Ativado.
  6. Clique no botão Salvar.

Registrar um Aplicativo Cliente

Cada aplicação cliente que pretenda autenticar usuários ou acessar recursos protegidos deverá ser cadastrada. Para registrar um aplicativo cliente, comece entrando no Vinyl como administrador e siga estas etapas:

  1. Clique no link IDE.
  2. Clique no botão Gerenciamento de usuários.
  3. Clique no botão Clientes.
  4. Clique no botão +Cliente para registrar um novo aplicativo cliente.
  5. Forneça o seguinte:

    • Nome: Um nome descritivo e amigável para o aplicativo cliente.
    • Descrição: Uma descrição opcional.
    • Usuário: Selecione a conta do usuário do serviço. Obrigatório para o fluxo de credenciais do cliente. Caso contrário, deixe em branco.
    • Provedor de autenticação: (Desde o Vinyl 3.3.34990.) Selecione um provedor ou deixe em branco.
    • Ativado: Ativa ou desativa o aplicativo cliente.
  6. Clique no botão Salvar.

  7. (Opcional) Clique Mais, então Avançado. A caixa de diálogo Configurações avançadas é aberta. Ele contém duas guias:

    • Propriedades: Defina as seguintes configurações, conforme necessário:

      • Requer PKCE: Quando selecionado, o cliente deve usar a extensão PKCE. Isso se aplica apenas ao fluxo do Código de Autorização e é necessário para clientes públicos.

      • Público: Quando selecionado, o cliente é público e os segredos não podem ser armazenados com segurança. Quando desmarcado, o cliente é confidencial e pode armazenar segredos com segurança.

    • Vida útil do token: (Desde o Vinyl 3.3.33638.) Insira valores para os seguintes campos, conforme necessário:

      • Token de Acesso: Tempo de expiração do token de acesso, em minutos. Padrão: 60.

      • Atualizar Token: Tempo de expiração do token de atualização, em minutos. Padrão: 20160 (14 dias).

      • Token de identidade: Tempo de expiração do token de identidade, em minutos. Padrão: 20.

      • Código de Autorização: Tempo de expiração do código de autorização, em minutos. Padrão: 5.

Gerar um Segredo do Cliente

O aplicativo cliente deve fornecer suas próprias credenciais ao solicitar um token de acesso. As credenciais do cliente consistem no ID do cliente e em um segredo do cliente. Os segredos do cliente só podem ser gerados para clientes confidenciais. O painel Secrets ficará oculto para clientes públicos.

Para gerar um segredo do cliente:

  1. No painel Segredos, clique no botão +Segredo.
  2. Forneça o seguinte:

    • Descrição: descrição opcional do segredo do cliente.
    • Expira em: Se o segredo expirar, defina a data e hora de expiração. Caso contrário, deixe este campo em branco.
  3. Clique no botão Salvar.

  4. Copie o ID do cliente e o Segredo do cliente.

AVISO: Este é o único momento em que o segredo ficará visível.

Registrar URI de Redirecionamento de Cliente

Conforme observado acima, o fluxo do Código de Autorização é um fluxo interativo. Durante esse fluxo, o usuário é redirecionado para o endpoint de autorização. Depois que o usuário for autenticado, ele será redirecionado de volta para o aplicativo cliente.

O URL de retorno de chamada do aplicativo cliente é conhecido como "URI de redirecionamento". Cada URI de redirecionamento deve ser registrado. Os URIs de redirecionamento do cliente devem aderir às seguintes restrições:

  • O URL de redirecionamento do cliente deve ser um URL absoluto.
  • A URL de redirecionamento do cliente deve usar o protocolo HTTPS. No entanto, o URL de redirecionamento do cliente pode usar o protocolo HTTP ao redirecionar para localhost.
  • O URL de redirecionamento do cliente pode conter uma string de consultar.
  • O URL de redirecionamento do cliente não deve conter um fragmento.

Para registrar um URI de redirecionamento de cliente:

  1. No painel Redirecionamentos, clique no botão + URL.
  2. Forneça a URL.
  3. Clique no botão Salvar.

Configurar o Aplicativo Cliente

Qualquer aplicativo cliente OIDC ou OAuth 2.0 compatível com os padrões que suporte fluxos de código de autorização ou credenciais de cliente pode utilizar o servidor de autorização Vinyl. Isso inclui o próprio Vinyl: é possível configurar uma segunda instância do Vinyl como cliente.

Para configurar o cliente Vinyl, você precisará de:

  • URL raiz do servidor de autorização de Vinyl, por exemplo https://example.com/Vinyl.
  • ID do cliente e segredo (veja acima)

Comece entrando na instância cliente do Vinyl como administrador:

  1. Clique no link IDE.
  2. Clique no botão Provedores de segurança.
  3. No painel Autenticação do usuário, clique no botão +Autenticação do usuário.
  4. Forneça o seguinte:

    • Nome: nome do provedor de segurança, por exemplo. Vinyl.
    • Tipo: Vinyl / OpenID Connect
    • Mostrar no formulário de login: Marque esta opção para exibir a opção de login no formulário de login.
    • Provisionamento de usuários: marque esta opção para ativar o provisionamento de usuários.
  5. Clique no botão Salvar.

  6. No painel Endpoints, clique no botão + Endpoint.
  7. Forneça o seguinte:

    • Tipo de Endpoint: OpenID Connect Issuer
    • URL. O URL raiz do servidor de autorização do Vinyl.
  8. Clique no botão Salvar.

  9. No painel Credenciais, clique no botão +Credencial.
  10. Forneça o seguinte:

    • Tipo: Cliente
    • Nome de usuário: O ID do cliente (veja acima).
    • Senha: O segredo do cliente (veja acima).
  11. Clique no botão Salvar.

  12. No painel Provedor, clique no botão Editar.
  13. Marque a opção Ativado.
  14. Clique no botão Salvar.

Depois de concluído, os usuários poderão entrar na instância cliente do Vinyl usando o servidor de autorização do Vinyl.

Limitações Conhecidas

O servidor de autorização do Vinyl não suporta o seguinte

  • Consentimento do usuário.
  • Fluxos implícitos ou híbridos do OIDC