Steeltoe Samples 安全认证实战:JWT Bearer 与 OpenID Connect 单点登录完整指南

Steeltoe Samples 安全认证实战:JWT Bearer 与 OpenID Connect 单点登录完整指南 Steeltoe Samples 安全认证实战JWT Bearer 与 OpenID Connect 单点登录完整指南【免费下载链接】SamplesSteeltoe samples and reference application collection项目地址: https://gitcode.com/gh_mirrors/samples40/SamplesSteeltoe Samples 是 .NET 开发者学习云原生安全的宝藏仓库其中Security 安全认证示例Security/README.md用三个真实可运行的项目手把手演示了JWT Bearer令牌认证、OpenID Connect 单点登录SSO以及客户端证书授权。无论你是第一次接触 .NET 安全认证的新手还是想在企业项目中落地单点登录的工程师这份指南都能帮你快速理解并跑通整套流程。Steeltoe Samples 安全示例包含哪些项目在仓库的Security/src目录下你可以找到四个安全认证示例应用项目角色核心功能AuthWeb客户端 Web 应用使用 OpenID Connect 完成单点登录携带令牌访问后端 APIAuthApi服务端 API 应用使用 JWT Bearer 校验访问令牌配合客户端证书做细粒度授权AuthConsole控制台客户端演示非 Web 场景下的认证调用RedisDataProtection数据保护示例用 Redis 共享加密会话数据其中AuthWeb 与 AuthApi 是学习 JWT 认证和 SSO 单点登录的核心组合它们通常成对部署、互相配合共同展示前端登录 后端鉴权的完整链路。单点登录SSO认证流程是如何运作的在动手前先理解这套安全认证示例的登录链路它会让你后续的配置事半功倍用户访问 AuthWeb点击「Log in」菜单请求被重定向到 UAA 身份服务器的登录页用户输入账号密码示例默认账号testuser/passwordUAA 验证通过后签发OpenID Connect 令牌浏览器带着令牌回到 AuthWebSteeltoe 自动完成令牌校验并把用户信息写入 Cookie 会话AuthWeb 在需要访问后端时把令牌作为JWT Bearer Token附加在请求头中发给 AuthApiAuthApi 校验 JWT 的签名、有效期和 scope满足策略才放行接口。这个一次登录、多处使用的模式就是典型的OpenID Connect 单点登录也是现代微服务架构中最流行的身份认证方案。AuthWeb 前端OpenID Connect 登录配置怎么做AuthWeb 的认证配置集中在 AuthWeb/Program.cs核心只有三行代码注册 Cookie OpenID Connect 认证方案并把默认质询方案指向 OIDC调用ConfigureOpenIdConnectForCloudFoundry()让 Steeltoe 自动从 Cloud Foundry 服务绑定中读取身份服务器地址通过RequireClaim(scope, ...)建立基于 scope 的授权策略。对应的令牌细节在 appsettings.json 中配置设置SaveTokens: true把令牌存进会话以便转发并通过Scope声明需要申请的权限范围如openid和sampleapi.read。AuthApi 服务端JWT Bearer 认证配置的最快方法服务端的 JWT 认证配置同样精简见 AuthApi/Program.csAddJwtBearer()注册 JWT Bearer 认证中间件ConfigureJwtBearerForCloudFoundry()让 Steeltoe 自动从服务绑定中获取签发者、密钥等信息在 appsettings.json 中通过ValidAudience指定合法的令牌受众为sampleapi。受保护的接口则只需一个特性标记例如 JwtAuthorizationController.cs 中的[Authorize(Policy Globals.RequiredJwtScope)]它要求令牌必须携带sampleapi.read这个 scope 才能访问。客户端证书授权超越 JWT 的第二种安全手段除了 JWT这套安全认证示例还展示了基于客户端证书的 mTLS 授权。在 CertificateAuthorizationController.cs 中四个接口分别演示了四种级别Anonymous完全匿名无需证书Authenticated只要有合法客户端证书即可SameOrg客户端与服务端必须在同一组织SameSpace客户端与服务端必须在同一空间。在 Cloud Foundry 上证书由平台自动签发OrgId 与 SpaceId 由部署位置决定在本地运行时Steeltoe 会自动生成测试证书。AuthWeb 侧则通过AddAppInstanceIdentityCertificate()把实例证书挂到 HttpClient 上见 CertificateAuthorizationApiClient.cs点击页面上的 SameSpace / SameOrg 菜单即可体验。本地快速运行步骤5 分钟跑通 JWT 认证示例无需 Cloud Foundry 环境也能本地体验完整的单点登录流程步骤如下准备环境安装 .NET 10 SDK并用 Docker 启动一个 UAA 身份服务器容器CommonTasks.md中有现成脚本启动后端在Security/src/AuthApi目录执行dotnet runAPI 默认监听https://localhost:7184启动前端在Security/src/AuthWeb目录执行dotnet runWeb 应用默认监听https://localhost:7072体验登录浏览器打开 AuthWeb 地址点击「Log in」跳转到 UAA 登录页输入testuser/password登录成功后会跳回首页并显示欢迎信息测试接口通过页面菜单的 JWT 项调用后端受保护接口验证 scope 校验用 SameSpace/SameOrg 菜单验证证书授权。小提示JWT 菜单项依赖当前用户的令牌若提示找不到令牌请检查SaveTokens是否已开启。部署到 Cloud Foundry 的配置清单如果你想把这套 JWT 认证示例部署到云端按以下清单核对即可安装 Single Sign-On for Tanzu 并创建服务计划用cf create-service p-identity your-plan sampleSSOService --wait创建 SSO 服务实例在服务计划中配置外部身份提供者OIDC Provider名称填steeltoe-uaa添加外部组映射scope→openid权限选择sampleapi.read依次cf push部署 AuthApi 和 AuthWeb仓库自带的 manifest.yml 会自动创建auth-server-sample与auth-client-web-sample两个应用并绑定服务。常见问题与排查技巧登录后跳回首页但 JWT 菜单报错多半是SaveTokens未开启或申请的 scope 不完整检查 appsettings.json 中的Scope列表是否包含sampleapi.read。证书菜单提示认证失败本地运行时请确认 OrgId 与 SpaceId 与 Program.cs 顶部常量一致部署到云端后平台会自动注入正确值。如何查看登录状态登录后点击页面右上角 Hello testuser! 即可查看当前账号信息需要退出 UAA 会话时访问本地http://localhost:8080的退出菜单即可。总结通过 Steeltoe Samples 的 Security 示例你可以一次性掌握 JWT Bearer 令牌认证、OpenID Connect 单点登录和客户端证书授权三大核心技能。这套示例代码量小、注释清晰、本地即可运行是入门 .NET 云原生安全的绝佳教材。建议按照本地体验 → 阅读源码 → 云端部署的顺序循序渐进很快你就能在自己的项目中实现企业级的单点登录与安全认证体系。【免费下载链接】SamplesSteeltoe samples and reference application collection项目地址: https://gitcode.com/gh_mirrors/samples40/Samples创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考