微服务认证与授权:05 — 组件巡览 GitHub: https://github.com/geekchow/micro-service-auth第二部分的「每个组件一段话」导览 —— 在深入每篇专题文档之前用它来建立整体方位感。声明与决策的流转JWT with claimsvalidated token claimsallow or denyallowed requestre-validate claims and tokenKeycloakKongOPAbanking-api-serviceResponseKeycloakKeycloak是本项目的 IdP —— 它存储用户、校验凭据并签发 JWT。当alice或ops-admin登录时Keycloak对其进行认证并把诸如customer_id和account_ids之类的自定义声明嵌入令牌。下游的每个其他组件都依赖Keycloak产出可信的身份数据。深入内容见 06-keycloak-idp.md。KongKong是 PEP —— 它是系统的前门也是第一个看到每个 API 请求的组件。它用Keycloak对传入令牌做内省确认其有效且未过期然后把校验后的声明转发给OPA以获取策略决策。若OPA返回denyKong立即终止请求若OPA返回allowKong把请求转发给banking-api-service。深入内容见 07-kong.md。OPAOPA是 PDP —— 它评估策略规则并返回单一的allow或deny决策。它不认证用户、不签发令牌、也不存储身份它只回答传入请求所描述的操作在当前策略下是否被允许。在本项目中策略检查调用方的角色并且对alice而言还检查令牌声明是否与请求的account_id匹配。深入内容见 08-opa.md。banking-api-servicebanking-api-service是 资源服务器 —— 它拥有受保护的银行数据并暴露账户与交易端点。即便Kong与OPA已经批准了请求banking-api-service仍会再次校验 JWT 的签名、签发者与受众并在返回任何数据前再次检查账户级授权。这带来了纵深防御某个以某种方式绕过网关的请求若不通过服务端检查依然无法取出数据。深入内容见 09-banking-api-service.md。identity-bootstrap-serviceidentity-bootstrap-service是一个内部的演示初始化服务 —— 它存在的唯一目的是把演示用户初始化到Keycloak从而让 PoC 无需手动配置即可运行。它创建用户、设置密码、分配角色并填充其余技术栈所依赖的customer_id与account_ids声明。它被有意地不暴露到 Compose 网络之外。深入内容见 10-identity-bootstrap-service.md。← Prev: 04 — 本地演示指南 · Next: 06 — Keycloak / IdP → 返回专栏目录