B094-人力资源项目-微服务授权&Oauth2

这篇具有很好参考价值的文章主要介绍了B094-人力资源项目-微服务授权&Oauth2。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景

微服务架构下应用散步在不同的服务器上,不是一个tomcat ,不能再基于Session
不同的服务不同的功能,都要有权限控制,不能再基于Session用Security

微服务权限控制用Redis:
微服务用Redis做权限控制数据不好存
要查Redis,
权限变动时数据库与redis需要同步,redis不好改,如果失败后果严重

微服务权限控制用JWT的优势:
不用查数据库,Token校验时能用RSA公钥顺利解析就可放行
实时,数据如权限发生变化后重新登录时不用与别的服务同步,旧jwt过期后生成新JWT把权限存到载荷中就行了
安全

OAUTH2

主要做第三方授权,解决微服务不能再基于Session用Security的问题

总体流程

B094-人力资源项目-微服务授权&Oauth2,笔记总结,架构,Oauth2,分布式,微服务
微服务中有专门的服务做认证和生成令牌

网关校验Token是否是有效用户

资源服务中用Security做权限控制,资源服务会解析令牌,拿到用户的权限列表,然后赋值给Security,对于资源服务来说就是单体结构,

资源服务与资源服务之间也是双重校验 -> 检验token,校验权限

微信OpenId:微信号的加密字符串

Oauth2授权码模式
oauth2的三方授权流程图

B094-人力资源项目-微服务授权&Oauth2,笔记总结,架构,Oauth2,分布式,微服务
为什么给授权码不直接给令牌?为了控制访问权限

案例演示

1.用户登录,2.用户点击授权,3.拿到token令牌

代码讲解-整合oauth2+springsecurity+jwt
先创建一个用于认证的服务

类似原来的写法,能跳转登录界面和登录成功

见 my-hrm-itsource\hrm-security-parent\security-auth-server-2001
和 typora文档 1.1 创建一个用于认证的服务

变化点:
增加oauth2依赖包
security 主配置文件 WebSecurityConfig 配置认证管理器交给spring管理,授权模式为“password”时会用到,取代原来的两个自定义过滤器,不影响登录成功

增加AuthorizationServerConfig

AuthorizationServerConfig是用于oauth2整合security的配置类

根据之前案例回顾思路和流程:
B094-人力资源项目-微服务授权&Oauth2,笔记总结,架构,Oauth2,分布式,微服务
上述流程总结:
1.用户登录,2.用户点击授权,3.拿到token令牌
对于oauth2就两步,1.用户点击“授权”操作后得到授权码,2.根据授权码换token令牌

oauth2整合的核心配置文件深度剖析:
即理解AuthorizationServerConfig如何实现上述流程
见typora文档

模块总结

B094-人力资源项目-微服务授权&Oauth2,笔记总结,架构,Oauth2,分布式,微服务
tips:如何不涉及第三方授权也可以不用oauth2,只用SpringSecurity+JWT+RSA做微服务授权

认证服务专门用来生产令牌,只有在登录时进入该服务,其他资源服务集成Security解析令牌并设置到Security框架中

但是如果认证服务升级比如用到oauth2其他功能,其他资源服务不知道
–> 都做认证和授权,加入网关来统一负责认证

权限控制由授权注解完成,授权注解生效需要Security框架或Security的认证管理器中有权限列表信息

B094-人力资源项目-微服务授权&Oauth2,笔记总结,架构,Oauth2,分布式,微服务
主体思路
登录时进入认证服务,查数据库信息生成令牌
访问各资源前都要先进入网关,由网关解析令牌看是否合法,合法就放行并传送令牌到要转发的资源服务中
资源服务解析令牌,将权限列表设置到Security框架中,然后授权注解生效

认证服务整合zuul

资源服务都需要在网关中进行注册,注册之后前端能看到的地址只有网关一个

获取令牌

1.浏览器输入http://localhost:2020/servers/auth/oauth/authorize?client_id=webapp&response_type=code&redirect_uri=http://www.baidu.com会转发到http://192.168.43.82:2001/login.html进行登录
2.登录后再输入http://localhost:2020/servers/auth/oauth/authorize?client_id=webapp&response_type=code&redirect_uri=http://www.baidu.com还是要一直登录,(加了网关就会这样 服务端口不一样session不共享),

1.只能像以前先输入http://localhost:2001/oauth/authorize?client_id=webapp&response_type=code&redirect_uri=http://www.baidu.com,跳转登录完成登录,
2.再次输入http://localhost:2001/oauth/authorize?client_id=webapp&response_type=code&redirect_uri=http://www.baidu.com就会进入授权页面,点授权后会收到授权码
3.再通过http://localhost:2001/oauth/token?client_id=webapp&client_secret=secret&grant_type=authorization_code&code=iOEIFE&redirect_uri=http://www.baidu.com 获取令牌

由于上述第二步的问题造成授权码模式不好用所以换一种方式,如换为密码模式,直接postman输入http://localhost:2020/servers/auth/oauth/token?client_id=webapp&client_secret=secret&grant_type=password&redirect_uri=http://www.baidu.com&username=zs &password=123 获取令牌(不用再重复登录)

加入网关后的变化

1.不再直接访问认证资源服务拿令牌,改走网关转发认证资源服务拿令牌
2.访问资源服务先经过网关,校验令牌合法性(是否能正常解析)
3.资源服务接收和解析令牌,通过oauth2存到Security中,不用再重写usernamepassword和basic过滤器

代码详解

