如何在glassfish中覆盖j_security_check?

如何在glassfish中覆盖j_security_check?,第1张

如何在glassfish中覆盖j_security_check?

好的,我找到了答案。所以这里是:

基本上,我想要实现的是在glassfish中实现基于openid的身份验证机制。这样做的一种方法是使用,

ProgrammaticLogin
但这有一些缺点-
没有简单的方法可以重定向回请求的URL,而编程身份验证意味着程序员需要做更多的工作。因此,在阅读之后,我找到了实现目标的更好方法-
服务器身份验证模块
或SAM。这是在所述的标准过程的一部分JSR-196和用于GlassFish的(比标准即不同创建可插拔AUTH模块提供了一种方法
FORM
BASIC
等等)。通过此方法,您可以在保持声明式安全模型的同时将新的auth模块插入servlet容器。

因此,我要做的就是编写自己的自定义SAM。这是一个快速的方法:

  1. 实现ServerAuthModule接口,该接口主要归结为以下方法:

AuthStatus validateRequest(MessageInfo messageInfo, security.auth.SubjectclientSubject, security.auth.Subject serviceSubject) throws AuthException

  1. 将SAM打包到一个jar中,然后将jar放在glassfish lib目录中。

  2. 配置SAM以与您的应用程序一起使用。分两个步骤完成:

    • 在domain.xml中将您的SAM定义为消息安全提供者。
    • 绑定SAM以与您的应用程序一起使用。您可以通过在应用程序的sun-web-app.xml中定义httpservlet-security-provider属性来实现。将属性的值设置为在步骤1中分配给SAM的名称。

有关更多信息,请阅读Ron
Monzillo撰写的精彩教程。

更新:
有一个更简单,更优雅的解决方案,称为AuthenticRoast。这是由Aike
Sommer编写的Java库,可让您编写自己的可插入身份验证器。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5587261.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存