Shiro/Stormpath 通过 REST

标签 shiro stormpath

我是 Shiro 的新手。我们正在尝试将 Shiro 与 Stormpath 一起使用。我一直在尝试剖析这些示例,以找出我想做的事情的解决方案,但到目前为止我还没有成功。

目前,我只是尝试创建 REST 服务来执行我想要的操作,稍后我将绑定(bind)一个真实的客户端。这是我想要实现的第一步:

我想让客户端访问我的服务器上的 REST 端点(登录)。我的服务器将进行身份验证,并将 JWT 返回给客户端。然后,该 JWT 将用于访问我的服务器上的安全端点。 (我编写了可以成功针对 Stormpath 进行身份验证的 Java 代码)。

我的问题是 JWT。我期望为我创建一个 JWT,或者至少可以轻松访问。我找不到办法得到一个。我已经看到了如何构建一个示例代码,但这似乎不是我期望获得一个的方式。

我已经运行了几个示例,但大多数似乎都处理 JSP 接口(interface),而且我似乎无法跳跃到我想要做的事情。

这种做法合理吗?任何指导表示赞赏。

编辑 1

我现在有一个 Java 客户端,可以使用 Shiro servlet 进行身份验证并检索 JWT。我将其作为 GlassFish 中的已部署应用程序(war)运行。我的下一步是使用该 JWT 对具有我的 REST 端点的不同应用程序进行身份验证。此 REST 应用程序不需要了解有关如何进行身份验证的任何信息 - 我只想在对给定 REST 端点的调用中传递 JWT 并使用 Shiro(通过注释)来控制对端点的访问(如果确实可能) )。我能找到的所有示例似乎都是“一体化”示例(将 JSP 与 Shiro/Stormpath 配置捆绑在一起等)。我正在尝试确定保护 REST 端点的最低工作配置,但很难确定我需要哪些配置。

编辑2

我使用 Stormpath-Shiro-Servlet(从 Shiro Servlet 示例中窃取)作为我的身份验证后端。使用我的 Java 客户端,我向 servlet 发送登录请求,并且确实返回了 JWT。但是,我无法成功使用 JWT 访问我的其他休息资源。我的其余调用导致此错误:

org.apache.shiro.authz.UnauthenticatedException:此主题是匿名的 - 它没有任何识别主体,并且授权操作需要身份来检查。在执行 org.apache.shiro.subject.Subject.login(AuthenticationToken) 成功登录后或当 SecurityManager 启用“记住我”功能时,Subject 实例将自动获取这些标识主体。当先前登录的主题注销并使其再次匿名时,也会发生此异常。由于由于上述任何一种情况,当前身份未知,因此授权被拒绝。

首先,我不明白为什么servlet“登录”实际上没有让我登录并给我非匿名原则?其次,我尝试在单独的客户端上执行所有操作,因此我无法访问Subject.login(这是正确的假设吗?)。

最佳答案

看看this example来自github/stormpath-shiro

JWT 创建由 Stormpath API 为您管理。如果您启动其中一个示例(上面的 servlet 或 spring-boot-web 示例),登录后您将拥有一个 JWT cookie。 this blog post中有背景信息.

我现在正在努力发布 strompath-shiro,但我想我应该在此处包含这些链接,以便您可以开始查找。

关于Shiro/Stormpath 通过 REST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39381112/

相关文章:

multithreading - Apache Shiro 集成和 Netty ExecutionHandler/OrderedMemoryAwareThreadPoolExecutor

grails - Grails 2.2.5,Shiro插件-非标准端口导致问题

javascript - 如何将导出的数据从 Postgres 分离到 CSV 格式的不同选项卡中?

java - Stormpath idSite 环境身份验证问题

java - 如何使用 "org.apache.shiro.UnavailableSecurityManagerException"修复 "SecurityUtils.getSubject()"错误

java - Shiro Authenticating Realm 应该是事务性的吗?

node.js - 调用和保存用户帐户自定义数据

node.js - 如何从express-stormpath库中自定义注销的redirectURL?

java - Apache 希罗 : Using isAuthenticated() || isRemembered() for an app without high security requirements