云原生最佳实践系列 6:MSE 云原生网关使用 JWT 进行认证鉴权
01 方案概述
MSE 网关可以为后端服务提供转发路由能力,在此基础上,一些敏感的后端服务需要特定认证授权的用户才能够访问。MSE 云原生网关致力于提供给云上用户体系化的安全解决方案,其中 JWT 认证能力是在 Json Web Token 这种结构化令牌的基础上实现了一套基于用户体系对用户的 API(服务)进行授权访问的机制,满足用户个性化安全设置的需求。本最佳实践方案就是介绍如何在 MSE 网关中集成 JWT 进行全局认证鉴权的配置。
方案示意图如下所示:

02 应用场景
借助 CADT 迅速的搭建 MSE 网关以及 SAE 实例,并部署测试应用(jwt-demo),在MSE 网关上配置对应的测试路由(/login、/biz),并配置 JWT 的全局认证鉴权功能,通过 postman 进行模拟测试。
主要步骤:
1. 通过 CADT 快速完成环境部署
2. 通过工具栏生成 JWT 所需的公钥、私钥
3. SAE 上部署测试应用 jwt-demo
4. MSE 上配置后端服务及路由,并配置 JWT 的全局认证鉴权
5. 通过 postman 工具发起模拟测试请求,验证功能是否符合预期
6. 测试结束释放环境
03 部署架构

