【问题标题】:How can I implement Picketlink Authenticator in the war layer如何在战争层实现Picketlink Authenticator
【发布时间】:2014-07-01 04:40:58
【问题描述】:

正如标题所说,我在战争层中创建了一个用@Picketlink 注释的类。请注意,我有一个耳朵部署结构(ejb、war)。

自定义身份验证器:

@PicketLink
public class PicketlinkAuthenticator extends BaseAuthenticator { }

如果我将该类放在 ejb 层,则身份验证是可以的,但是当我将它放到 war 层时,项目似乎找不到它,因为它正在抛出:

20:49:46,027 INFO  [org.picketlink.common] (default task-10) Using logger implementation: org.picketlink.common.DefaultPicketLinkLogger
20:49:46,043 INFO  [org.picketlink.idm] (default task-10) PLIDM001000: Bootstrapping PicketLink Identity Manager
20:49:46,068 WARN  [org.picketlink.idm] (default task-10) PLIDM001101: Working directory [\tmp\pl-idm] is marked to be always created. All your existing data will be lost.
20:49:46,111 INFO  [org.picketlink.idm] (default task-10) PLIDM001100: Using working directory [\tmp\pl-idm].
20:49:46,127 DEBUG [org.picketlink.idm] (default task-10) No partitions to load from \tmp\pl-idm\pl-idm-partitions.db
20:49:46,152 DEBUG [org.picketlink.idm] (default task-10) Initializing Partition [6a373282-0173-4b7d-bd6a-ff0e5dc43436] with id [6a373282-0173-4b7d-bd6a-ff0e5dc43436].
20:49:46,153 DEBUG [org.picketlink.idm] (default task-10) Loaded Agents for Partition [6a373282-0173-4b7d-bd6a-ff0e5dc43436].
20:49:46,154 DEBUG [org.picketlink.idm] (default task-10) Loaded Credentials for Partition [6a373282-0173-4b7d-bd6a-ff0e5dc43436].

为什么不把验证器移到 ejb 端呢? ->因为我抛出了用户过期等自定义错误。我需要 jsf 来发布这些错误消息。

为什么不移动 web 层中的 picketlink 依赖项? ->因为我扩展了Picketlink帐户的帐户绑定到我的服务。

正如这里所建议的,我已经在 war 项目中添加了 picketlink 模块: https://docs.jboss.org/author/display/PLINK/JBoss+Modules

<jboss-deployment-structure>
  <ear-subdeployments-isolated>false</ear-subdeployments-isolated>
  <sub-deployment name="THE-WAR-MODULE-THAT-REQUIRES-PICKETLINK.war">
    <dependencies>
      <module name="org.picketlink" />
    </dependencies>
  </sub-deployment>
</jboss-deployment-structure>

无论如何?我只想显示一些自定义错误:-(

【问题讨论】:

标签: jboss jboss7.x wildfly


【解决方案1】:

我无法解决这个问题,但我有一个变通的解决方案,那就是将纠察链接模块移动到 Web 层,然后将身份实例传递给需要它的服务。

【讨论】:

    【解决方案2】:

    我也因同样的问题而失踪了一段时间(现在是 2016 年......)。似乎使它起作用的是添加以下 CDI 注释:

    @PicketLink
    @Name
    @RequestScoped
    public class PicketlinkAuthenticator extends BaseAuthenticator { }
    

    我希望核心身份验证管理器仅基于 @PicketLink 注释来选择它,但是如果没有 CDI 注释,自定义 Authenticator 类甚至永远不会加载。也许还有其他方式需要我们引导 PicketLink - 但我找不到任何参考。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多