jersey - Shiro 在 Karaf 中使用 SAML2 和 JAX-RS( Jersey )

标签 jersey shiro saml-2.0 apache-karaf

我正在创建一个在 Karaf 中作为 OSGi 容器运行的应用程序,并使用 OSGi HTTP 服务和 Jersey 来公开 REST API。我需要添加 SAML2 身份验证和基于权限授权。我想在 Shiro 中使用基于注释的方法,因为 spring 似乎正在远离 OSGi。我的问题:

  1. 带有 SAML jar 的 Shiro 适合 OSGi 环境吗?
  2. 我想使用 WSO2 作为身份提供商。 Shiro 和 WSO2 合作有什么注意事项吗?
  3. 对于使用注释,Shiro 文档表明我需要放置 AspectJ/Spring/Guice jar - 这在 OSGi 环境中仍然有效吗?我更喜欢 Guice 来满足我所有的 DI 需求。

如果能从 Shiro 用户那里获得一些见解,那就太好了。

更新

我正在使用这个项目:osgi-jax-rs-connector 。因此,我使用 Guice-Peaberry 来注册带有 @Path 或 @Provider 注释的接口(interface)的 OSGi 服务,并且该工具负责将它们转换为 REST 资源。 (类似于 pax-whiteboard?)。我计划以类似的方式将我的过滤器公开为 OSGi 服务,然后将它们与资源一起动态添加。

在之前的一个项目中,我对 OSGi 中的 AspectJ 感到头疼,我不得不从 Karaf 切换到普通的 Equinox,因为春分编织钩与 Karaf 不一致(除其他外,还可以看到来自 Aries 的堆栈跟踪)。那么,会做类似 shiro-jersey 的事情吗?会更好吗?

最佳答案

我确信这是可行的,尽管我已经看到一些限制/问题出现。 为了 1)还没有尝试过,尽管您需要确保告诉 pax-web 和 jetty 相关信息,但需要将其添加到 jetty.xml 中,甚至可能需要将片段包添加到 pax- web-jetty 以便可以加载所需的类。这很可能是您的第一个 classnotfound 问题。
2)不知道WSO2所以不知道
3)如果要使用注解,要小心。对于 Guice,您很可能需要使用 Peaberry,因为据我所知 Guice 还不是“OSGi-fied”。由于类加载器的限制,在 OSGi 环境中使用 AspectJ 并不是一个好主意。如果您有编译时编织,那应该没问题,但运行时编织将是一个挑战。

更新: 完全忘记了,但是有一个Pax Shiro项目可用,也许这可以是一个很好的起点,让您的设置处于正确的阵容中。

关于jersey - Shiro 在 Karaf 中使用 SAML2 和 JAX-RS( Jersey ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22411151/

相关文章:

security - 如何在 Shiro 中更新经过身份验证的主体的主体

java - 使用 Shiro 进行身份验证失败

single-sign-on - SSO : How to synchronize user accounts between service provider and Identity Provider?

java - 使用 web.xml 配置带有 Glassfish 4 的 JX-RS 会导致错误

Apache Shiro 用于保护 REST api

java - JAX-RS - 在 RESTful Web 服务中进行身份验证并获取用户数据

c# - 签名出现在 AttributeStatement 旁边时出现 SAML 2.0 错误 (.Net 4.5)

C#:压缩 XML 给出的结果与在 JavaScript 中执行的结果不同

java - 使用 Jersey 的 Amdatu 网站

java - 请确认您从正确的目录调用了 Maven