问题标签 [picketlink]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1064 浏览

java - 自定义 IDM 身份验证和授权者

我有 Picketlink IDM JPA 身份验证模型的自定义实现。我通过从https://github.com/jboss-developer/jboss-picketlink-quickstarts/tree/master/picketlink-idm-custom-identity-model打包 org.picketlink.idm.jpa 的示例得到它。模型.自定义.简单。然后我实现了这个例子https://github.com/pedroigor/picketlink-quickstarts/tree/master/picketlink-deltaspike-authorization。我在 picketlink-idm-custom-identity-model 示例中更改了 User 类和 UserTypeEntity,如下所示:

然后我实现了登录控制器:

和注册控制器:

之后我实现了授权器:

所以我实现了授权检查器来检查 JSF 中某个组的所属用户:

但是 SPAuthorizer 的 hasGroup 中的 Identity 实例与我在 AuthorizationChecker 中的实例不对应。我在调试器中检查了它。当我这样做时identity.getAccount();,尽管用户已通过身份验证,但它返回 null。知道该怎么做吗?

0 投票
1 回答
748 浏览

java - 在 tomcat7 上的 picketlink SPFilter 集成中不传输角色

我假设我在这里遗漏了一些非常明显的东西,但我花了大约 4 个小时搜索和尝试,但无法找到解决方案,所以也许有一些帮助。我正在遵循本指南:https ://docs.jboss.org/author/display/PLINK/Standalone+Web+Applications%28All+Servlet+Containers%29 我能够连接我的 SP 和我的 IDP 并执行登录。我可以在会话中看到一个用户主体。但是,一旦我添加了 tomcat 安全性,以保护应用程序的某些部分,如上例所示,它就不起作用了。以下是 web.xml 的相关部分

每当我尝试访问 /loginarea/ 下的某些内容时,我什至没有进入 SPFilter 或我的代码就会得到 403。但是,从我在其他 url 下的代码中,我可以读取用户主体,它包含 tomcat 用户(来自快速入门示例)。有趣的是,如果我试图读取角色,它总是返回 null:

委托人 userPrincipal = (Principal) request.getSession().getAttribute(GeneralConstants.PRINCIPAL_ID); <-- 返回具有正确用户名的主体

列出角色 = (List) request.getSession().getAttribute(GeneralConstants.ROLES_ID); <- 空

如果我删除安全约束,我可以毫无问题地访问应用程序和控制器。我正在使用示例中的基本重定向 idp。

问候莱昂

0 投票
3 回答
4221 浏览

certificate - 验证没有中间证书的签名

是否可以验证仅在层次结构中具有祖先或根证书的签名?

免责声明:我是证书处理的新手,所以请原谅幼稚的术语。

考虑以下情况。

  • 我们有两方(让我们称它们为身份提供者的IdP和服务提供者的SP)和一些中央证书颁发机构CA,它绝对受到 IdP 和 SP 的信任。
  • CA 拥有 IdP 和 SP 都知道的自己的证书CertCA(以某个别名导入 IdP 和 SP 的密钥库)
  • Out CA 为 IdP ( CertIdP ) 颁发一份证书,为 SP ( CertSP ) 颁发一份证书。
  • IdP 在其密钥库中有 CertIdP 并且知道密码,因此 IdP 可以使用 CertIdP 签署消息
  • SP/CertSP 相同
  • 现在让我们假设 SP 不知道 CertIdP 并且 IdP 不知道 CertSP。他们只知道用于签署 CertIdP 和 CertSP 的 CertCA。(据我了解,我们有一个证书层次结构 CertIdP --> CertCA <-- CertSP here-)
  • IdP 想要向 SP 发送签名消息。它创建一条消息,然后使用 CertIdP 对其进行签名。
  • SP 收到 IdP 使用 CertIdP 签名的消息。如上所述,SP 没有 CertIdP,只有父证书 CertCA。

我的问题是:SP 可以验证 CertIdP 仅具有其父证书 CertCA 签名的消息的签名吗?

背景故事,为什么要它。

我们正在使用 PicketLink 实施基于 SAML 的 SSO。我们使用 PicketLink 的SAML2SignatureValidationHandler来验证签名。为此,服务提供商 (SP) 需要在其密钥库中拥有 IdP 的证书。当签名的 SAML 断言传递给 SP 时,此处理程序使用 IdP 的证书来验证签名。

上述过程运行良好,但我们有一些组织问题。此过程假定 SP 具有 IdP 的验证证书。万一发生变化,必须在 SP 端更换 IdP 的证书。我们可能有大量的 SP(如果不是数千,则为数百),因此这是一项相当大的努力。

由于 CertIdP 和 CertSP 都是由同一个颁发机构 (CA) 颁发的,而 IdP 和 SP 都绝对信任该颁发机构,因此我们想到可以使用 CA 的证书进行签名验证。如果这可行,则可能无需在 IdP 和 SP 之间交换证书。CA 的证书也非常“长寿”,所以如果只需要在永恒中交换一次(永恒,在我们的例子中是 10-20 年左右)。

但是,我不确定在技术上是否可以验证仅具有父 CertCA 的 CertIdP 签名的签名。可能吗?还是我们在这里完全走错了路?

如果相关的话,我们在 SP 端的 Java/JBoss 平台上,IdP 是第三方软件。

更新:

这是我目前从 IdP 获得的签名:

0 投票
2 回答
897 浏览

