有奖:语音产品征文挑战赛火热进行中> HOT

操作场景

说明:
数字身份管控平台 EIAM 由于产品策略的变更,已经暂停线上售卖。因此不再建议您使用该方式鉴权。
请前往EIAM产品介绍了解。
以下为历史文档仅供查阅。
腾讯云数字身份管控平台(EIAM)是腾讯云推出的集中式的数字身份管控服务,EIAM 可以为您集中管理用户账号、分配访问权限以及配置身份认证规则,避免因员工账号、授权分配不当导致的安全事故。 EIAM 和腾讯云 API 网关通过 OAuth2.0 协议深度整合,您可以便捷的将两者组合起来,使用 EIAM 维护用户池,并授权池中的用户访问您在 API 网关中托管的 API,以实现 RESTful Web API 的身份认证。
该任务将指导您在 EIAM 中创建用户池、将 API 网关与用户池集成,以及调用与用户池集成的 API。

前提条件

已开通 EIAM 服务

方案优势

与传统的 OAuth2.0 方式相比,API 网关 EIAM 认证主要有以下优势:
使用标准 OAuth2.0 协议。
EIAM 维护用户池,免自建认证服务器。
在认证能力基础上支持鉴权功能,保护 API 安全。
EIAM 内置多种 RBAC 模型,免自建鉴权服务器和授权模型。
可一键创建授权 API 和业务 API,轻配置。
内置缓存机制,更快的访问速度。




操作步骤

步骤1:创建认证方式为“EIAM 认证”的 API

1. 登录 API 网关控制台 ,在左侧导航栏单击服务
2. 在服务列表中,单击目标服务的服务名,查看该服务。
3. 在服务信息中,单击管理 API 标签页,单击 API 列表上的新建,即可开始创建 API。
4. 在 API 创建页,选择 API 鉴权类型为“EIAM 认证”,API 网关提供两种接入方式:
新建 EIAM 应用:新创建一个 EIAM 应用与当前 API 网关 API 建立绑定关系。
选择已有 EIAM 应用:选择之前已经创建好的 EIAM 应用与当前 API 网关的 API 建立绑定关系。
说明
您可以单击以下页签,查看两种接入方式的配置项。
新建 EIAM 应用
选择已有 EIAM 应用
参数
是否必填
说明
认证与鉴权
提供两种认证与鉴权方式:“只认证不鉴权”与“既认证又鉴权”:
认证:提供用户名密码,做身份认证;
鉴权:通过用户名判断是否有访问网关资源的权限。
EIAM 应用类型
提供两种应用类型:“非 Web 客户端”与“Web 客户端”:
非 Web 客户端:适用于非 Web 客户端发起的API调用,如服务器端、C/S架构系统客户端、App 客户端、小程序客户端,能支持以 POST 方式发起请求,需要自行请求授权 API 获取 Token,再使用 Token 请求业务 API;
Web 客户端:适用于 Web 客户端发起的 API 调用,如浏览器、客户端应用 Web Viewer 等 Web 客户端,能支持以 Web 重定向方式接收返回信息。
Token 有效时间
单个签发的 Token 有效期,超过有效期后,必须重新获取 Token。

参数
是否必填
说明
选择 EIAM 应用
从列表中选择一个已经创建好的 EIAM 应用建立绑定关系。
认证与鉴权
提供两种认证与鉴权方式:“只认证不鉴权”与“既认证又鉴权”:
认证:提供用户名密码,做身份认证。
鉴权:通过用户名判断是否有访问网关资源的权限。
EIAM 应用类型
提供两种应用类型:“非 Web 客户端”与“Web 客户端”:
非 Web 客户端:适用于非 Web 客户端发起的 API 调用,如服务器端、C/S架构系统客户端、App客户端、小程序客户端,能支持以 POST 方式发起请求,需要自行请求授权 API 获取Token,再使用 Token 请求业务 API;
Web 客户端:适用于Web客户端发起的API调用,如浏览器、客户端应用 Web Viewer 等 Web 客户端,能支持以 Web 重定向方式接收返回信息。
Token 有效时间
单个签发的 Token 有效期,超过有效期后,必须重新获取 Token。当接入方式为“选择已有 EIAM 应用”时,该配置项继承已选择的 EIAM 应用的配置,不支持自行配置。

