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