jboss7.x - 使用 JPA 的 PicketLink 的基本 HTTP 身份验证失败

表单身份验证使用了正常工作的纠察链接配置,没有任何问题。

我们现在正尝试将 HTTP 身份验证添加到系统的另一部分,但它失败了 - 出现了难以追踪的错误。错误的堆栈跟踪:

奇怪的事情之一是,blah.blah.RealmTypeEntity_$$_jvst83e_bc尽管 jvst 部分保持不变,但末尾的类名称 ( ) 会随着每次部署而变化。

网页.xml:

IdentityConfiguration 已提供并已RealmTypeEntity.class映射。但是,它显然没有RealmTypeEntity_$$_jvst83e_bc映射变体,也不清楚这些变体来自哪里。

与很多事情纠察队一样,谷歌似乎几乎没有帮助:-(

非常感谢任何帮助。

0 投票
1 回答
483 浏览

java - @RolesAllowed 无法正常工作

我必须将方法的访问权限仅限于具有特定角色的用户。IdentityManager 已正确构建。

我有这个控制器类。

并且这个类处理AccessDeniedException上面方法抛出的saveUserChanges

问题是类AccessDeniedException正确地抛出和捕获了SecurityExceptionHandler,但saveUserChanges()无论如何都会执行该方法。

这样对吗?saveUserChanges()如果用户没有“tt”角色,我希望不再执行该方法。

0 投票
0 回答
173 浏览

rest - Picketlink Defaultlogincredentials 在 Rest 服务上没有正文作者

我正在关注Picketlink 快速入门指南。

我在 Tomee 1.7 上为用户创建了一个登录 Rest 服务。它使用快速入门指南提供的 contentType。(application/x-authc-username-password+json) 它将Picketlink Defaultlogincredentials 对象作为参数。

当我从 UI 传入 json 对象时,出现以下错误;没有为响应类 Defaultlogincredentials 找到消息正文编写器。

我也尝试将 contentType 设置为 application/json。

Rest 服务不知道如何将内容解析为对象。

我查看了 pom.xml 和 quickstart 项目,看看我是否错过了依赖项或配置设置。不同之处在于快速入门在 jboss 上运行,而我在 tomee 上运行。

如何让 Tomee 上的 Rest 服务将内容解析为 Defaultlogincredentials 对象?

0 投票
1 回答
553 浏览

java - Picketlink @RolesAllowed 用于分配给组的角色

我正在将纠察链接用于应用程序,如果有人可以帮助我,我将不胜感激。

该应用程序有许多组(管理员、客户服务等),每个组可以有许多角色(如创建新用户、创建新员工、启动工资单流程等)

可以将一个用户分配给一个或多个组,并将一个组分配给一个或多个角色。通常我认为分配到组的用户将继承该组的所有角色。如果我将 BasicModel.hasRole 用于分配给组的用户,它会为分配给该组的所有角色返回 true,这是预期的。但是,当在我的休息端点上使用 @RolesAllowed 注释时,它总是会为同一用户返回拒绝访问异常。如果有任何解决方法有人可以建议吗?我希望@RolesAllowed 允许组内具有允许角色的用户通过。

或者我可以使用其他任何注释吗?

0 投票
0 回答
535 浏览

java - 需要使用另一个 IDP 实现支持身份验证/授权的 IDP

除了标准的用户名/密码表单身份验证之外,我们还需要实现一个支持使用另一个外部 IDP 进行身份验证/授权的 IDP。Picketlink 是否支持这种场景开箱即用?

以下是所需的组件:

  1. 多个依赖于我们的 IDP(我们称之为 IDP-Internal)进行身份验证的 SP。
  2. IDP-Internal 应该支持使用 LdapLoginModule 和 DatabaseLogingModule 对不同用户组进行用户名/密码形式的身份验证。它还应该支持使用另一个 IDP 进行身份验证(我们称之为 IDP-External)
  3. IDP-External 来自具有一些 SAML 扩展的外部提供商。

我们目前已经使用 picketlink 实现了 SP 和 IDP-Internal(遵循 picketlink 示例)。但是,IDP-Internal 到 IDP-External 的集成目前是使用一些手工/解析 SAML 请求/响应的 hacky 借用代码实现的(这里没有纠察链接)。我已经设法通过扩展 Picketlink 的 IDPWebBrowserSSOValve 将这个 hacky 代码集成到 IDP-Internal 中。此自定义 Valve 解析来自 IDP-External 的传入 SAMLResponse,并使用类似于在 SP 端完成的 SAML2LoginModule 进行本地容器身份验证。

这是自定义阀门:

这个解决方案虽然有效,但感觉有点笨拙。有没有更好的方法来做到这一点只使用纠察队?

0 投票
1 回答
59 浏览

java - Picketlink 源代码编译错误

我正在尝试从源代码编译 picketlink,但是在运行 mvn install 或 mvn package 时它一直失败并出现相同的错误。

它总是在“PicketLink 身份管理 API”上失败并出现错误

我已尝试使用 2.5.0、2.5.1、2.5.2、2.6.0 和 2.6.1 版本。

出了什么问题,我该如何解决?

谢谢

0 投票
2 回答
218 浏览

java - Picketlink 2.6+ Jboss AS 7.1.1

我想知道是否可以在 jboss 上使用 picketlink 2.6 或更高版本作为 7.1.1?

安装程序只说eap或wildfly,但我被迫使用as7,所以这对我不起作用......

是自己安装模块的情况,还是不起作用?

谢谢