架构说明:
本方案涉及的云产品包括一个 MSE 实例(前面挂公网 NLB)、一个私网 CLB、一个部署在 SAE 中的测试应用。
04 产品介绍
专有网络 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):是一款为上云应用提供自助式云架构管理的产品,显著地降低应用云上管理的难度和时间成本。本产品提供丰富的预制应用架构模板,同时也支持自助拖拽方式定义应用云上架构;支持较多阿里云服务的配置和管理。用户可以方便的对云上架构方案的成本、部署、运维、回收进行全生命周期的管理。
05 前置条件
在进行本文操作之前,您需要完成以下准备工作:
1)注册阿里云账号,并完成实名认证。您可以登录阿里云控制台,并前往实名认证页面(https://account.console.aliyun.com/v2/#/authc/home)查看是否完成实名认证。
2)购买按量付费资源,阿里云账户余额需要大于 100 元。考虑到部署后每小时会产生费用,建议账号内余额或者代金券金额大于 200 元。您可以登录阿里云控制台,前往账户总览页面(https://usercenter2.aliyun.com/home)查看账户余额。
06 操作步骤
本实践可通过 CADT 官方模板快速拉起演示环境。
1. CADT 基础环境搭建
2. 工具生成公钥、私钥、JWKS
2.1. 生成公私钥
2.2. 生成 JWKS
3. SAE 部署应用
3.1. SAE 中通过应用环境变量设置公钥、私钥
3.2. SAE 中添加私网 CLB
4. MSE 网关配置及测试验证
4.1. 配置 jwt-demo 后端服务
4.2. 配置路由并测试验证
4.3. 配置全局认证鉴权并测试验证
5. 其他说明
6. 一键释放资源
本文为阿里云原创内容,未经允许不得转载。
云原生最佳实践系列 6:MSE 云原生网关使用 JWT 进行认证鉴权的更多相关文章
- “行业客户云原生最佳实践日” 亮相KubeCon上海
2018年11月13日至15日,由CNCF主办的KubeCon + CloudNativeCon将首次登陆中国上海,这是全球范围内规模最大的Kubernetes和云原生技术盛会. 唯一聚焦客户实践的分 ...
- 探索云数据库最佳实践 阿里云开发者大会数据库专场邀你一起Code up!
盛夏.魔都.科技 三者在一起有什么惊喜? 7月24日,阿里云峰会·上海——开发者大会将在上海世博中心盛大启程,与未来世界的开发者们分享数据库.云原生.开源大数据等领域的技术干货,共同探讨前沿科技趋势, ...
- nodejs 实践:express 最佳实践系列
nodejs 实践:express 最佳实践系列 nodejs 实践:express 最佳实践(一) 项目结构 nodejs 实践:express 最佳实践(二) 中间件 nodejs 实践:expr ...
- Spring Security 接口认证鉴权入门实践指南
目录 前言 SpringBoot 示例 SpringBoot pom.xml SpringBoot application.yml SpringBoot IndexController SpringB ...
- 基于华为云IOT及无线RFID技术的智慧仓储解决方案最佳实践系列一
[摘要]仓储管理存在四大细分场景:出入库管理.盘点.分拣和货物跟踪.本系列将介绍利用华为云IOT全栈云服务,端侧采用华为收发分离式RFID解决方案,打造端到端到IOT智慧仓储解决方案的最佳实践. 仓储 ...
- 基于AngularJS的前端云组件最佳实践
AngularJS是google设计和开发的一套前端开发框架,他能帮助开发人员更便捷地进行前端开发.AngularJS是为了克服HTML在构建应用上的不足而设计的,它非常全面且简单易学习,因此Angu ...
- Kubernetes最佳实践之腾讯云TKE 集群组建
作者陈鹏,腾讯工程师,负责腾讯云 TKE 的售中.售后的技术支持,根据客户需求输出合理技术方案与最佳实践,为客户业务保驾护航.使用 TKE 来组建 Kubernetes 集群时,会面对各种配置选项,本 ...
- Istio最佳实践系列:如何实现方法级调用跟踪?
赵化冰,腾讯云高级工程师,Istio Member,ServiceMesher 管理委员,Istio 项目贡献者,热衷于开源.网络和云计算.目前主要从事服务网格的开源和研发工作. 引言 TCM(Ten ...
- iOS应用开发最佳实践系列一:编写高质量的Objective-C代码
本文由海水的味道编译整理,转载请注明译者和出处,请勿用于商业用途! 点标记语法 属性和幂等方法(多次调用和一次调用返回的结果相同)使用点标记语法访问,其他的情况使用方括号标记语法. 良好的 ...
- 【WEB前端开发最佳实践系列】CSS篇
一.有效组织CSS代码 规划组织CSS代码:组织CSS代码文件,所有的CSS都可以分为2类,通用类和业务类.代码的组织应该把通用类和业务类的代码放在不同的目录中. 模块内部的另一样式规则:样式声明的顺 ...
随机推荐
- 百度文库内容复制 C# webbrowser+Nsoup
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- wire和reg型变量的组合使用
模型功能 实现寄存器之间的连线 实现寄存器的声明 建构时钟的时序系统 模型框图 `timescale 1ns / 1ps /* */ // ****************************** ...
- read IEEE standard for verilog(3)
read IEEE std for verilog 1.阅读准备 在阅读的第二部分读到了lexical conventions,这次计划读一节.也就是把lexical conventions读完. 2 ...
- 算法学习笔记【5】| ST表
ST表 Part 1:ST表解决的问题是什么 ST 表可以用来解决RMQ(区间最值问题)等可重复贡献的问题. ST表基于倍增的思想来实现. Part 2:ST表的实现 ST表通过 O(nlogn)& ...
- 2024最新AIGC系统ChatGPT网站源码,GPTs应用,Ai绘画网站源码
一.前言 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型+国内AI全模型.本期针对源码系统整体测试下来非常完美,那么 ...
- SQL 转置计算
转置即旋转数据表的横纵方向,常用来改变数据布局,以便用新的角度观察.有些转置算法比较简单,比如行转列.列转行.双向转置:有些算法变化较多,比如动态转置.转置时跨行计算.关联转置等.这些转置算法对日常工 ...
- Docker compose 部署 nginx+php
Docker compose 部署 nginx+php 拉取Docker镜像 docker pull nginx:1.21.6 docker pull php:7.4.28-fpm 创建docker- ...
- redis命令和lua实现分布式锁
Redis分布式锁关键 SETNX 语法: SETNX key value 如果key不存在,则存储(key:value)值,返回1 如果key已经不存在,则不执行操作,返回0 因为这个命令的性质,多 ...
- oracle SQL 进行时间冲突判断
oracle SQL 进行时间冲突判断 背景:写一个预约模块,主要的限制就是时间限制,有冲突的时间段就不能进行预约 设数据库中的时间为A开始,A结束 设要判断的时间为B开始,B结束 则判断有在B开始时 ...
- 容器环境自建数据库、中间件一键接入阿里云 Prometheus 监控
------------恢复内容开始------------ 阿里云Prometheus服务4月9日发布重大升级,支持容器环境下一键接入MySQL.Redis.MangoDB.ElasticSearc ...