Proteger permissões de organização (não-API)
Use o template de organização para gerenciar e aplicar papéis e permissões em nível de organização no Logto, controlando o acesso a funcionalidades e fluxos dentro do contexto de uma organização.
O que são permissões de organização (não-API)?
As permissões de organização (não-API) controlam o que os usuários podem fazer dentro do contexto de uma organização, mas não são aplicadas no nível da API. Em vez disso, elas governam o acesso a funcionalidades do aplicativo, elementos da interface, fluxos de trabalho ou ações de negócio, e não a APIs de backend.
Casos de uso incluem
- Convidar ou gerenciar membros dentro de uma organização
- Atribuir ou alterar papéis da organização
- Gerenciar cobrança, configurações ou funções administrativas de uma organização
- Acesso a dashboards, análises ou ferramentas internas que não possuem endpoints de API
O Logto permite proteger essas permissões de organização usando OAuth 2.1 e RBAC, além de suportar arquiteturas SaaS multi-tenant.
Essas permissões são gerenciadas através de papéis de organização definidos no template de organização. Todas as organizações usam o mesmo template, garantindo um modelo de permissões consistente entre todas as organizações.
Como funciona no Logto
- RBAC em nível de organização: Papéis e permissões são definidos no template de organização. Quando um usuário entra em uma organização, ele recebe um ou mais papéis, concedendo permissões específicas.
- Aplicação não-API: As permissões são verificadas e aplicadas na interface do seu app, fluxo de trabalho ou lógica de backend, não necessariamente por um gateway de API.
- Separação da proteção de API: As permissões de organização (não-API) são distintas das permissões de recursos de API. Você pode combinar ambas para cenários avançados.

