Apache Shiro Java认证指南.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Apache Shiro Java认证指南

认证是身份验证的过程,也就是试图验证一个用户的有效性。为此,用户本身就需要提供系统可识别和可信任的身份标识。这篇指南的目标在于引导如何在java中使用Shiro的认证机制。如果现在还没做好准备工作,那么可以先去了解“10分钟教会你Apache Shiro”来帮助你理解Shiro是如何工作的。须知术语Subject:Subject是应用程序中用户在安全领域特定用户的缩影。它可以是真实的用户、第三方进程、连接到应用的server、甚至是corn作业。换句话说,Subject是连接到应用程序的任何东西。Principals:一个Subject定义的属性。比如:first name, last name, social security number, username。Credentials:用来验证身份的数据。密码、Biometric data、x509 证书等。Realms:安全相关的Dao、数据访问对象、与后台安全数据源交互的组件。比如在LDAP中存储用户名与密码信息,那么就需要一个LDAP realm与LDAP交互。如何在Java中使用Shiro进行身份验证和其他安全框架一样,Shiro中Java身份认证过程也可以归结为三个步骤。步骤获取subject的权限(principals)与证书(credentials)。 提交这些权限与证书到身份认证系统。 允许访问,重新认证,或者中断访问。 下面是在Shiro中如何实现上述步骤的代码。步骤1:获取subject的权限(principals)与证书(credentials)//最常使用场景实例://字符类型用户名与密码。在系统特定方式下获取,比如HTTP请求,GUI等等。UsernamePasswordToken token = new UsernamePasswordToken( username, password );//内置的“Remember Me”是这样使用的:token.setRememberMe(true);在这种情况下,使用的是UsernamePasswordToken类,它是Shiro框架中最常用的认证token。UsernamePasswordToken用来将从Java应用程序通过某种方式获取到的用户名和密码绑定到一起。用户名和密码可能是通过web表单提交,包含在HTTP请求头中,抑或通过命令行方式提交,但是在Shiro中通过哪种方式获取根本不重要,因为UsernamePasswordToken是与协议无关的。在这个例子中,当用户返回时,让应用程序记住用户状态。所以当token被创建后,将内置的“Remember Me”激活,激活“Remember Me”是通过设置token的setRmemberMe()为true实现的。步骤2:提交这些权限与证书到身份认证系统现在已经在token中记录下了用户信息,并且为再次返回的用户开启了“Remember Me”服务。身份认证的下一步是将这个token提交到身份认证系统。这里的身份认证系统在Shiro中是与安全相关的Dao,也叫做realm。想了解realm更多的信息,请查阅Shiro Realm指南。在Shiro中尽最大可能让这个提交的过程快速、容易的完成。实现它仅仅需要一行Java代码!//在Shiro中,通常都希望使用当前正在执行的用户,也就是subject。Subject currentUser = SecurityUtils.getSubject();//认证用户是通过将包含用户名、密码信息的token当做参数传递给login方法。currentUser.login(token);首先我们需要获取到当前用户,也就是subject,subject是应用程序中用户在安全领域特定用户的缩影。它可以是真实的用户、第三方进程、连接到应用的server、甚至是corn作业。在Shiro中,通常都会为当前线程绑定一个subject。subject是Shiro的核心概念,其他类似的安全框架也是围绕subject展开的。在示例中将这个subject实例命名为currentUser。通过Shiro API的核心类SecurityUtils来获取当前subject,通过它的getSubject()方法获取当前正在执行的用户,而后获取到代表当前正在与系统交互用户的subject。示例中的currentUser是没有身份标识的匿名用户。现在已经得到一个用户实例,然后调用login()方法,将刚刚创建好的token提交即可进行身份认证。步骤3:允许访问,重新认证,或者中断访问仍然非常非常简洁,只有一句方法调用。如果login()方法正常执行,那么用户就成功登陆,并且与特定用户账户或身份标识相关联。这样用户就可以使用应用程序了,可以将自身的

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档