All Projects → Zealon159 → Easy Notes

Zealon159 / Easy Notes

Licence: mit
🍋 简笔记(easy notes)打造你的轻便私人笔记。接口涉及Spring Security、OAuth2、Jwt、MongoDB,客户端采用 Vue.js 、Ant Design

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Easy Notes

Spring Security Pac4j
pac4j security library for Spring Security: OAuth, CAS, SAML, OpenID Connect, LDAP, JWT...
Stars: ✭ 231 (+159.55%)
Mutual labels:  mongodb, spring-boot, jwt, spring-security
Xboot
基于Spring Boot 2.x的一站式前后端分离快速开发平台XBoot 微信小程序+Uniapp 前端:Vue+iView Admin 后端:Spring Boot 2.x/Spring Security/JWT/JPA+Mybatis-Plus/Redis/Elasticsearch/Activiti 分布式限流/同步锁/验证码/SnowFlake雪花算法ID 动态权限 数据权限 工作流 代码生成 定时任务 社交账号 短信登录 单点登录 OAuth2开放平台 客服机器人 数据大屏 暗黑模式
Stars: ✭ 3,432 (+3756.18%)
Mutual labels:  spring-boot, jwt, oauth2, spring-security
Oidc Workshop Spring Io 2019
Workshop at Spring I/O 2019 on "Securing Microservices with OpenID Connect and Spring Security 5.1"
Stars: ✭ 43 (-51.69%)
Mutual labels:  spring-boot, jwt, oauth2, spring-security
Sample Spring Oauth2 Microservices
some examples that show basic and more advanced implementations of oauth2 authorization mechanism in spring-cloud microservices environment
Stars: ✭ 109 (+22.47%)
Mutual labels:  spring-boot, jwt, oauth2, spring-security
Cerberus
A demonstration of a completely stateless and RESTful token-based authorization system using JSON Web Tokens (JWT) and Spring Security.
Stars: ✭ 482 (+441.57%)
Mutual labels:  spring-boot, jwt, spring-security
Spring Boot In Action
Spring Boot 系列实战合集
Stars: ✭ 4,153 (+4566.29%)
Mutual labels:  spring-boot, jwt, spring-security
Springboot Jwt Starter
A Spring Boot JWT starter kit for stateless and token-based authentication apps.
Stars: ✭ 538 (+504.49%)
Mutual labels:  spring-boot, jwt, spring-security
Microservices Event Sourcing
Microservices Event Sourcing 是一个微服务架构的在线购物网站,使用Spring Boot、Spring Cloud、Spring Reactor、OAuth2、CQRS 构建,实现了基于Event Sourcing的最终一致性,提供了构建端到端微服务的最佳实践
Stars: ✭ 657 (+638.2%)
Mutual labels:  mongodb, spring-boot, oauth2
Taroco
整合Nacos、Spring Cloud Alibaba,提供了一系列starter组件, 同时提供服务治理、服务监控、OAuth2权限认证,支持服务降级/熔断、服务权重,前端采用vue+elementUI+webpack,可以很好的解决转向Spring Cloud的一系列问题。
Stars: ✭ 545 (+512.36%)
Mutual labels:  spring-boot, oauth2, spring-security
Spring Boot React Oauth2 Social Login Demo
Spring Boot React OAuth2 Social Login with Google, Facebook, and Github
Stars: ✭ 676 (+659.55%)
Mutual labels:  spring-boot, oauth2, spring-security
Spring Boot Jwt
JWT auth service using Spring Boot, Spring Security and MySQL
Stars: ✭ 795 (+793.26%)
Mutual labels:  spring-boot, jwt, spring-security
Spring Boot Angular Template
Starter Template to create a OAuth2 secured dockerized Spring Boot 2 Application with Angular 8 Frontend
Stars: ✭ 48 (-46.07%)
Mutual labels:  spring-boot, oauth2, spring-security
His
HIS英文全称 hospital information system(医院信息系统http://59.110.234.89:9999/swagger-ui.html ),医疗信息就诊系统,系统主要功能按照数据流量、流向及处理过程分为临床诊疗、药品管理、财务管理、患者管理。诊疗活动由各工作站配合完成,并将临床信息进行整理、处理、汇总、统计、分析等。本系统包括以下工作站:门诊医生工作站、药房医生工作站、医技医生工作站、收费员工作站、对帐员工作站、管理员工作站。需求为东软提供的云医院。
Stars: ✭ 359 (+303.37%)
Mutual labels:  spring-boot, jwt, spring-security
Youlai Mall
youlai-mall 是基于Spring Boot 2.4、Spring Cloud 2020 & Alibaba、Vue、element-ui、uni-app快速构建的一套全栈开源商城平台,包括系统权限管理、微服务应用、微信小程序及APP应用
Stars: ✭ 331 (+271.91%)
Mutual labels:  spring-boot, jwt, oauth2
Ixortalk.aws.cognito.jwt.security.filter
Spring Boot security filter for decoding Cognito JWT IdTokens
Stars: ✭ 75 (-15.73%)
Mutual labels:  spring-boot, jwt, spring-security
Spring Boot Demo
spring boot demo 是一个Spring Boot、Spring Cloud的项目示例,根据市场主流的后端技术,共集成了30+个demo,未来将持续更新。该项目包含helloworld(快速入门)、web(ssh项目快速搭建)、aop(切面编程)、data-redis(redis缓存)、quartz(集群任务实现)、shiro(权限管理)、oauth2(四种认证模式)、shign(接口参数防篡改重放)、encoder(用户密码设计)、actuator(服务监控)、cloud-config(配置中心)、cloud-gateway(服务网关)等模块
Stars: ✭ 323 (+262.92%)
Mutual labels:  spring-boot, oauth2, spring-security
Springboot Starterkit
Starter Kit for Spring Boot based (REST APIs and WebMVC) micro services.
Stars: ✭ 596 (+569.66%)
Mutual labels:  mongodb, spring-boot, spring-security
Spring Boot Webflux Jjwt
Example Spring Boot and WebFlux (Reactive Web) with Spring Security and JWT for token Authentication and Authorization
Stars: ✭ 71 (-20.22%)
Mutual labels:  spring-boot, jwt, spring-security
Angular Spring Starter
Full stack starter kit featuring Angular 7, Spring boot and stateless JWT authentication.
Stars: ✭ 294 (+230.34%)
Mutual labels:  spring-boot, jwt, spring-security
Spring Webmvc Jwt Sample
Secures REST APIs with Spring Security and JWT Token based Authentication
Stars: ✭ 299 (+235.96%)
Mutual labels:  spring-boot, jwt, spring-security

简笔记 - API - 1.0

spring-boot mongodb jwt oauth2 license

项目介绍

简笔记(easy notes)打造你的轻便私人笔记。

基于 SpringBoot 生态开发的接口服务,涉及Spring Security、OAuth2、Jwt、MongoDB 等技术的应用。

客户端采用 Vue.js 、Ant Design 开发:点击进入仓库

演示

演示地址:http://notes.zealon.cn/

部分截图:

工程目录

采用传统的分层模型设计:

- src/main/java
  - cn.zealon.notes
    - common / 公共包
      - base / 抽象基类
      - config / 工程配置
      - exception / 自定义异常
      - result / 响应结果封装
      - utils / 工具类
    - controller / 控制器 
    - domain / 领域对象
    - repository / MongoDB存储
    - security / 安全模块
      - config / 配置
      - controller / 认证相关控制器
      - domain / 安全相关领取对象
      - filter / 自定义过滤器
      - jwt / JWT组件
      - service / 接口服务
    - service / 服务层
    - vo / 视图对象
    - security / 安全处理(shiro)
    - Application.java / 项目启动类
- src/main/resources
  - application.yml / 应用配置文件

核心功能

项目的笔记本、笔记等功能比较简单就不介绍了,重点说明一下 OAuth2.0 社交登录模块,代码全在项目的 cn.zealon.notes.security 包中。

OAuth2授权

⭐️ 关于 OAuth2 的知识点可参考官网介绍:https://tools.ietf.org/html/rfc6749

⭐️ 也可以看阮一峰老师的博客进行入门:https://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html

话不多说,先看一下OAuth2.0授权码模式的交互过程:

首先客户端访问社交登录平台(如:微信、Github、微博等),若为登录状态时将获取你的允许授权,同意后返回一个code码并跳转到客户端;这时候我们把授权码和秘钥在服务端去请求访问令牌,最后拿到访问令牌再请求社交平台的用户资源信息,处理登录返回给客户端自定义的Token,这里我们采用JWT(JSON Web Token)方式,产生并返回一个 Token,客户端将Token保存起来。

当客户端再次访问服务端接口,一般会将 Token 放入请求头中进行传递,如果是单体项目可以在过滤器中校验Token的有效性,如果是微服务则在网关中校验,如果校验成功,则将该请求转发到后端的服务中,在转发时会将 Token 解析出的用户信息也一并带过去,这样在后端的服务中就不用再解析一遍 Token 获取的用户信息,这个操作统一在网关进行的。

如果校验失败,那么就直接返回对应的结果给客户端,不会将请求进行转发。客户端接收到了401状态码则提示用户进行再次登录。

‼️ 这里有必要提示一下,其实在客户端拿到 code 之后,完全可以再前端通过秘钥请求到 Access Token,为什么还要再服务端去处理,是不是多次一举?

答案是一定要在服务端处理,因为秘钥暴露在客户端就不安全了,会被坏人恶意利用哦!

‼️ jwt生成令牌是不能修改的,如果用户修改了密码等信息,要等到Token过期才生效,所以尽量不要设置Token过长时间,可以通过定时刷新Token的方式来延长到期哦

OAuth2 回调处理的登录、注册、绑定功能

我们一个账户名下,可以同时绑定多个OAuth2授权,比如 Summer 这个账户名既绑定了QQ又绑定了微博,那么使用任意一个OAuth2登录成功后,都是这一个账户。关于OAuth2的回调处理这里也简单介绍一下。

对于社交登录服务来说,它本身只负责提供授权,不关心我们是绑定还是登录、注册,所以授权成功后的事件是登录、注册还是绑定需要在我们业务接口中处理,得知了这一点,就会少走一些弯路哈,话不多说直接上图:

整体流程主要处理3件事儿,登录、注册、绑定(过程中包括了一些必要的逻辑校验部分)。

获取社交用户信息

首先通过 Access Token 获取 OAuth2 用户信息作为切入点,之后就可以开展我们自己的业务处理了。

由于会接入多个社交平台,而且每家的社交平台的接口返回的Text都不一样,但是返回后我们处理结果是固定的,所以这里使用了 策略模式 来处理,提升可扩展性,同时避免了冗长的 if - else

业务处理

首先要判断当前是否处于登录状态,可以使用 ShiroSpring Security 等安全框架来实现,这里我们用的Spring Security 。剩下的就是具体的业务了:

  • 登录处理:直接返回JWT加密的Token给客户端。
  • 直接注册:注册、绑定后,再调用登录处理的逻辑,在客户端直接跳转到主页面,避免用户手动登录。
  • 手动注册:也就是图中的 提示处理 分支,因为被其它给用了,必须要用户自定义一个名字了,返回给客户端 OAuth2 信息,并给与友好提示,用户注册提交同时携带 OAuth2 信息和注册信息,处理注册和绑定。
  • 绑定处理:查询 OAuth2 用户名是否被绑定过,没绑定过直接绑定;已绑定要告诉客户端,然后提示已绑定什么的,告诉用户可以使用社交账户直接登录什么的,巴拉巴拉......

附录

附录1.在线UML编辑工具:https://app.diagrams.net/

附录2.OAuth2协议标准:https://tools.ietf.org/html/rfc6749

附录3.Github OAuth 应用:https://docs.github.com/en/developers/apps/authorizing-oauth-apps

附录4.JWT协议标准:https://tools.ietf.org/html/rfc7519 官网:https://jwt.io/

License

MIT

Copyright (c) 2021 光彩盛年

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].