Аутентификация учетных данных пользователя Unix через веб-браузер

226
clifgray

Кто-нибудь может дать мне советы о том, как аутентифицировать учетные данные пользователя Unix через браузер?

По сути, я даю доступ к просмотру некоторых файлов и хочу убедиться, что пользователи аутентифицированы, но не хочу вводить дополнительный пароль и имя пользователя, которые они должны помнить.

1
запросите у пользователя имя пользователя / пароль, вычислите хэш пароля и сравните его с / etc / shadow. Проблема в том, что теневой файл виден только для root jet 9 лет назад 0
было бы очень плохой практикой иметь веб-приложение для получения root-прав для запуска скрипта, чтобы сравнить хэш-код попытанного пароля с хешем / etc / shadow? clifgray 9 лет назад 1
@clifgray Очень плохая практика. JakeGould 9 лет назад 0
Существуют ли альтернативы или инструменты, которые позволяют мне сравнивать предпринятый пароль с unix, внешним по отношению к самой учетной записи unix? clifgray 9 лет назад 0

1 ответ на вопрос

1
grawity

There are few transparent methods for this, unfortunately.

  • In a centrally managed network, you could possibly use Kerberos, with mod_auth_gssapi or mod_auth_kerb on the web server side (aka "HTTP Negotiate"). Kerberos is very secure, but can be a pain to configure for web usage (not all browsers support it, and only some allow it by default).

  • If all the computers are trusted (i.e. users are guaranteed to not tamper with root-installed software), the Ident protocol (RFC 1413) is a possibility, but the authentication it provides is very weak.

But most often, your only option is to ask for a password.

  • If the users have accounts in /etc/passwd, as mentioned in your comment, running a privileged program is unfortunately the only way to verify a received password against /etc/shadow.

    If you do this, don't write your own scripts through sudo, because you will get input validation wrong the first time, and because it's a solved problem already. Pick something well-known, for example Cyrus saslauthd (which can run in -a pam mode); that way your website will not need any privileges beyond connecting to the saslauthd socket.