25 pontos por GN⁺ 2024-05-28 | 8 comentários | Compartilhar no WhatsApp
  • O termo "auth" carrega dois significados: autenticação (authentication) e autorização (authorization)
  • Isso causa confusão em nomes de bibliotecas e pacotes
  • Os termos "authn" e "authz" não são claros e são difíceis de entender

Diferença entre autenticação e autorização

  • Autenticação (authentication): o processo de verificar quem é o usuário
  • Autorização (authorization): o processo de determinar o que o usuário pode fazer
  • Os dois conceitos são diferentes, e resolver um não resolve automaticamente o outro

Proposta de usar "permissions" e "login"

  • A proposta é distinguir claramente autenticação como "login" e autorização como "permissions"
  • "login" pode ser usado tanto como substantivo quanto como verbo
    • Substantivo: as informações inseridas para acessar o sistema
    • Verbo: o ato de fazer login para usar o sistema
  • "permissions" é usado como substantivo, e na forma verbal usa-se "check permissions"

Vantagens de usar termos mais claros

  • Pessoas de outras áreas, além da engenharia de software, conseguem entender com mais facilidade
  • Isso possibilita abstrações melhores
  • Também permite projetar autenticação e autorização como módulos separados

Opinião do GN⁺

  • Importância de usar termos claros: quando a terminologia é clara, a comunicação flui melhor e mal-entendidos são reduzidos.
  • Benefícios da abstração: separar autenticação e autorização torna o design do sistema mais flexível e facilita a manutenção.
  • Exemplos de outros termos: além de "login" e "permissions", termos como "access control" também podem ser considerados.
  • Pontos a considerar ao adotar a terminologia: ao introduzir novos termos, é preciso haver discussão e consenso suficientes dentro da equipe.
  • Recomendação de projetos relacionados: OAuth e OpenID Connect são projetos representativos que separam autenticação e autorização.

8 comentários

 
savvykang 2024-05-29

Entre desenvolvedores, é razoável concordar em usar authn e authz em vez de auth, e usar login e permission em documentos ou controllers/facades que tenham contato com usuários. No entanto, quanto a eliminar até mesmo authn e authz, não sei se há realmente necessidade disso.

 
gcback 2024-05-29

Como o texto aponta, auth era confuso mesmo por ser usado de forma ambígua tanto para autenticação quanto para permissões. Separar isso com termos mais gerais para facilitar a comunicação com áreas além do desenvolvimento puro me parece uma tentativa desejável.

 
nemorize 2024-05-28

Se o problema é que tanto Authentication quanto Authorization podem ser abreviados como Auth,
como foi mencionado no texto, parece que Authn e Authz já seriam suficientes...
Se acharam que isso não era claro, também não teria problema explicitar um pouco mais, até como Authenty e Authory.

 
koxel 2024-05-28

Os sistemas de autorização também têm o formato de permissions e o formato de ACL, então como é que vão distinguir isso...?
Parece meio forçado...

 
namarie32ilu 2024-05-28

Acho que talvez seja uma tentativa de reduzir o custo de comunicação com a equipe não técnica, mas ficou um pouco demais.

 
iolothebard 2024-05-28

Não é justamente para juntar os dois de propósito e chamar de auth?

 
kuber 2024-05-28

Existem authentication e authorization, então por que insistir em usar...

 
GN⁺ 2024-05-28
Opinião do Hacker News
  • "Authorize" e "Authenticate" são excelentes termos usados desde a Idade Média. O significado dessas duas palavras não mudou muito.
  • Esses dois termos têm uma diferença importante em sistemas criptográficos. Trocar as palavras para reduzir confusão provavelmente não ajudaria.
  • A alegação de que o nome "auth" causa confusão não é muito convincente. Mudar a palavra provavelmente não resolveria o problema.
  • É bom usar as abreviações "authn" e "authz". Mas também não há problema em usar as palavras por extenso.
  • "Identity" e "Access" Management (IAM) são termos padrão. Pessoalmente, prefiro o termo "authnz".
  • "Login" não inclui autenticação baseada em token ou chave. Contas de serviço não fazem login, mas precisam de autenticação e autorização.
  • A distinção entre Authn e Authz não é tão clara. Às vezes parece que as pessoas preferem termos elegantes a termos claros.
  • Nunca houve problema em usar o termo "auth" em sistemas de IAM. Quando é preciso ser mais específico, basta usar a expressão adequada.
  • "login" e "permissions" não capturam todo o significado e a complexidade do sistema. Autenticação envolve mais do que login.
  • Autenticação e autorização estão intimamente relacionadas. Não é possível haver autorização sem autenticação.
  • Login não é um bom termo substituto para autenticação. Há casos em que a autenticação não exige login.
  • "auth" pode significar tanto autenticação quanto autorização. Porque os dois conceitos costumam ser usados juntos.
  • Autenticação e autorização são termos padrão em TI e segurança da informação. Para evitar confusão, é melhor usar as palavras completas.
  • "authn" e "authz" são suficientemente utilizáveis entre pessoas técnicas. Para o público em geral, é melhor usar "login" e "permissions".
  • Também existem conceitos semelhantes na vida real. Por exemplo, um crachá de trabalho verifica a identidade e concede permissão de acesso.
  • Autorização e permissões não são a mesma coisa. Permissões são direitos ou privilégios que não estão atribuídos a um usuário específico.
  • Autorização pode ter dois significados. O processo de conceder a um usuário a permissão para executar uma ação específica e o processo de verificar isso.
  • "access control" pode se referir ao controle de acesso em tempo de execução. É o que a aplicação faz depois de autenticar o usuário.
  • "authN" e "authZ" são adequados o suficiente e bem compreendidos. Autorização sempre diz respeito à ligação entre permissões e usuários.