Sobre o OpenID Connect (OIDC) para Extensões do Copilot
O OpenID Connect (OIDC) permite que as Extensões do Copilot troquem tokens de curta duração diretamente de seu provedor de nuvem em vez de armazenar credenciais do GitHub de longa duração. Esse recurso permite que conjuntos de habilidades e agentes do Copilot autentiquem usuários e acessem recursos de nuvem com mais segurança.
Visão geral do OIDC
Frequentemente, o Extensões do Copilot precisa acessar recursos ou APIs de terceiros em nome dos usuários. Tradicionalmente, isso exigia armazenar tokens GitHub como segredos e fazer chamadas adicionais à API para mapear esses tokens para identidades de usuário em seu sistema. Com o OIDC, a extensão pode solicitar tokens de acesso de curta duração diretamente do serviço de autenticação trocando informações de identidade do GitHub.
Quando habilitado, o provedor do OIDC do GitHub gera automaticamente um token que contém declarações sobre o usuário e o contexto da solicitação. O serviço de autenticação pode validar essas declarações e trocá-las por um token de acesso com escopo específico para seu serviço.
O uso do OIDC é especialmente valioso para o desenvolvimento de conjuntos de habilidades do Copilot, pois permite que você aproveite os pontos de extremidade de API existentes sem manter pontos de extremidade separados específicos do GitHub. Em vez de duplicar pontos de extremidade para aceitar tokens do GitHub, você pode usar o OIDC para converter identidades do GitHub em tokens de autenticação nativos do serviço.
Benefícios de usar o OIDC
Implementando a troca de tokens do OIDC em sua Extensão do Copilot, você pode:
- Evitar armazenar tokens do GitHub de curta duração ou manter um mapeamento entre o GitHub e as identidades do serviço.
- Usar tokens de curta duração que expiram automaticamente e podem ter o escopo definido especificamente para as necessidades do serviço.
- Evitar fazer chamadas adicionais à API do GitHub para validar tokens e buscar informações do usuário.
- Habilitar a integração direta para Habilidades do Copilot com suas APIs existentes sem manter pontos de extremidade separados para o GitHub.
- Reutilizar pontos de extremidade de API existentes convertendo a autenticação do GitHub nos tokens nativos do serviço.
Sobre o fluxo de troca de tokens
Veja a seguir como o Plataforma de Extensibilidade do Copilot troca um token do OIDC por um token de acesso para autenticar solicitações à sua extensão.
Solicitação Inicial
- O usuário envia uma mensagem ao seu Extensão do Copilot.
- O GitHub gera um token do OIDC que contém informações de identidade do usuário.
- O GitHub chama o ponto de extremidade de troca de token com o token OIDC.
- Seu serviço valida o token e retorna um token de acesso.
- O GitHub inclui o token de acesso na solicitação para sua extensão.
# HTTP header
Authorization: Bearer <your-service-token>
X-GitHub-Token: <github-token>
Solicitações subsequentes
- O GitHub armazena em cache seu token de acesso por até 10 minutos.
- O token armazenado em cache é reutilizado para solicitações posteriores.
- Se o token expirar ou se tornar inválido, o GitHub solicitará um novo.
Entendendo os tokens do OIDC
O token do OIDC do GitHub é um JWT que contém declarações sobre o usuário e o contexto da solicitação:
{
"jti": "<unique-token-id>",
"sub": "<github-user-id>",
"aud": "<your-client-id>",
"iss": "https://github.com/login/oauth",
"nbf": 1632492967,
"exp": 1632493867,
"iat": 1632493567,
"act": {
"sub": "api.copilotchat.com"
}
}
Práticas recomendadas
- Defina o escopo dos tokens para as permissões mínimas necessárias.
- Implemente o registro em log e o tratamento de erro adequados.
- Monitore os padrões de troca de tokens para detectar anomalias de segurança.
- Mantenha os tokens de curta duração para minimizar os riscos à segurança.
- Valide todas as declarações antes de emitir tokens de acesso.
- Considere implementar a limitação de taxa no ponto de extremidade da troca de tokens.
- Use HTTPS para todas as comunicações de troca de tokens.