非 Web 客户端架构图



Web 客户端架构图



说明
选择“只认证不鉴权”方式,请求授权 API 时,API 网关将校验传入的用户访问凭证,认证通过后,颁发 id_token。使用 id_token 请求业务 API 时,API 网关将检验 id_token 的合法性,校验通过后转发给业务后端。
选择“既认证又鉴权”方式,请求授权 API 时,API 网关将校验传入的用户访问凭证,认证通过后,颁发 id_token。使用 id_token 请求业务 API 时,API 网关将检验 id_token 的合法性,同时校验访问用户是否具有访问该 API 的权限,API 网关将只放行具有访问权限的用户请求。用户与资源的授权关系可参考 步骤3 进行配置。
5. 依次完成后续创建过程,单击完成,即可完成认证方式为“EIAM 认证”的 API 的创建。



步骤2:在 EIAM 中创建用户池和用户

1. 登录 EIAM 控制台 ,在左侧导航栏单击用户管理 > 组织机构管理
2. 选择合适的组织机构,单击新建用户
3. 填写表单,完成用户的创建。



步骤3:在 EIAM 中授权

1. 登录 EIAM 控制台 ,在左侧导航栏单击授权管理 > 资源级授权
2. 在下拉列表中选择第一步中创建或绑定的 EIAM 应用,选择用户授权 Tab 页,单击新建授权
3. 选择需要关联的网关资源(服务和 API),选择在第二步中创建的用户,将 API 网关资源对用户授权。



步骤4:使用用户信息调用 API 网关 API

使用 步骤2 中创建的用户的账号和密码,对 API 网关 API 发起访问。
说明
您可以单击以下页签,查看非 Web 客户端和 Web 客户端的调用方法。
非 Web 客户端
Web 客户端
1. 请求授权 API 获取 id token。 Query 请求参数 username:为 步骤2 中创建的用户账号。 Query 请求参数 password: 为 步骤2 中创建的用户密码。


2. 使用已获取的 Token 请求业务 API。 Header 参数 Authorization:格式为 Bear id_token="<获取的Token内容>"
curl http://service-xxxxxxxx-1234567890.gz.apigw.tencentcs.com/work -H'Authorization:Bearer id_token="eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1OTIyNzk3MTAsImZvbyI6ImJhciIsImlhdCI6MTU5MjI3OTQxMCwianRpIjoiZlBGYlFZRkR4REx3d0lXTFl0aHBBQSIsIm5iZiI6MTU5MjI3OTQxMCwid3VwIjo5MH0.0JQquNRVCQ8n9hPV-mJi6Mku_7G3T1jFp68Sk2AYBijpzzBMQ1KOcREyo9G6QOpvdctynGOAPkL3cwqeTzkFhWgGj633pu_MdLjlectEBMGyVQIv6pL8OBMCHMQzTUTpHWJ_NoUkLpRLKGqZFFcXW8q7v4KeCbf8xHUa9OCH5VF2JxYOnFWDVgucSqao06r0Jaq64LDwKIhLw77ujheKpcBjRrf1kqoIpqk2qhb8CzxM36g_DawMadzKmX49dT-k7auNnI2xUtu5CZdXZ3lSmLeicXfGjc66rrH_acqUqipZRKeeQ5F3Ma467jPQaTeOKiCMHwS2_yp-sXNU2GzxOA"'
对于未授权的用户: 鉴权验证,返回403,“Access not authorized”,表明用户没有通过鉴权。


对于完成授权的用户: 鉴权验证,返回 API 后端调用结果,user001即可进行 API 的调用。


1. 在浏览器输入 API 访问地址,可以看到弹出登录页面:



2. 在登录页面中输入步骤2设置的用户登录账号和密码,即可进行 API 的调用。

注意事项

EIAM 认证仅对开通了公网访问的 API 网关服务开放,若您的 API 网关服务访问方式为“内网 VPC ”,将无法使用 EIAM 认证。
如果在 EIAM 侧授权关系发生变更,需要重新请求授权 API 获取 Token。