diff --git a/README.md b/README.md index 4543efabb4f49b6c7e78cae0f8574fa01dd3c795..02c2f4dc8a45362e22d44424324e98d850b5c3a6 100644 --- a/README.md +++ b/README.md @@ -194,16 +194,16 @@ #### JWT -1. [JWT 优缺点分析以及常见问题解决方案](docs/system-design/authority-certification/JWT-advantages-and-disadvantages.md) +1. [JWT 优缺点分析以及常见问题解决方案](docs/system-design/authority-certification/JWT优缺点分析以及常见问题解决方案.md) 2. [适合初学者入门 Spring Security With JWT 的 Demo](https://github.com/Snailclimb/spring-security-jwt-guide) #### SSO(单点登录) -SSO(Single Sign On)即单点登录说的是用户登陆多个子系统的其中一个就有权访问与其相关的其他系统。举个例子我们在登陆了京东金融之后,我们同时也成功登陆京东的京东超市、京东家电等子系统。相关阅读:**[SSO 单点登录看这篇就够了!](docs/system-design/authority-certification/sso.md)** +**SSO(Single Sign On)** 即单点登录说的是用户登陆多个子系统的其中一个就有权访问与其相关的其他系统。举个例子我们在登陆了京东金融之后,我们同时也成功登陆京东的京东超市、京东家电等子系统。相关阅读:**[SSO 单点登录看这篇就够了!](docs/system-design/authority-certification/SSO单点登录看这一篇就够了.md)** ### 分布式 -[分布式相关概念入门](docs/system-design/website-architecture/分布式.md) +[分布式相关概念入门](docs/system-design/distributed-system/分布式.md) #### 搜索引擎 @@ -238,6 +238,7 @@ SSO(Single Sign On)即单点登录说的是用户登陆多个子系统的其中 ### 微服务 1. [ 大白话入门 Spring Cloud](docs/system-design/micro-service/spring-cloud.md) +2. [微服务/分布式大厂真实面试问题解答](https://xiaozhuanlan.com/topic/2895047136) ### 高并发 @@ -271,6 +272,8 @@ SSO(Single Sign On)即单点登录说的是用户登陆多个子系统的其中 CAP 也就是 Consistency(一致性)、Availability(可用性)、Partition Tolerance(分区容错性) 这三个单词首字母组合。 + + #### BASE理论 **BASE** 是 **Basically Available(基本可用)** 、**Soft-state(软状态)** 和 **Eventually Consistent(最终一致性)** 三个短语的缩写。BASE理论是对CAP中一致性和可用性权衡的结果,其来源于对大规模互联网系统分布式实践的总结,是基于CAP定理逐步演化而来的,它大大降低了我们对系统的要求。 diff --git a/docs/system-design/authority-certification/JWT-advantages-and-disadvantages.md "b/docs/system-design/authority-certification/JWT\344\274\230\347\274\272\347\202\271\345\210\206\346\236\220\344\273\245\345\217\212\345\270\270\350\247\201\351\227\256\351\242\230\350\247\243\345\206\263\346\226\271\346\241\210.md" similarity index 100% rename from docs/system-design/authority-certification/JWT-advantages-and-disadvantages.md rename to "docs/system-design/authority-certification/JWT\344\274\230\347\274\272\347\202\271\345\210\206\346\236\220\344\273\245\345\217\212\345\270\270\350\247\201\351\227\256\351\242\230\350\247\243\345\206\263\346\226\271\346\241\210.md" diff --git a/docs/system-design/authority-certification/sso.md "b/docs/system-design/authority-certification/SSO\345\215\225\347\202\271\347\231\273\345\275\225\347\234\213\350\277\231\344\270\200\347\257\207\345\260\261\345\244\237\344\272\206.md" similarity index 100% rename from docs/system-design/authority-certification/sso.md rename to "docs/system-design/authority-certification/SSO\345\215\225\347\202\271\347\231\273\345\275\225\347\234\213\350\277\231\344\270\200\347\257\207\345\260\261\345\244\237\344\272\206.md" diff --git a/docs/system-design/authority-certification/basis-of-authority-certification.md b/docs/system-design/authority-certification/basis-of-authority-certification.md index 8e1d9bd756618b6c6f68f477f0234ad0f28930d1..86352a50d3f34f3b164204828be819de5dde2e89 100644 --- a/docs/system-design/authority-certification/basis-of-authority-certification.md +++ b/docs/system-design/authority-certification/basis-of-authority-certification.md @@ -6,11 +6,11 @@ **认证 (Authentication):** 你是谁。 -![](../pictures/authentication.png) +![](./images/basis-of-authority-certification/authentication.png) **授权 (Authorization):** 你有权限干什么。 -![](../pictures/authorization.png) +![](./images/basis-of-authority-certification/authorization.png) 稍微正式点(啰嗦点)的说法就是: @@ -21,7 +21,7 @@ ## 2. 什么是Cookie ? Cookie的作用是什么?如何在服务端使用 Cookie ? -![](../pictures/cookie-sessionId.png) +![](./images/basis-of-authority-certification/cookie-sessionId.png) ### 2.1 什么是Cookie ? Cookie的作用是什么? @@ -90,7 +90,7 @@ public String readAllCookies(HttpServletRequest request) { 很多时候我们都是通过 SessionID 来实现特定的用户,SessionID 一般会选择存放在 Redis 中。举个例子:用户成功登陆系统,然后返回给客户端具有 SessionID 的 Cookie,当用户向后端发起请求的时候会把 SessionID 带上,这样后端就知道你的身份状态了。关于这种认证方式更详细的过程如下: -![Session Based Authentication flow](../pictures/Session-Based-Authentication-flow.png) +![Session Based Authentication flow](./images/basis-of-authority-certification/Session-Based-Authentication-flow.png) 1. 用户向服务器发送用户名和密码用于登陆系统。 2. 服务器验证通过后,服务器为用户创建一个 Session,并将 Session信息存储 起来。 @@ -105,7 +105,7 @@ public String readAllCookies(HttpServletRequest request) { 花了个图简单总结了一下Session认证涉及的一些东西。 - + 另外,Spring Session提供了一种跨多个应用程序或实例管理用户会话信息的机制。如果想详细了解可以查看下面几篇很不错的文章: @@ -143,9 +143,7 @@ public String readAllCookies(HttpServletRequest request) { XSS中攻击者会用各种方式将恶意代码注入到其他用户的页面中。就可以通过脚本盗用信息比如cookie。 -推荐阅读: - -1. [如何防止CSRF攻击?—美团技术团队](https://tech.meituan.com/2018/10/11/fe-security-csrf.html) +推荐阅读:[如何防止CSRF攻击?—美团技术团队](https://tech.meituan.com/2018/10/11/fe-security-csrf.html) ## 6. 什么是 Token?什么是 JWT?如何基于Token进行身份验证? @@ -167,7 +165,7 @@ JWT 由 3 部分构成: 在基于 Token 进行身份验证的的应用程序中,服务器通过`Payload`、`Header`和一个密钥(`secret`)创建令牌(`Token`)并将 `Token` 发送给客户端,客户端将 `Token` 保存在 Cookie 或者 localStorage 里面,以后客户端发出的所有请求都会携带这个令牌。你可以把它放在 Cookie 里面自动发送,但是这样不能跨域,所以更好的做法是放在 HTTP Header 的 Authorization字段中:` Authorization: Bearer Token`。 -![Token Based Authentication flow](../pictures/Token-Based-Authentication.png) +![Token Based Authentication flow](./images/basis-of-authority-certification/Token-Based-Authentication.png) 1. 用户向服务器发送用户名和密码用于登陆系统。 2. 身份验证服务响应并返回了签名的 JWT,上面包含了用户是谁的内容。 @@ -194,7 +192,7 @@ OAuth 2.0 比较常用的场景就是第三方登录,当你的网站接入了 微信支付账户相关参数: - + **推荐阅读:** diff --git a/docs/system-design/pictures/Session-Based-Authentication-flow.png b/docs/system-design/authority-certification/images/basis-of-authority-certification/Session-Based-Authentication-flow.png similarity index 100% rename from docs/system-design/pictures/Session-Based-Authentication-flow.png rename to docs/system-design/authority-certification/images/basis-of-authority-certification/Session-Based-Authentication-flow.png diff --git a/docs/system-design/pictures/Token-Based-Authentication.png b/docs/system-design/authority-certification/images/basis-of-authority-certification/Token-Based-Authentication.png similarity index 100% rename from docs/system-design/pictures/Token-Based-Authentication.png rename to docs/system-design/authority-certification/images/basis-of-authority-certification/Token-Based-Authentication.png diff --git a/docs/system-design/pictures/authentication.png b/docs/system-design/authority-certification/images/basis-of-authority-certification/authentication.png similarity index 100% rename from docs/system-design/pictures/authentication.png rename to docs/system-design/authority-certification/images/basis-of-authority-certification/authentication.png diff --git a/docs/system-design/pictures/authorization.png b/docs/system-design/authority-certification/images/basis-of-authority-certification/authorization.png similarity index 100% rename from docs/system-design/pictures/authorization.png rename to docs/system-design/authority-certification/images/basis-of-authority-certification/authorization.png diff --git a/docs/system-design/pictures/cookie-sessionId.png b/docs/system-design/authority-certification/images/basis-of-authority-certification/cookie-sessionId.png similarity index 100% rename from docs/system-design/pictures/cookie-sessionId.png rename to docs/system-design/authority-certification/images/basis-of-authority-certification/cookie-sessionId.png diff --git a/docs/system-design/pictures/session-cookie-intro.png b/docs/system-design/authority-certification/images/basis-of-authority-certification/session-cookie-intro.png similarity index 100% rename from docs/system-design/pictures/session-cookie-intro.png rename to docs/system-design/authority-certification/images/basis-of-authority-certification/session-cookie-intro.png diff --git "a/docs/system-design/pictures/\345\276\256\344\277\241\346\224\257\344\273\230-fnglfdlgdfj.png" "b/docs/system-design/authority-certification/images/basis-of-authority-certification/\345\276\256\344\277\241\346\224\257\344\273\230-fnglfdlgdfj.png" similarity index 100% rename from "docs/system-design/pictures/\345\276\256\344\277\241\346\224\257\344\273\230-fnglfdlgdfj.png" rename to "docs/system-design/authority-certification/images/basis-of-authority-certification/\345\276\256\344\277\241\346\224\257\344\273\230-fnglfdlgdfj.png" diff --git "a/docs/system-design/website-architecture/\345\210\206\345\270\203\345\274\217.md" "b/docs/system-design/distributed-system/\345\210\206\345\270\203\345\274\217.md" similarity index 100% rename from "docs/system-design/website-architecture/\345\210\206\345\270\203\345\274\217.md" rename to "docs/system-design/distributed-system/\345\210\206\345\270\203\345\274\217.md"