好的,我找到了答案。所以这里是:
基本上,我想要实现的是在glassfish中实现基于openid的身份验证机制。这样做的一种方法是使用,
ProgrammaticLogin但这有一些缺点-
没有简单的方法可以重定向回请求的URL,而编程身份验证意味着程序员需要做更多的工作。因此,在阅读之后,我找到了实现目标的更好方法-
服务器身份验证模块
或SAM。这是在所述的标准过程的一部分JSR-196和用于GlassFish的(比标准即不同创建可插拔AUTH模块提供了一种方法
FORM,
BASIC等等)。通过此方法,您可以在保持声明式安全模型的同时将新的auth模块插入servlet容器。
因此,我要做的就是编写自己的自定义SAM。这是一个快速的方法:
- 实现ServerAuthModule接口,该接口主要归结为以下方法:
AuthStatus validateRequest(MessageInfo messageInfo, security.auth.SubjectclientSubject, security.auth.Subject serviceSubject) throws AuthException
将SAM打包到一个jar中,然后将jar放在glassfish lib目录中。
配置SAM以与您的应用程序一起使用。分两个步骤完成:
- 在domain.xml中将您的SAM定义为消息安全提供者。
- 绑定SAM以与您的应用程序一起使用。您可以通过在应用程序的sun-web-app.xml中定义httpservlet-security-provider属性来实现。将属性的值设置为在步骤1中分配给SAM的名称。
有关更多信息,请阅读Ron
Monzillo撰写的精彩教程。
更新:
有一个更简单,更优雅的解决方案,称为AuthenticRoast。这是由Aike
Sommer编写的Java库,可让您编写自己的可插入身份验证器。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)