本文为您介绍如何在 IDaaS 中配置阿里云 MSE 微服务引擎,实现 MSE 网关认证鉴权,在 MSE 中指定地址需由用户进行身份认证后,才能访问。
为了便于配置,IDaaS 预集成了 MSE 应用模板。管理员只需在 IDaaS 中创建 MSE 应用,并依照 OIDC 协议在 MSE 中完成配置即可。
应用简介
微服务引擎MSE面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持Nacos/ZooKeeper/Eureka)、云原生网关(原生支持Ingress/Envoy)、微服务治理(原生支持Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。
操作步骤
1. 创建 MSE 应用
登录 IDaaS管理控制台。
前往 应用-添加应用-应用市场,搜索到【阿里云 - MSE】应用模板。点击 添加应用。
确认应用名称,即可完成添加,自动跳转到应用管理的【单点登录】配置页。
填写表单
表单参数:
【授权模式】保持不变,只勾选【授权码模式】即可。
注意不要勾选【PKCE】。
【登录 Redirect URI】固定为 MSE 网关访问地址 + /oauth2/callback。例如若 MSE 访问地址为 http://a.example.com,则该 URI 应为 http://a.example.com/oauth2/callback。该 URI 应该同样填写到 MSE 网关认证鉴权的【重定向 URL】字段中,两个字段值需保持一致。
【授权范围】可暂时选择【全员可访问】。若希望指定可访问应用的 IDaaS 账户,请参考应用授权进行配置。
点击保存,完成应用配置。
您还需要额外复制几个信息出来,在后续配置中填写到 MSE 中。
字段参数:
Issuer:从下方【应用配置信息】中获取。
client_id:从应用管理页面的【通用配置】标签获取。
client_secret:从应用管理页面的【通用配置】标签获取。
您已完成 IDaaS 侧配置,接下来可前往 MSE 控制台开启认证。
2. 在 MSE 中配置网关认证鉴权
在 MSE 侧的配置需分为如下 4 个步骤。配置中,由于存在缓存,部分配置修改后,可能需要等待 3~5 分钟后才会生效。
2.1 开通公网 NAT
为了实现网关认证,MSE 需要与 IDaaS 进行通信,所以需要保障您的 MSE 所在的 VPC 具备出方向公网访问能力。若不具备该能力,MSE 可能在发起认证请求时,默认采用系统中上一次的缓存记录,无法成功。
您可前往 阿里云专有网络公网 NAT 网关控制台 创建公网 NAT 网关,并确保出方向公网访问通顺。
2.2 前往网关管理
登录 阿里云 MSE 微服务引擎控制台。
在左侧导航栏中,前往【云原生网关】【网关列表】。
在您希望开启认证鉴权的网关上,点击网关名称,进入管理页面。若您尚未创建网关,也可以创建一个进行认证配置测试。
2.3 创建测试路由(可选)
为了便于测试,我们建议您先在 MSE 网关中添加一个测试路由,便于快速完整地体验网关认证能力。
若您已有路由,可跳过这一步,并在下一步骤中,将路由地址填写到黑名单中,以开启保护能力。
2.3.1. 配置 Mock 路由
配置过程请参考 MSE 文档:云原生网关进阶体验。
配置完成后,您在后续环节中即可选择通过 /mock 地址来测试网关认证配置。
2.3.2 配置本地 Host
出于安全考量,MSE 的认证流程中限制了使用 IP 作为回调地址的访问。
若您的 MSE 没有域名,在后续的配置中,您需要额外配置您的本地 Host,并在 MSE 和 IDaaS 的表单中填写映射的域名(以避免填写 IP)。
假设您的 MSE 网关公网入口地址为 47.96.xxx.xxx,您可以在您设备的本地 Host 文件中添加一行:
47.96.xxx.xxx a.example.com
通过 a.example.com 替代对 MSE 网关公网 IP 的访问。在 IDaaS 中的应用【登录 Redirect URI】应配置为http://a.example.com/oauth2/callback
,网关认证鉴权设置中的【重定向URL】也应作同样应用。
2.4 配置认证鉴权
接下来我们可开启 MSE 的认证鉴权机制。
在网关管理页的左侧导航栏中,前往【安全能力】选择【认证鉴权】。
点击创建鉴权,填写弹出的表单。
字段名称 | 填写说明 |
鉴权名称 | 自定义名称即可。 |
鉴权类型 | 请选择 OIDC 类型。这里的选项中会有 IDaaS,对应 IDaaS 旧版。若您是 IDaaS 新版客户,请选择 OIDC 类型。 |
Issuer | 从 IDaaS 应用管理中复制出来。 |
重定向URL | 若在上一步中配置了 Host,则可填写,http://a.example.com/oauth2/callback。或填写 MSE 网关的公网域名地址。 这一地址不能是 IP,只能是域名。 |
Client-ID | 从 IDaaS 应用管理中复制出来。 |
Client-Secret | 从 IDaaS 应用管理中复制出来。 |
Cookie-Domain | 若在上一步中配置了 Host,则可填写,a.example.com。或填写 MSE 网关的公网域名地址。 |
Scope | 固定为 openid 即可。 |
授权 | 为了测试,请先选择【黑名单模式】,意味着只有明确指定的 Path 才需进行认证。 点击【添加新的规则条件】,并指定访问 /mock 地址需要认证。 |
填写效果如下:
创建成功后,点击开启。
配置 oauth2-proxy 路由。在您开启网关认证鉴权后,MSE 会自动创建一个 OIDC 配套路由,以实现授权回调。
请前往左侧菜单中【路由配置】,检索到处于【未发布】状态的【oauth2-proxy】。
在该路由上点击【编辑】,直接点击【下一步】,点击【保存并上线】,即可完成路由的配置更新。
您已完成所有配置,可以尝试访问的认证效果了。
3. 尝试访问
1. 访问地址
在浏览器中打开 http://a.example.com/mock 地址或您在上述步骤中配置的被网关认证保护的地址。
MSE 会检测到该请求需要 IDaaS 认证,若 IDaaS 尚未登录,则会自动跳转到 IDaaS 登录页。
2. 进行认证
您可使用 IDaaS 中支持和配置的多种登录方式,进行登录,包括短信验证码、钉钉扫码、AD 身份登录等,同时管理员可以在 IDaaS 中开启多因素认证 MFA,以加强认证安全性。
3. 认证成功!
登录完成后,浏览器会回调到刚才尝试访问的地址中,展示对应结果,意味着认证成功。