Credenciais OAuth 2.0 para aplicações GitHub - JWT

  • Versão de lançamento: Xanadu
  • Atualizado 1 de ago. de 2024
  • 8 min. de leitura
  • Execute as etapas a seguir para integrar seus aplicativos do GitHub usando o token do portador JWT.

    Antes de começar

    Função necessária:

    • oauth_admin em Velocidade de mudança para DevOps.
    • Conta de administrador em GitHub.
    Nota:
    Para o GitHub Enterprise Server (instância no local), o OAuth não será compatível se você estiver se conectando usando um MID Server.

    Configure o app GitHub na sua conta GitHub (JWT)

    Crie um app GitHub personalizado de sua conta GitHub para habilitar a autenticação OAuth 2.0 com sua instância ServiceNow.

    Antes de Iniciar

    GitHub requisito: GitHub app configurado para integração com ServiceNow

    Função necessária: nenhuma função de instância necessária

    Por Que e Quando Desempenhar Esta Tarefa

    Conclua essas etapas na sua conta GitHub. Confira Edifício GitHub Apps no site do desenvolvedor GitHub para obter instruções sobre como criar e configurar aplicações personalizadas.

    Procedimento

    1. Na sua conta GitHub, crie seu app GitHub navegando até Configurações do desenvolvedor > Aplicações do GitHub.
    2. No campo URL da página inicial, insira https://<instance-name> .service-now.com .
    3. No campo URL de retorno de chamada de autorização do usuário, insira https://<instance-name> .service-now.com/oauth_redirect.do .
    4. Na seção Identificação e autorização de usuários, desmarque o campo Tokens de autorização do usuário expirados.
    5. Na seção Webhook, selecione o campo Ativo.
    6. No campo URL do Webhook, insira https://<instance-name> .service-now.com/api/sn_devops/v2/devops/tool/apps?toolId=<Tool ID> , em que ID da ferramenta é o ID da ferramenta GitHub (sys_id) de Velocidade de mudança para DevOps.
      Nota:
      Se você estiver criando a ferramenta recentemente e não tiver o ID da ferramenta, poderá inserir a URL do webhook sem o ID da ferramenta e configurá-la posteriormente. Para configurar mais tarde:
      1. Navegue até a página de registro da ferramenta conectada.
      2. Selecione Configurar app GitHube Configurar automaticamente com o token existente.

        Configure automaticamente com o token existente.

      Isso configura a URL do Webhook do app GitHub automaticamente.
      Você pode obter o ID da ferramenta de uma das seguintes maneiras:
      • Ao se conectar com a ferramenta em Velocidade de mudança para DevOps, o ID da ferramenta está disponível no URL da página. Por exemplo, https://<instance-name> .service-now.com/.../sn_devops_tool/<Tool ID> /... .
      • Você pode copiar a URL do webhook da página de registro da ferramenta [ GitHub em Velocidade de mudança para DevOps, de Configurar > Configurar manualmente > URL do webhook.
    7. Deixe os campos restantes em branco (padrão).
    8. Na seção Permissões do repositório, defina as seguintes configurações.
      Ação Somente leitura
      Verificações Somente leitura
      Conteúdos Somente leitura
      Implantações Ler e gravar
      Ambientes Somente leitura
      Metadados Somente leitura
      Solicitações de extração Somente leitura
      Segredos Somente leitura
      Webhooks Ler e gravar
      Nota:
      São necessárias permissões de leitura e gravação para configurar webhooks de ServiceNow.
      Nota:
      Se você já estiver usando um app GitHub e atualizar qualquer uma das permissões, deverá revisar e aceitar essas permissões para seu app GitHub. Você pode navegar até seu app e selecionar Configurar > Revisar solicitação > Aceitar novas permissões.
    9. Deixe as permissões restantes como Sem acesso (padrão).
    10. Na seção Assinar eventos, selecione a opção Regra de proteção de implantação.
    11. Salve as mudanças.
    12. Depois de criar o aplicativo GitHub, gere uma nova chave privada e salve-a em sua máquina.
    13. Instale o aplicativo GitHub recém-criado nas contas de sua escolha.
      1. Na página de configurações de apps do GitHub, selecione seu app.
      2. Na barra lateral esquerda, selecione Instalar app.
      3. Selecione Instalar ao lado da organização ou da conta pessoal que contém o repositório correto.
      4. Instale o aplicativo em todos os repositórios ou selecione repositórios.
        Para obter mais informações, consulte Instalação de apps do GitHub.

    Adicionar ID de cliente à propriedade de DevOps

    Depois de configurar o app GitHub, você deve garantir que o prefixo do ID do cliente (primeiros 3 ou mais caracteres do ID) seja adicionado à propriedade do DevOps: especificador de ID de cliente para o app GitHub.

    Antes de Iniciar

    Função necessária: sn_devops.admin

    Procedimento

    1. Navegar até Espaços > Espaço de mudança de DevOps > Administração > Configuração do sistema > Propriedades.
    2. Altere o Escopo da aplicação para Modelo de dados do DevOps.
    3. Pesquise a propriedade: especificador de ID de cliente para app GitHub [sn_devops.github_oauth_client_id_specifier].
    4. Insira o prefixo do ID do cliente (primeiros 3 ou mais caracteres do ID) do seu app GitHub na propriedade.
    5. Selecione Salvar.

    Gerar o certificado Java KeyStore para GitHub

    Gere um certificado Java KeyStore (JKS) para a autenticação JWT.

    Antes de Iniciar

    Função necessária: administrador

    Procedimento

    1. Crie um certificado assinado por CA usando a chave privada do app GitHub :
      openssl req -new -x509 -key <file-name>.pem -out <certificate-name>.pem -days 1095
    2. Insira os detalhes necessários.
    3. Crie o arquivo PKCS 12 usando a chave privada do app GitHub e o certificado assinado por CA:
      openssl pkcs12 -export -in <certificate-name>.pem -inkey <file-name>.pem -certfile <certificate-name>.pem -out <PKCS-12-file-name>.p12 
    4. Forneça a senha de exportação.
    5. Crie o arquivo JKS:
      keytool -importkeystore -srckeystore <PKCS-12-file-name>.p12 -srcstoretype pkcs12 -destkeystore <JKS-certificate-filename>.jks -deststoretype JKS
    6. Forneça as senhas do armazenamento de chaves de destino e de origem.

    Anexe o certificado Java KeyStore GitHub à sua instância

    Habilite a autenticação de token de concessão de portador JWT anexando o certificado GitHub Java KeyStore (JKS) válido à sua instância da ServiceNow.

    Antes de Iniciar

    Garanta a disponibilidade de um certificado Java KeyStore válido.

    Função necessária: administrador

    Procedimento

    1. Navegar até Todos > Definição do Sistema > Certificados.
    2. Selecione Novo.
    3. No formulário, preencha os campos.
      Tabela 1. Campos do formulário da certificação X.509
      Campo Descrição
      Nome Nome para identificar exclusivamente o registro. Por exemplo, My GitHub App Certificate.
      Notificar no vencimento Opção para especificar os usuários a serem notificados quando o certificado expirar.
      Aviso emitido antes do vencimento (em dias) Número de dias para enviar uma notificação antes que o certificado expire.
      Ativo Opção para habilitar o certificado.
      Tipo Opção para selecionar o tipo de certificado. Selecione Armazenamento de chaves Java.
      Dias até o vencimento Número de dias até o certificado expirar.
      Senha do armazenamento de chaves Senha associada ao certificado (dica: a senha do KeyStore de destino criada anteriormente).
      Descrição resumida Resumo sobre o certificado.
    4. Selecione o ícone de anexos (ícone de anexos) e anexe um certificado JKS.
    5. Selecione Validar armazenamentos/certificados.

    Criar uma chave de assinatura JWT para o certificado GitHub JKS

    Crie uma chave de assinatura JSON Web Token (JWT) para atribuir ao seu certificado GitHub Java KeyStore.

    Antes de Iniciar

    Função necessária: administrador, sn_devops.admin

    Procedimento

    1. Navegar até Todos > OAuth de Sistema > Chaves de JWT.
    2. Selecione Novo.
    3. No formulário, preencha os campos.
      Tabela 2. Campos do formulário de chaves de JWT
      Campo Descrição
      Nome Nome para identificar exclusivamente a chave de assinatura JWT. Por exemplo, Minha chave JWT do app GitHub.
      Armazenamento de chaves de assinatura Certificado JKS válido anexado na tarefa anterior. Por exemplo, My GitHub App Certificate.
      ID de chave ID exclusiva para identificar qual chave é usada quando várias chaves são usadas para assinar tokens.
      Algoritmo de assinatura Algoritmo para assinar com a chave JWT (dica: RSA 256).
      Senha da chave de assinatura Senha associada à chave de assinatura (dica: a senha do armazenamento de chaves de origem criada anteriormente).
      Ativo Opção para habilitar a chave.
    4. Selecione Enviar.

    Crie um provedor JWT para sua chave de assinatura GitHub

    Adicione um provedor JWT (JSON Web Token) à sua instância [ ServiceNow para GitHub.

    Antes de Iniciar

    Função necessária: administrador, sn_devops.admin

    Procedimento

    1. Navegar até Todos > OAuth de Sistema > Provedores JWT.
    2. Selecione Novo.
    3. No formulário, preencha os campos.
      Tabela 3. Campos de formulário do Provedor JWT
      Campo Descrição
      Nome Nome para identificar o provedor JWT de forma única. Por exemplo, Meu provedor JWT do app GitHub.
      Intervalo de Vencimento (s) Número em segundos para definir a vida útil dos tokens do provedor JWT (Dica: você pode deixar como padrão).
      Configuração de Assinatura. Chave de assinatura JWT válida criada anteriormente. Por exemplo, Minha chave JWT do app GitHub.
    4. Clique com o botão direito no cabeçalho do formulário e selecione “Salvar”.
    5. Insira o ID do appGitHub do app (disponível na seção Sobre da configuração do app [ GitHub em GitHub ) como o valor da declaração de emissão, na lista relacionada de Declarações padrão.
    6. Deixe os valores de auditoria e sub em branco (padrão).

    Registrar GitHub como um provedor OAuth (JWT)

    Use as informações geradas durante a configuração da conta do aplicativo GitHub para registrar GitHub como um provedor OAuth e permitir que a instância solicite tokens OAuth 2.0.

    Antes de Iniciar

    Função necessária: administrador, sn_devops.admin

    Procedimento

    1. Navegar até Todos > OAuth de Sistema > Registro de aplicações.
    2. Selecione Novo.
      A aplicação Que tipo de OAuth? mensagem é exibida.
    3. Selecione Conectar-se a um provedor OAuth de terceiros.
    4. No formulário, preencha os campos.
      Tabela 4. Campos de formulário de Registro de aplicações
      Campo Descrição
      Nome Nome para identificar exclusivamente o registro. Por exemplo, insira Meu provedor de apps do GitHub.
      ID de cliente ID de cliente do app GitHub (dica: disponível na seção Sobre da configuração do app [ GitHub em GitHub ).
      Segredo do cliente Segredo do cliente do app GitHub (dica: disponível na seção Sobre da configuração do app [ GitHub em GitHub ).
      Script da API OAuth Opção que permite fazer referência a uma inclusão de script OAuthUtil corrigida. Selecione OAuthDevOpsGitHubJWTHandler.
      Tipo de concessão padrão Tipo de concessão associado ao registro de aplicações. Selecione Portador JWT.
      URL de Token O local do endpoint do token que a instância usa para recuperar e atualizar tokens.

      Para a versão em nuvem, insira: https://api.github.com/app/installations/<installation_id> /access_tokens .

      Para a versão Enterprise, insira: https://<HOST_URL> /api/v3/app/installations/<installation_id> /access_tokens .

      Para o ID de instalação, acesse a seção Instalar app na configuração do app GitHub no GitHub e selecione o ícone de engrenagem para configurar seu app. O ID de instalação estará no URL da página da web. Por exemplo, https://github.com/settings/installations/<installation_id> .

    5. Deixe o restante dos campos de formulário como padrão.
      Formulário Registro de aplicações
    6. Clique com o botão direito no cabeçalho do formulário e selecione “Salvar”.
    7. Abra o perfil padrão criado na lista relacionada Perfis de entidade OAuth.
    8. Preencha o campo Provedor JWT com o provedor JWT criado anteriormente e salve o formulário.
    9. Navegue até Gerenciamento de chaves > Políticas de acesso ao módulo > Tudo.
    10. Selecione a política que tem com_snc_platform_security_oauth_glideencrypter como o valor do campo Módulo de criptografia e Inclusão de script: OAuthDevOpsGitHubJWTHandler como o valor do campo Script de destino.
    11. Certifique-se de que o campo Resultado esteja definido como Rastrear e salve as mudanças.
      Formulário que mostra que o campo de resultado está definido para rastrear.

    Criar um registro de credencial para GitHub Provedor de aplicações (JWT)

    Crie um registro de credencial para o provedor de aplicações GitHub criado anteriormente para autorizar ações.

    Antes de Iniciar

    Função necessária: administrador, sn_devops.admin

    Procedimento

    1. Navegar até Todos > Conexões e Credenciais > Credenciais.
    2. Selecione Novo.
      Que tipo de credenciais você deseja criar? mensagem é exibida.
    3. Selecione Credenciais OAuth 2.0.
    4. No formulário, preencha os campos.
      Tabela 5. Campos de formulário de credenciais do OAuth 2.0
      Campo Valor necessário
      Nome Nome para identificar exclusivamente o registro. Por exemplo, insira Minha credencial do app GitHub.
      Ativo Opção para habilitar o registro.
      Perfil de Entidade OAuth Perfil de Entidade OAuth padrão criado no Registro de aplicações.
    5. Salve o registro.
    6. Selecione o link relacionado Obter token OAuth para gerar o token OAuth.