首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在war层实现Picketlink身份验证

如何在war层实现Picketlink身份验证
EN

Stack Overflow用户
提问于 2014-05-13 13:18:34
回答 2查看 685关注 0票数 1

正如标题所述,我在war层创建了一个类,并使用@Picketlink进行注释。注意,我有一个ear部署结构(ejb,war)。

自定义身份验证器:

代码语言:javascript
复制
@PicketLink
public class PicketlinkAuthenticator extends BaseAuthenticator { }

如果我将该类放入ejb层,身份验证是可以的,但当我将其放到war层时,项目似乎找不到它抛出的情况:

代码语言:javascript
复制
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端呢?->Because,我正在抛出自定义错误,比如用户过期,等等。我需要jsf发布这些错误消息。

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

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

代码语言:javascript
复制
<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>

不管怎么说?我只想显示一些自定义错误:

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-08 01:48:00

我无法解决这个问题,但我有一个变通的解决方案,就是将picketlink模块移动到web层,并将标识实例传递给需要它的服务。

票数 0
EN

Stack Overflow用户

发布于 2016-07-17 14:36:00

我也有一段时间没有遇到同样的问题(现在是2016年.)。使其工作的似乎是添加以下CDI注释:

代码语言:javascript
复制
@PicketLink
@Name
@RequestScoped
public class PicketlinkAuthenticator extends BaseAuthenticator { }

我本来希望核心身份验证管理器仅仅基于@PicketLink注释来获得这个结果,但是如果没有CDI注释,定制的Authenticator类甚至都不会被加载。也许还有另外一种方法需要我们引导PicketLink --但是我找不到任何引用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23632402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档