当前位置: 首页 > 知识库问答 >
问题:

如何在REST上使用Shiro和Oath2对用户进行身份验证

慕容典
2023-03-14

我即将开始开发一个REST服务,安全性是这个项目的一个重要方面,但我找不到一些关于如何实现它的明确信息。我的服务一开始会被Android应用程序使用,但以后可能会被其他平台使用。控制用户访问非常关键,因此对REST服务的授权身份验证控制非常重要。

尽管我可以找到关于如何制作安全REST API的主题,比如这里,这里和这里的这个大的,但令我惊讶的是,所有这些主题都没有指向著名的标准、框架或经过时间测试的解决方案,而这通常是保护软件应用程序html" target="_blank">安全的“方法”,在那里我们尽可能避免“滚动您自己的安全解决方案”。

到目前为止,我认为OAUTH 2.0(甚至OAUTH 1.0)是最好的方法,它是一个广泛使用的公共协议,支持授权身份验证,我们可以控制密钥的生存期,甚至有一个特殊的刷新密钥,允许客户机不存储密码信息,以便在需要时获取新的密钥

我还认为ApacheShiro是java中安全性授权身份验证的最佳框架,所以当我找不到ShiroOAuth2.0之间的任何集成时,我感到非常意外……好吧,有一个已经有5年历史了,对我来说没有什么信任。

更奇怪的是,Apache Shiro PMC主席Les Hazlewood拥有(好吧,拥有,他刚刚卖给了Okta)Stormpath公司,这是一个为身份用户管理而生的公司,所以我希望他提供了一些OAuth2.0Shiro之间的简单集成,除非我猜这会过多地扰乱Stormpath业务计划(我不相信这一点,因为Apache基金会不允许这种行为)。

所以最后的问题是:

共有1个答案

尚河
2023-03-14

我知道布吉项目使用Shiro并且支持Oauth2。我没有用过,但你可以查一下。

 类似资料:
  • 我是Apache Shiro的新手,希望使用它的功能对我的RESTful web应用程序进行用户登录验证。我有一个允许用户登录的web表单。用户名和密码存储在MySQL数据库中。我有以下方法使用Jersey处理用户登录身份验证: 当我提交表单时,行导致错误。我想这是因为我还没有连接到我的数据库进行用户名和密码身份验证。但是我如何连接到我的后端数据库在Shiro中进行身份验证呢?我从Shiro的网站

  • null 我研究了OAuth2隐式授权,但它要求用户在成功验证后批准/拒绝应用程序。它在我的情况下不起作用,因为我同时拥有应用程序和API。 我查看了OAuth2密码授权,它并不完美,因为我需要公开client_id/client_secret。 我关注OAuth2的原因是因为该API最终将是公开的。 忘记OAuth2,在用户发布用户名/密码时手动生成access_token(在本例中,当API公

  • 我正在使用Jersey用Java编写一个RESTful应用程序,我需要对用户进行身份验证。我知道我可以使用注释@RolesAllowed来指定资源中的角色,但是我不明白用户是如何与特定角色相关联的。客户端以这种方式发送用户名和密码 假设某些方法只能由超级用户使用,而其他方法只能由任何用户使用,那么当用户名和密码由客户端发送时,我如何区分它们?

  • 问题内容: 一般而言,我在Java身份验证框架和身份验证工作流程方面经验不足(仅了解一些理论知识),因此出于教育目的,我试图为我的HTTP应用程序创建这种类型的身份验证: 客户将登录名和密码发布到。 Shiro通过给定的凭据登录用户。服务器将其返回给客户。 客户要求某种资源。 Shiro按给定登录主题。然后,服务器执行常规的获取工作流(使用Shiro管理方法级访问权限)。 基本上我有以下问题: 我

  • 我已经实现了Spring社会Spring安全,如Spring安全示例(以及Spring安全java配置)中所述。我当时报告了几个问题(请参阅 https://jira.springsource.org/browse/SEC-2204),所有这些问题都已解决,并且我的安全性工作正常。 但是,我想更改我的安全实现并使用RESTful身份验证。Spring oauth/oauth2(http://pro

  • 我们在应用程序中使用CAS(Central Authentication Service)进行身份验证。 我们有很多REST API,我们需要测试REST调用。我们正在计划建立一个测试套件来测试所有其余的API。所以,我们想到为您的套房使用“放心”。 问题是身份验证。由于我们已经有了CAS,对于每个调用,它会重定向到请求用户名和密码的登录页面。是否有一个直接通过用户名和密码在一个镜头,并得到身份验