Microservices - Security Architecture
|Word Count:163|Reading Time:1mins
Option 1
Access Token 为透明令牌,API 网关需要去授权服务器集中校验并兑换成 JWT(自校验),然后再传递到后续的微服务
缺点:授权服务器压力比较大
Option 2
全链路无状态,API 网关与授权服务器约定一致的 secret,API 网关可以直接解密 JWT(对称/非对称)
缺点:缺少集中校验 Token 的环节,无法通过授权服务器及时吊销,只能等 Token 自然过期
Option 3
生产环境最为常用:原理与 Option 1 类似,只是增加了 Redis 缓存
Reference
Author: zhongmingmao
Copyright Notice: All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.
Cloud NativeArchitectureMicroservicesSpringSecurityMicroservices GovernanceOauth2Spring SecuritySpring Security OAuth2
Related Articles

2022-09-14
Oauth2 - Authorization Code Flow
Authorization ServerMaven12345678910111213141516171819<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.security.oauth</groupId> <artif...

2022-09-17
Oauth2 - JWT
Token Type JWT 资源服务器自解释和自校验,无需再跟授权服务器交互 结构 验签 issue + audience issue:令牌签发人audience:目标接收人 CodeAuthorization ServerMaven12345678910111213141516171819<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> ...

2022-09-13
Spring Security OAuth2 - Authorization Server
授权服务器 Introspection Endpoint:校验 Access Token 的合法性 Spring Security OAuth2 架构 Authorization flowAuthorization Code Flow Maven12345678<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId></dependency><dependency> <groupId>org.springframework.security.oauth</groupId> <artifactId>spring-security-oauth2</artifactId></dependency> API1234567@Data@Builder@FieldDefaults(level = ...
2022-09-20
Oauth2 - Github
Module 模块 描述 spring-security-oauth2-core OAuth2 授权框架 + OIDC 核心数据结构及接口 spring-security-oauth2-jose 支持 JOSE 协议组JWT: JSON Web TokenJWS: JSON Web SignatureJWE: JSON Web EncryptionJWK: JSON Web Key spring-security-oauth2-client 支持 OAuth2 和 OIDC 的客户端 Register application callback: /login/oauth2/code/github Config callback template: {baseUrl}/login/oauth2/code/{registrationId} 12345678910server: port: 9000spring: security: oauth2: client: ...

2022-09-12
Oauth2 - Overview
问题域 开放系统间授权 账号密码 不安全 万能钥匙 适用于公司内部 特殊令牌 核心挑战是令牌的生命周期管理 微服务安全 核心是 Token OAuth2最简向导 正式定义 Token 是核心,可类比为仆从钥匙(给应用授予有限的访问权限,让应用代表用户去访问用户数据) 优劣主要优势 OAuth2 使用代理授权的方式解决密码共享的反模式问题 主要劣势 OAuth2 不是认证协议,而是一个代理授权框架 OAuth2 提供一个宽泛的协议框架,具体安全场景需要定制 主要角色 主要术语 Token 类型 常见误区 典型 Flow https://www.rfc-editor.org/rfc/rfc6749 Authorization Code Flow 最复杂 + 最安全 + 应用最广泛 Implicit Grant Flow 减少了授权码兑换的过程(通过 Script 解析 Access Token),适用于单页应用(无后端) Resource Owner Password Credentials Flow 适用于公司内部应用等风险可控的场景 Client ...
2022-09-23
Apollo - Core Concept
Application 应用的唯一标识 classpath:/META-INF/app.properties -> appid Environment DEV / UAT / PRO /opt/settings/server.properties -> env Cluster - Instance Group - default 一个应用下不同实例的分组(是实例的逻辑分组,并非物理集群),不同的 Cluster,可以有不同的配置 –> 灰度单元组 /opt/settings/server.properties -> idc 默认 Cluster:default Namespace - Item Group - application 一个应用下不同配置的逻辑分组:数据库配置、服务框架配置等也可以关联公共的 Namespace – 可覆盖 默认 Namespace:application Type Note Private 只能被所属应...
Announcement
Things are always unexpected!








