- 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
Entre desenvolvedores, é razoável concordar em usar
authneauthzem 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é mesmoauthneauthz, não sei se há realmente necessidade disso.Como o texto aponta,
authera 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.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.
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...
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.
Não é justamente para juntar os dois de propósito e chamar de auth?
Existem authentication e authorization, então por que insistir em usar...
Opinião do Hacker News