alb*_*ano 6 java authentication glassfish jsr196
我目前正在使用FORMglassfish v2.1中的基于身份验证来登录用户,它工作正常.我想切换到ProgrammaticLogin,我希望能够获取最初请求的URL(即在重定向到登录页面之前)并在我的程序化登录代码中使用它,以便在验证后将用户重定向回请求的页面.
我已经看到了源代码j_security_check- 在我的情况下是FormAuthenticator(catalina codebase)并且它将初始请求保存SavedRequest在会话中的对象中但是该会话是一个StandardSession而不是HttpSession因此没有直接的方式来访问它.
或者我应该将身份验证机制更改FORM为其他内容吗?
谢谢!
好的,我找到了答案.所以这里是:
基本上我试图实现的是在glassfish中实现基于openid的身份验证机制.一种方法是使用,ProgrammaticLogin但这有一些缺点 - 没有简单的方法重定向回请求的URL和程序化auth意味着程序员更多的工作.所以在阅读后我找到了更好的方法来实现我的目标 - 服务器身份验证模块或SAM.这是在所述的标准过程的一部分JSR-196并提供用于创建GlassFish的可插拔模块AUTH的方式(即,比标准不同FORM,BASIC等等).此方法允许您在保留声明性安全模型的同时在servlet容器中插入新的auth模块.
所以我需要做的就是编写自己的自定义SAM.这是一个快速的方法:
实现ServerAuthModule接口,该接口主要归结为以下方法:
AuthStatus validateRequest(MessageInfo messageInfo, security.auth.Subject
clientSubject, security.auth.Subject serviceSubject) throws AuthException
将SAM打包在一个jar中,然后将jar放在glassfish lib目录中.
配置SAM以与您的应用程序一起使用.这分两步完成:
欲了解更多信息,请阅读Ron Monzillo撰写的这篇精彩教程.
更新:有一个更简单,更优雅的解决方案,称为AuthenticRoast.这是一个由Aike Sommer编写的Java库,它允许您编写自己的可插入身份验证器.
| 归档时间: |
|
| 查看次数: |
6516 次 |
| 最近记录: |