见typora文档 2.1 zuul整合aouth2 与 工程中
oauth2依赖包已整合内嵌了Security和JWT依赖

测试

1.通过oauth2的密码模式,来测试是否可以获取token令牌

2.通过网关访问资源服务
oauth2生成的令牌与手动生成的令牌不一样,会有一个令牌的类型,所以在请求头的Authorization的令牌值前要加上令牌类型如“bearer”
B094-人力资源项目-微服务授权&Oauth2,笔记总结,架构,Oauth2,分布式,微服务
3.通过网关访问资源服务后再用feign调用其他资源服务

这种情况下两个资源服务中的权限都要具备才能访问成功,并要自定义拦截器解决feign请求丢失请求头的问题

代码详解分别见typora文档2.2和resource-server-security-feign-common工程文章来源地址https://www.toymoban.com/news/detail-699470.html

到了这里,关于B094-人力资源项目-微服务授权&Oauth2的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【五一创作】系统集成项目管理工程师-【11 人力资源】

    持续更新。。。。。。。。。。。。。。。 人力资源管理过程【掌握】 1 、 编制项目人力资源管理计划 :确定与识别项目角色、分配项目职责和汇报关系,并记录下来形成书面文件,其中包括项目人员配备管理计划。 (考过 ) 2、 项目团队组建 :通过调配、招聘等方式得到

    2024年02月03日
    浏览(246)
  • 系统集成项目管理工程师(软考中级)—— 第十六章 项目人力资源管理 笔记分享

    现在分享一些笔记给大家,希望能够帮助大家并顺利通过软考。 幕布地址:第十六章 项目人力资源管理 - 幕布 1.编制项目人力资源计划(计划) 确定与识别项目中的角色、所需技能、分配项目职责和汇报关系,并记录下来形成书面文件,其中也包括项目人员配备管理计划

    2024年02月05日
    浏览(66)
  • 人力资源管理系统(大二数据库课设) spring boot,Mybatis+bootstap,ajax项目

    SpringBoot人力资源管理系统 数据库采用 sqlserver2019或mysql8.0 • 环境及技术说明:页面全部为html页面,交互由ajax与Bootstrap-table完成 目前项目已修改为mysql数据库,如果想要使用sqlserver数据库 只需要将com.xpu.hrms.data.source.config.DataBaseConfigure文件中注解 @ConfigurationProperties(prefix = \\\"my

    2024年02月09日
    浏览(58)
  • 百度“文心一言”首批生态合作伙伴公布,Moka接入打造人力资源数字化人AI服务

    近日,百度“文心一言” ( 英文名:ERNIE Bot ) 公布 首批生态合作伙伴,企业级HR SaaS服务商Moka 位列其中 , 将优先体验并接入“文心一言”,以此打造更创新、更智能的人力资源数字化服务。 “文心一言”是百度基于文心大模型技术推出的生成式对话产品。百度在人工智

    2024年02月15日
    浏览(61)
  • 人工智能与人力资源:未来人力资源管理的变革

    随着人工智能(AI)技术的不断发展和进步,人力资源(HR)管理领域也面临着巨大的变革。人工智能技术在人力资源管理中的应用不仅可以提高工作效率,还可以帮助人力资源专业人士更好地理解员工的需求,提高员工满意度,提高企业竞争力。在这篇文章中,我们将探讨人工智

    2024年02月20日
    浏览(58)
  • 人力资源三支柱是什么?人力资源管理如何运用HR三支柱模型

           随着人力资源管理变革的加速,目前人力资源管理的模式已经升级到了战略性管理阶段。其工作核心聚焦在企业组织变革和战略部署两个方面。人力资源管理的意义在于能够为企业创造多大价值,为客户、投资人和员工等利益相关者提供多大价值?因此,人力资源的

    2024年02月07日
    浏览(59)
  • 开源人力资源管理系统OrangeHRM

    什么是 OrangeHRM ? OrangeHRM 是一个全面的人力资源管理( HRM ) 系统,它包含任何企业所需的所有基本功能。该软件旨在支持任何规模的团队,包括初创企业、中小企业以及大型跨国组织。 你也可以去官方的演示站点进行体验 网址:https://opensource-demo.orangehrmlive.com/web/index.php/au

    2024年02月14日
    浏览(54)
  • 如何利用小程序改变人力资源行业

    随着移动互联网的普及和发展,小程序已经成为了人们生活中必不可少的一部分。小程序不仅提供了便捷的服务,还为各行各业提供了创新和发展的空间。在人力资源行业,利用小程序可以为企业和求职者提供更加高效和便捷的招聘和求职服务。下面,我将介绍如何利用小程

    2024年01月16日
    浏览(48)
  • 人力资源小程序的设计与开发步骤

    在当前信息化时代,小程序成为了各行各业提升用户体验和服务效率的重要渠道。人力资源部门也可以通过定制开发人力资源小程序来提升招聘、培训、员工福利等方面的工作效率。接下来,我们将介绍人力资源小程序定制系统开发的具体流程。 首先,我们需要搜索【乔拓云

    2024年02月11日
    浏览(40)
  • 人力资源小程序的设计方案与实现

    随着互联网的发展,人才招聘已经成为许多企业的一项重要任务。为了提高招聘效率和便利求职者,许多企业开始采用小程序作为招聘平台。本文将为大家介绍一个搭建本地人才招聘网小程序的实用指南。 首先,我们需要登录【乔拓云】制作平台,进入后台。在后台页面中,

    2024年02月10日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包