可插拔认证模块

可插拔认证模块 （PAM）是一种将多个低级认证方案集成到高级应用程序编程接口（API）中的机制， 可以让依赖于身份验证的程序独立于底层的身份验证方案编写。PAM 最初由太阳微系统在1995年10月的开放软件基金会的请求意见稿 （RFC）86.0中提出。它被用作通用桌面环境的身份验证框架。作为独立的开源基础结构，PAM 于1996年8月在 Linux PAM 项目中首次出现在 Red Hat Linux 3.0.4中。 当前， AIX操作系统、DragonFly BSD、FreeBSD、HP-UX、Linux、macOS、NetBSD 和 Solaris 均支持PAM。

由于不存在规范 PAM 行为的中心标准，后来有人尝试将 PAM 标准化为 X/Open UNIX 标准化过程的一部分，从而产生了X/Open Single Sign-on（XSSO）标准。 该标准尚未获得批准，但是其草案可供后来的PAM实现（例如OpenPAM）参考。

批评 
由于大多数 PAM 实现本身都不与远程客户端交互，PAM 本身无法实现 Kerberos（Unix环境中最常见的SSO类型）。这导致SSO被合并为可能的XSSO标准的“主要认证”部分，并且出现了诸如SPNEGO和 SASL 之类的技术。 这种功能上的缺乏也是 SSH 自己实现身份验证机制协商的原因。 

在大多数PAM实现中，pam_krb5 只能获取票据授权票据（TGT），这涉及到提示用户输入凭据，并且仅用于SSO环境中的初始登录。如要在不提示用户再次输入凭据的前提下，获取特定应用程序的服务票证，则必须对该应用程序进行特定的编码以支持 Kerberos，这是因为 pam_krb5 本身无法获取服务票证（尽管有些 PAM-KRB5 版本正试图解决该问题）。

参见 

 身份管理
 Java身份验证和授权服务
 Linux PAM
 名称服务开关（NSS）
 OpenPAM

参考文献

外部链接 

 原始PAM RFC 
 
 Linux的可插入身份验证模块 
 充分利用可插拔身份验证模块（PAM） 
 Oracle Solaris管理：安全服务：使用PAM 
 X / Open Single Sign-on（XSSO）1997工作文件草案 

应用程序接口
计算机访问控制框架
Open Group標準