01.背景介绍
通过腾讯云 API 网关,开发者可以将来自 Serverless 无服务器的云函数 SCF、CVM 上的 Web 服务、用户自身的 Web 服务进行统一封装并开放给最终用户。最终用户无论是移动客户端、Web 客户端、物联网或其他应用,都可以通过 API 网关调用 API 服务。为了确保 API 调用的安全性,API 网关目前支持免鉴权、应用认证、OAuth2.0 三种方式。对于免鉴权方式,由于用户无需鉴权即可通过API网关调用后台业务,安全级别较低;对于应用认证方式,如果用户数目变多,需要考虑应用的管理安全问题;对于 OAuth2.0 方式,需要开发者自建和维护认证服务器。
腾讯数字身份管控平台(EIAM)支持对用户身份的集中管理、用户认证、应用集成、SSO、授权管理、审计管理等能力,支持 SAML、CAS、JWT、OIDC、OAuth2.0 等多种协议,支持多种基于角色的访问控制(RBAC)模型。采用 EIAM 为API 网关提供认证和鉴权能力可以为 API 调用提供更为安全和简便的方式。
02. 能力优势
通过 EIAM 为 API 网关提供防护的能力,具有以下优势:
- 使用标准 OAuth2.0 协议;
- 可一键创建授权 API 和业务 API,轻配置;
- EIAM 维护用户目录,免自建认证服务器;
- 在认证能力基础上支持鉴权功能,保护 API 安全;
- EIAM 内置多种 RBAC 模型,免自建鉴权服务器和授权模型;
- 内置缓存机制,更快的访问速度;
03.功能亮点简析
1. API 网关新功能详解
- 新增鉴权类型
鉴权类型中新增 EIAM 认证类型,通过配置化组合满足不同的客户需求;
- 多种接入方式
支持自动新建 EIAM 应用、自动关联已建 EIAM 应用;
- 不同粒度的认证与鉴权
支持选择只认证不鉴权、既认证又鉴权;
- 多端 API 调用适配
支持适用于非 Web 客户端(如服务器端、APP 客户端、小程序客户端等)、Web 客户端(浏览器、web viewer 等)发起的API 调用;
2. EIAM 新功能详解
- 应用类型支持
支持创建 API 网关应用类型,支持 OAuth2 JWT 结合方式对 API 调用进行认证和鉴权支持;
- 资源级授权支持
支持按照组组织机构、用户组、用户进行 API 级的授权;
- 鉴权支持
OAuth2 输出增加 id_token,带有 scope,支持返回用户信息和当前用户可访问的 API 列表;
04.配置流程
通过 EIAM 为 API 网关提供防护能力包括 3 个步骤:
1. 创建 API 发布服务;
2. 对 API 进行授权;
3. 从客户端访问API;
从业务场景上,终端用户对于 API 调用的发起方可能为非 Web 客户端(如服务器端、C/S 架构系统客户端、App 客户端、小程序客户端)、Web 客户端(如浏览器、Web Viewer)。非Web 客户端能支持以 POST 方式发起请求,Web 客户端支持以 Web 重定向方式接收返回信息。下文以非 Web 客户端为例说明配置流程。
第一步:创建 API 发布服务
1. 进入 API 网关的控制台 --> 服务菜单 --> 管理 API Tab 页面
- API 网关控制台地址:https://console.cloud.tencent.com/apigateway
2. 点击新建 API 进入前端配置
- 鉴权类型选择 EIAM 认证;
- 接入方式选择新建 EIAM 应用,会在 EIAM 自动创建 API 网关应用;
- 既认证又鉴权;
- EIAM 应用类型选择非 Web 客户端;
3. 完成前端配置后,进入后端配置;
- 公网 URL/IP 的后端类型,填写应用域名、后端路径、请求方式选择 GET 等信息;
4.选择响应结果类型
第二步:对 API 进行授权(EIAM)
1. 进入 EIAM 的控制台 --> 资源级授权;
2. 选择用户授权 Tab 页,选择 API 网关应用;
3. 选择新增授权;
4. 选择用户 “user001” 和 “userName_11” 进行授权;
5. 授权完成后,可以在资源级授权页面看到授权结果
第三步:从客户端访问 API
采用 postman 的方式对非 Web 客户端对 API 的调用进行验证。1. 对于未完成授权的用户
- 获取 id token;
- 鉴权验证,返回结果 “Access not authorized”;
2.对于完成授权的用户
- 解析 id token 内容,可以查看对应用户身份为 user001;
- 鉴权验证,返回结果 “Work!!!”,即可以进行 API 的调用;
通过 3 步简单配置,即可快速完成 EIAM API 网关联合方案的配置,无需自建认证服务器、鉴权服务器,即可为您的业务 API 调用提供认证与鉴权能力。在未来,通过 EIAM 对多种授权模型的支持可以为 API 网关后防护的业务 API 提供更为细粒度的访问控制能力,让开发者聚焦关注自身业务开发。