方案概述
MSE 网关可以为后端服务提供转发路由能力,在此基础上,一些敏感的后端服务需要特定认证授权的用户才能够访问。MSE 云原生网关致力于提供给云上用户体系化的安全解决方案,其中 JWT 认证能力是在 Json Web Token 这种结构化令牌的基础上实现了一套基于用户体系对用户的 API(服务)进行授权访问的机制,满足用户个性化安全设置的需求。本最佳实践方案就是介绍如何在 MSE 网关中集成 JWT 进行全局认证鉴权的配置。
方案示意图如下所示:
应用场景
借助 CADT 迅速的搭建 MSE 网关以及 SAE 实例,并部署测试应用(jwt-demo),在MSE 网关上配置对应的测试路由(/login、/biz),并配置 JWT 的全局认证鉴权功能,通过 postman 进行模拟测试。
主要步骤:
- 通过 CADT 快速完成环境部署
- 通过工具栏生成 JWT 所需的公钥、私钥
- SAE 上部署测试应用 jwt-demo
- MSE 上配置后端服务及路由,并配置 JWT 的全局认证鉴权
- 通过 postman 工具发起模拟测试请求,验证功能是否符合预期
- 测试结束释放环境
部署架构
架构说明:
本方案涉及的云产品包括一个 MSE 实例(前面挂公网 NLB)、一个私网 CLB、一个部署在 SAE 中的测试应用。
产品介绍
专有网络 VPC(Virtual Private Cloud): 是用户基于阿里云创建的自定义私有网络, 不同的专有网络之间二层逻辑隔离,用户可以在自己创建的专有网络内创建和管理云产品实例,比如 ECS、负载均衡、RDS 等。
传统型负载均衡 CLB(Classic Load Balancer): 支持 TCP、UDP、HTTP 和 HTTPS 协议,具备良好的四层处理能力,以及基础的七层处理能力。
云原生网关 MSE(Microservices Engine): MSE 云原生网关是兼容 K8s Ingress标准的下一代网关产品,将传统的流量网关和微服务网关功能合并,降低 50%资源开销,支持 ACK 容器服务和 Nacos 等多种服务发现方式,支持多种认证登录方式快速构建安全防线。
Serverless 应用引擎 SAE(Serverless App Engine): 是一款零代码改造、极简易用、自适应弹性的应用全托管平台。SAE 能够让您免运维 IaaS 和 K8s,秒级完成从源代码、代码包、Docker 镜像部署任意语言的在线应用(例如 Web、微服务、Job 任务)到 SAE,并自动伸缩实例按使用量计费,开箱即用日志、监控、负载均衡等配套能力。
云速搭 CADT(Cloud Architect Design Tools): 是一款为上云应用提供自助式云架构管理的产品,显著地降低应用云上管理的难度和时间成本。本产品提供丰富的预制应用架构模板,同时也支持自助拖拽方式定义应用云上架构;支持较多阿里云服务的配置和管理。用户可以方便的对云上架构方案的成本、部署、运维、回收进行全生命周期的管理。
前置条件
在进行本文操作之前,您需要完成以下准备工作:
1)注册阿里云账号,并完成实名认证。您可以登录阿里云控制台,并前往实名认证页面 (https://account.console.aliyun.com/v2/#/authc/home) 查看是否完成实名认证。
2)购买按量付费资源,阿里云账户余额需要大于 100 元。考虑到部署后每小时会产生费用,建议账号内余额或者代金券金额大于 200 元。您可以登录阿里云控制台,前往账户总览页面 (https://usercenter2.aliyun.com/home) 查看账户余额。
操作步骤
本实践可通过 CADT 官方模板快速拉起演示环境。
- CADT 基础环境搭建
工具生成公钥、私钥、JWKS
2.1. 生成公私钥
2.2. 生成 JWKS
SAE 部署应用
3.1. SAE 中通过应用环境变量设置公钥、私钥
3.2. SAE 中添加私网 CLB
MSE 网关配置及测试验证
4.1. 配置 jwt-demo 后端服务
4.2. 配置路由并测试验证
4.3. 配置全局认证鉴权并测试验证
- 其他说明
- 一键释放资源
最佳实践全部内容,请点击此处查看。对方案和产品感兴趣的朋友,可以加入钉钉群交流(群号:31852400)。
往期文章:
云原生最佳实践系列 1:借助云速搭 CADT 如何实现 Kafka 的性能压测?
云原生最佳实践系列 3:基于 SpringCloud 应用玩转 MSE
云原生最佳实践系列 4:基于 MSE 和 SAE 的微服务部署与压测云原生最佳实践系列 5:基于函数计算 FC 实现阿里云 Kafka 消息内容控制 MongoDB DML 操作
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。