Em grande parte, sua pergunta se traduz em: Eu quero que meu aplicativo da Web autentique usuários no banco de dados do usuário do sistema ( /etc/passwd
, /etc/shadow
e /etc/group
), assim como o SSH. O jargão para a camada de autenticação do sistema Linux é o PAM, módulos de autenticação plugáveis.
O mais rápido é o mais provável de configurar o Apache para fornecer suporte ao PAM. Uma receita é executar pwauth e mod_authnz_external resultando em uma configuração do Apache parecida com:
DefineExternalAuth pwauth pipe /usr/sbin/pwauth
<Directory /var/www/yourapp>
AuthType Basic
AuthName "Your app requires authentication"
AuthBasicProvider external
AuthExternal pwauth
# any valid username/password is allowed access
Require valid-user
## Only bob and sarah allowed
# Require user bob sarah
## Only the members of the group yourappusers are granted access
# Require group yourappusers
</Directory>
Em ambientes maiores, a autenticação de usuário baseada em arquivo local geralmente é substituída por um diretório central de usuários, geralmente um diretório LDAP. No nível do sistema, que é a questão de alterar a configuração do PAM, após o qual todos os aplicativos que precisam de autenticação são instantaneamente informados sobre o LDAP.
Existe também um módulo LDAP do Apache, embora normalmente a maioria dos aplicativos suporte nativamente a autenticação LDAP, em vez disso, confiando no Apache. Isso também permite que coisas como um botão "fazer logoff" funcionem, funcionalidade que não existe com a autenticação do Apache.
As chaves SSH são específicas para o protocolo SSH e, embora você possa achar a reconstrução dessa funcionalidade em um aplicativo da web um desafio interessante, você deve saber que o equivalente mais usado da autenticação de chave pública SSH em aplicativos da Web é implementar certificados de cliente SSL .