【问题标题】:How to authenticate and authorize an Android application with Apache Shiro如何使用 Apache Shiro 对 Android 应用程序进行身份验证和授权
【发布时间】:2013-11-28 12:15:43
【问题描述】:
我开发了一个带有 Rest 完整服务的 Java Web 应用程序,并且我已经集成了 Apache Shiro 用于会话管理,它在 Web 上运行良好。现在我开发了一个 android 应用程序,我能够与其余的完整服务进行通信。当我使用我的 android 应用程序登录时,Apache Shiro 为我提供了一个会话,但之后对于任何其他的完整调用,我使 SecurityUtils.getSubject().isAuthenticated() 返回 false。因为我是新手,所以我不知道如何使用 Apache Shiro 验证 android 应用程序
【问题讨论】:
标签:
java
android
restful-authentication
shiro
【解决方案1】:
(我刚刚从另一篇关于该主题的帖子中复制了我的回复)
您可以从您的 REST 服务器发回一个令牌(会话 ID),在成功登录后发布。然后,您的 iOS/Android 应用程序将需要存储此信息,并将其与它发出的每个 REST 请求一起发送。以下是登录后 REST 响应的示例:
session-start-timestamp: 1394683755389,
session-timeout: 1800000,
session-id: "068C8E0E289788A7ABC5FE47B2CC0D28"
session-id 将由您的 REST 服务器维护,每次带有此 id 的新请求进入时,都会重置其 TTL。
在浏览器上,此 ID 会自动发送。对于您的情况,您可能希望在每个 HTTP 请求(这就是 REST 请求)中显式发送它 - 因为您没有将此令牌发送回 Shiro/REST 服务器,Shiro 认为您是一个新的未经身份验证的用户,因此, isAuthenticated 检查失败。
希望对你有帮助