Visão geral da implementação
- Defina as permissões de organização no Logto, dentro do template de organização.
- Crie papéis de organização que agrupem as permissões necessárias para ações específicas da organização.
- Atribua papéis a usuários ou clientes dentro de cada organização.
- Obtenha um token de organização (JWT) para a organização atual usando o fluxo de token de atualização ou client credentials.
- Valide os tokens de acesso na interface ou backend do seu app para aplicar as permissões de organização.
Fluxo de autorização: autenticando e protegendo permissões de organização
O fluxo a seguir mostra como um cliente (web, mobile ou backend) obtém e utiliza tokens de organização para aplicação de permissões não-API.
Observe que o fluxo não inclui detalhes exaustivos sobre os parâmetros ou cabeçalhos necessários, mas foca nos passos principais. Continue lendo para ver como o fluxo funciona na prática.
Autenticação do usuário = navegador/app. M2M = serviço de backend ou script usando client credentials + contexto de organização.
Passos de implementação
Registrar permissões de organização
- Acesse Console → Template de organização → Permissões de organização.
- Defina as permissões de organização necessárias (ex.:
invite:member
,manage:billing
,view:analytics
).
Para o passo a passo completo, veja Definir permissões de organização.
Configurar papéis de organização
- Acesse Console → Template de organização → Papéis de organização.
- Crie papéis que agrupem as permissões de organização definidas anteriormente (ex.:
admin
,member
,billing
). - Atribua esses papéis a usuários ou clientes dentro de cada organização.
Para o passo a passo completo, veja Usar papéis de organização.
Obter tokens de organização (não-API)
Seu cliente/app deve obter um token de organização (não-API) para acessar permissões de organização. O Logto emite tokens de organização como JSON Web Tokens (JWTs). Você pode obtê-los usando o fluxo de token de atualização ou o fluxo client credentials.
Fluxo de token de atualização
Quase todos os SDKs oficiais do Logto suportam a obtenção de tokens de organização usando o fluxo de token de atualização nativamente. Uma biblioteca padrão de cliente OAuth 2.0 / OIDC também pode ser usada para implementar esse fluxo.
- Logto SDK
- OAuth 2.0 / OIDC client library
Ao inicializar o Logto SDK, adicione urn:logto:scope:organizations
e as permissões de organização desejadas (escopos) ao parâmetro scopes
.
Alguns SDKs do Logto possuem um escopo pré-definido para organizações, como UserScope.Organizations
em SDKs JavaScript.
Inspecione a reivindicação organizations
no Token de ID (ID token) para obter uma lista de IDs das organizações às quais o usuário pertence. Essa reivindicação lista todas as organizações das quais o usuário é membro, facilitando a enumeração ou troca de organizações em seu aplicativo.
Use getOrganizationToken
ou um método similar (como getAccessToken
com um ID de organização) para solicitar um token de organização para uma organização específica.
Para detalhes de cada SDK, veja Inícios rápidos.
Ao configurar seu cliente OAuth 2.0 ou inicializar o fluxo de código de autorização, certifique-se de incluir os seguintes parâmetros:
resource
: Defina comourn:logto:resource:organizations
para indicar que deseja um token de organização.scope
: Inclua o escopo pré-definido de organização (urn:logto:scope:organizations
),offline_access
(para obter tokens de atualização) e quaisquer permissões de organização específicas necessárias (ex.:invite:member
,manage:billing
).
Algumas bibliotecas podem não suportar o parâmetro resource
nativamente, mas geralmente permitem passar parâmetros adicionais na requisição de autorização. Verifique a documentação da sua biblioteca para detalhes.
Veja um exemplo não normativo de como a requisição de autorização pode ser:
GET /oidc/auth?response_type=code
&client_id=your-client-id
&redirect_uri=https://your-app.com/callback
&scope=openid profile offline_access urn:logto:scope:organizations invite:member manage:billing
&resource=urn:logto:resource:organizations
&code_challenge=abc123
&code_challenge_method=S256
&state=xyz
HTTP/1.1
Host: your.logto.endpoint
Após a autenticação do usuário, você receberá um código de autorização. Use esse código fazendo uma requisição POST para o endpoint /oidc/token
do Logto.
Veja um exemplo não normativo da requisição de token:
POST /oidc/token HTTP/1.1
Host: your.logto.endpoint
Content-Type: application/x-www-form-urlencoded
Authorization: Basic base64(client_id:client_secret)
grant_type=authorization_code
&code=authorization-code-received
&redirect_uri=https://your-app.com/callback
No momento, o Logto não suporta a obtenção de tokens de organização (organization tokens) diretamente pelo fluxo de código de autorização. Você precisará usar o fluxo de token de atualização (refresh token) para obter um token de organização (organization token).
Você receberá um token de atualização que pode ser usado para obter tokens de organização.
Inspecione a reivindicação organizations
no Token de ID (ID token) para obter uma lista de IDs das organizações às quais o usuário pertence. Essa reivindicação lista todas as organizações das quais o usuário é membro, facilitando a enumeração ou troca de organizações em seu aplicativo.
Por fim, use o token de atualização para obter um token de organização fazendo uma requisição POST para o endpoint /oidc/token
do Logto. Lembre-se de incluir:
- O parâmetro
organization_id
definido para o ID da organização desejada. - (Opcional) O parâmetro
scope
para restringir ainda mais as permissões necessárias (ex.:manage:members view:reports
).
Veja um exemplo não normativo de como a requisição de token pode ser:
POST /oidc/token HTTP/1.1
Host: your.logto.endpoint
Content-Type: application/x-www-form-urlencoded
Authorization: Basic base64(client_id:client_secret)
grant_type=refresh_token
&refresh_token=your-refresh-token
&organization_id=your-organization-id
Fluxo client credentials
Para cenários máquina para máquina (M2M), você pode usar o fluxo client credentials para obter um token de acesso para permissões de organização. Fazendo uma requisição POST para o endpoint /oidc/token
do Logto com parâmetros de organização, você pode solicitar um token de organização usando seu client ID e secret.
Aqui estão os principais parâmetros a serem incluídos na requisição:
organization_id
: O ID da organização para a qual deseja o token.scope
: As permissões de organização que deseja solicitar (ex.:invite:member
,manage:billing
).
Veja um exemplo não normativo da requisição de token usando o grant type client credentials:
POST /oidc/token HTTP/1.1
Host: your.logto.endpoint
Content-Type: application/x-www-form-urlencoded
Authorization: Basic base64(client_id:client_secret)
grant_type=client_credentials
&organization_id=your-organization-id
&scope=invite:member manage:billing
Validar tokens de organização
Os tokens de organização emitidos pelo Logto (JWTs) contêm reivindicações que seu app/interface/backend pode usar para aplicar o controle de acesso em nível de organização.
Quando seu app recebe um token de organização, você deve:
- Verificar a assinatura do token (usando os JWKs do Logto).
- Confirmar que o token não está expirado (reivindicação
exp
). - Checar se o
iss
(emissor) corresponde ao seu endpoint Logto. - Garantir que o
aud
(público) corresponde ao identificador formatado da organização (ex.:urn:logto:organization:{organization_id}
). - Separar a reivindicação
scope
(separada por espaço) e verificar as permissões necessárias.
Para guias passo a passo e específicos de linguagem, veja Como validar tokens de acesso.
Boas práticas e dicas de segurança
- Nunca confie apenas na aplicação na interface: Sempre valide permissões no backend para ações críticas.
- Use restrições de público: Sempre verifique a reivindicação
aud
para garantir que o token é para a organização pretendida. - Mantenha as permissões orientadas ao negócio: Use nomes claros que correspondam a ações reais; conceda apenas o necessário para cada papel de organização.
- Separe permissões de API e não-API sempre que possível (mas ambas podem estar em um único papel).
- Revise o template de organização regularmente conforme seu produto evolui.
Perguntas frequentes
Posso misturar permissões de organização e não-organização em um único papel?
Não, as permissões de organização (incluindo permissões de API em nível de organização) são definidas pelo template de organização e não podem ser misturadas com permissões globais de API. No entanto, você pode criar papéis que incluam permissões de organização e permissões de API em nível de organização.
Onde devo aplicar permissões não-API?
Verifique permissões não-API tanto na interface (para controle de funcionalidades) quanto na lógica do servidor para ações sensíveis.
Leitura adicional
Como validar tokens de acesso Personalizando reivindicações de tokenCaso de uso: Construir um aplicativo SaaS multi-tenant