JAAS并不真正适合于Web应用程序。对于台式机应用程序来说更是如此,它支持交互式输入并访问由JVM管理的本地资源,例如文件,网络套接字。
但是,如果您真的想走JAAS之路,请准备编写自定义的LoginModule以及可能的CallbackHandler和Principal。最重要的类是LoginModule。您也许可以重用一些现有的Principal类。
CallbackHandler会将令牌从URL中拉出。LoginModule将根据某些数据库查找该令牌,并使用某些Principal填充传入的Subject。
这听起来有些混乱,因为这些术语非常接近(主题与主体,LoginModule与CallbackHandler),因此文档应该相距很近。
完成所有这些操作后,还需要配置Web容器的策略以加载新的登录上下文(还有另一个非常相关的术语)。这就像在Linux中配置PAM。请您的管理员为您执行此操作。
但是您还没有完成。最后一个任务是编写一个(我假设您正在开发基于Java
Servlet的东西)过滤器。此过滤器应在第一级挂接。如果看到特殊的参数值(例如user_token),它将获取配置的LoginContext对象,并调用其login方法。
现在,如果您完全废弃了JAAS,则可以只使用servlet过滤器。在此过滤器中,如果身份验证成功,则可以使用自己的自定义对象(例如User对象)填充会话对象以表示成功。简单得多。



