Nesta página
- Métodos de autenticação
- Sessões no navegador
- Tokens Bearer (OAuth 2.1)
- Fluxo do OAuth 2.1
- 1. Registro dinâmico de clientes
- 2. Solicitação de autorização
- 3. Troca de tokens
- 4. Atualização do token
- Escopos
- Modelo de autorização
- Funções
- Permissões das funções
- Endpoints de descoberta
- Metadados do servidor de autorização OAuth (RFC 8414)
- Metadados do recurso protegido (RFC 9728)
- Limitação de taxa
Autenticação e autorização
MarkdownComo a Glossia autentica usuários e autoriza o acesso à API.
Métodos de autenticação
A Glossia oferece dois métodos de autenticação, dependendo do contexto.
Sessões no navegador
Ao entrar pela interface web, a Glossia usa autenticação baseada em sessão. A autenticação é realizada por meio de um provedor externo (GitHub ou GitLab) usando a biblioteca Assent. Após uma autenticação bem-sucedida, um cookie de sessão é definido e usado nas solicitações subsequentes.
Tokens Bearer (OAuth 2.1)
Para acessar a API, como pela CLI ou por outras ferramentas, a Glossia implementa OAuth 2.1 com o fluxo de código de autorização e PKCE. Os clientes obtêm um token Bearer e o incluem no cabeçalho Authorization:
Authorization: Bearer <access_token>
Fluxo do OAuth 2.1
1. Registro dinâmico de clientes
Os clientes se registram chamando POST /oauth/register com seus metadados. Esse processo segue a RFC 7591.
{
"client_name": "My Tool",
"redirect_uris": ["http://localhost:8080/callback"],
"grant_types": ["authorization_code"]
}
O servidor retorna client_id e client_secret.
2. Solicitação de autorização
O cliente redireciona o usuário para /oauth/authorize com os parâmetros de PKCE:
GET /oauth/authorize?response_type=code&client_id=<id>&redirect_uri=<uri>&code_challenge=<challenge>&code_challenge_method=S256&state=<state>
PKCE é obrigatório para todos os clientes. Somente o método de desafio S256 é compatível.
3. Troca de tokens
Após a aprovação do usuário, o cliente troca o código de autorização por tokens em POST /oauth/token:
POST /oauth/token
Content-Type: application/x-www-form-urlencoded
grant_type=authorization_code&code=<code>&redirect_uri=<uri>&client_id=<id>&code_verifier=<verifier>
A resposta inclui um token de acesso e, opcionalmente, um token de atualização.
4. Atualização do token
Quando um token de acesso expirar, use o token de atualização:
POST /oauth/token
Content-Type: application/x-www-form-urlencoded
grant_type=refresh_token&refresh_token=<token>&client_id=<id>&client_secret=<secret>
Escopos
Os escopos controlam quais ações um token pode realizar. Eles seguem o padrão object:action.
| Escopo | Descrição |
|---|---|
user:read |
Ler informações do perfil do usuário |
user:write |
Atualizar o perfil do usuário |
account:read |
Listar as contas de organizações que você pode acessar |
organization:read |
Ler detalhes da organização e listar suas organizações |
organization:write |
Criar ou atualizar organizações |
organization:delete |
Excluir organizações |
organization:admin |
Executar ações administrativas em organizações |
members:read |
Ler membros e convites da organização |
members:write |
Gerenciar membros e convites da organização |
project:read |
Ler projetos |
project:write |
Criar ou atualizar projetos |
project:admin |
Executar ações administrativas em projetos |
project:delete |
Excluir projetos |
voice:read |
Ler a configuração de voz |
voice:write |
Criar ou atualizar a configuração de voz |
voice:admin |
Executar ações administrativas de voz |
glossary:read |
Ler entradas de terminologia |
glossary:write |
Criar ou atualizar entradas de terminologia |
glossary:admin |
Gerenciar configurações de terminologia |
Modelo de autorização
A Glossia aplica duas camadas à API REST e ao servidor MCP:
- Verificação de escopo: o token de acesso deve incluir o escopo
object:actionnecessário. - Política no nível do recurso: o usuário atual deve estar autorizado para o recurso específico por meio de
Glossia.Policy.
Os escopos representam a capacidade máxima de um token. O sistema de políticas aplica a permissão efetiva para um recurso específico.
Funções
| Função | Descrição |
|---|---|
self |
O usuário que acessa os próprios recursos |
organization_member |
Um membro da organização proprietária do recurso |
organization_admin |
Um administrador da organização proprietária do recurso |
public_account |
A conta é pública (somente leitura) |
Permissões das funções
| Escopo | self | organization_member | organization_admin | public_account |
|---|---|---|---|---|
user:read |
Sim | Sim | ||
user:write |
Sim | |||
account:read |
Sim | Sim | Sim | |
organization:read |
Sim | Sim | ||
organization:write |
Sim | |||
organization:delete |
Sim | |||
organization:admin |
Sim | |||
members:read |
Sim | Sim | ||
members:write |
Sim | |||
project:read |
Sim | Sim | Sim | |
project:write |
Sim | |||
project:admin |
Sim | |||
project:delete |
Sim | |||
voice:read |
Sim | Sim | Sim | |
voice:write |
Sim | |||
voice:admin |
Sim | |||
glossary:read |
Sim | Sim | ||
glossary:write |
Sim | |||
glossary:admin |
Sim |
Endpoints de descoberta
A Glossia publica metadados em URLs padronizadas e conhecidas para que os clientes possam descobrir os endpoints automaticamente.
Metadados do servidor de autorização OAuth (RFC 8414)
GET /.well-known/oauth-authorization-server
Retorna o emissor, os endpoints, os escopos compatíveis, os tipos de concessão e os métodos de desafio de código.
Metadados do recurso protegido (RFC 9728)
GET /.well-known/oauth-protected-resource
Retorna o identificador do recurso, os servidores de autorização, os escopos compatíveis e os métodos de autenticação por token portador.
Limitação de taxa
Os endpoints OAuth têm limitação de taxa por endereço IP:
| Endpoint | Limite |
|---|---|
POST /oauth/register |
5 solicitações por minuto |
POST /oauth/token |
30 solicitações por minuto |
POST /oauth/revoke |
30 solicitações por minuto |
POST /oauth/introspect |
30 solicitações por minuto |
Quando o limite de taxa é atingido, o servidor retorna HTTP 429 (Muitas solicitações).
Glossia