Введение

Гибкий механизм аутентификации пользователей

Подключаемый модуль аутентификации (PAM) — это механизм интеграции множества схем аутентификации низкого уровня в высокоуровневый интерфейс программирования приложений (API). PAM позволяет разрабатывать программы, использующие аутентификацию, независимо от лежащей в основе схемы аутентификации. Впервые он был предложен компанией Sun Microsystems в запросе комментариев (RFC) 86.0 от Open Software Foundation, датированном октябрем 1995 года. Он был принят в качестве фреймворка аутентификации для Common Desktop Environment. Как самостоятельная инфраструктура с открытым исходным кодом, PAM впервые появился в Red Hat Linux 3.0.4 в августе 1996 года в рамках проекта Linux PAM. В настоящее время PAM поддерживается в операционных системах AIX, DragonFly BSD, FreeBSD, HP-UX, Linux, macOS, NetBSD и Solaris. Поскольку единого централизованного стандарта поведения PAM не существует, позднее была предпринята попытка стандартизировать PAM в рамках процесса стандартизации X/Open UNIX, что привело к созданию стандарта X/Open Single Sign-On (XSSO). Этот стандарт не был ратифицирован, однако проект стандарта послужил ориентиром для последующих реализаций PAM (например, OpenPAM).

Критика

Поскольку большинство реализаций PAM не взаимодействуют напрямую с удаленными клиентами, PAM сама по себе не может реализовать Kerberos – наиболее распространенный тип единого входа (SSO), используемый в Unix-средах. Это привело к включению SSO в качестве компонента "первичной аутентификации" разрабатываемого стандарта XSSO и появлению технологий, таких как SPNEGO и SASL. Отсутствие этой функциональности также является причиной того, что SSH самостоятельно выполняет согласование механизма аутентификации. В большинстве реализаций PAM модуль pam_krb5 лишь запрашивает билеты предоставления услуг (Ticket Granting Tickets), что включает запрос у пользователя учетных данных, и это используется только при первоначальном входе в систему в среде SSO. Чтобы получить сервисный билет для конкретного приложения, не запрашивая у пользователя повторный ввод учетных данных, это приложение должно быть специально разработано с поддержкой Kerberos. Это связано с тем, что сам модуль pam_krb5 не может получать сервисные билеты, хотя существуют версии PAM KRB5, которые пытаются решить эту проблему.