了解 API 授权的使用场景。根据您的业务需求,开启 API 授权、配置授权规则,定义授权方接口,并将授权规则应用到 API。
API 授权功能允许业务在 MGS 上定义通用的 API 访问授权规则:
客户有分布式 session,登录后会产生会话 ID。授权过程如下:
sessionId: {username:A, age:18, ...}
,并且下发 sessionId 到客户端。{username:A, age:18,...}
返回给网关。{username:A, age:18,...}
添加在 Header 中,转发请求到后端的业务 Server。客户端基于 HMAC 的授权方案,授权过程如下:
token=hmac(username+password)
。{username:A, age:18,...}
给网关。{username:A, age:18,...}
添加在请求 Header 中,转发请求到后端的业务 Server。点击 网关管理 标签,在 API 授权 下方,点击 创建授权方 或点击已存在的授权规则记录列表中操作列中的 详情,进入授权规则配置页面:
身份来源:如果点击 添加来源字段,填写用于授权的请求参数,表明请求身份的信息,由以下字段组成:
header
或者 cookie
。注意:如果实际 API 请求时的身份来源字段缺失,授权验证无法通过。
如果后端系统提供的授权接口为 HTTP 类型,需要将授权 API 配置为 POST 方法。
在添加授权关系前,业务系统需要提前开发一个 Auth API
。当 API 需要验证授权关系时,会调用 Auth API
进行授权校验。Auth API
的定义(请求和响应)遵循以下的标准:
public class AuthRequest {
private Map<String,String> context;
}
public class AuthResponse {
private boolean success;
private Map<String,String> principal;
}
@PostMapping("/testAuth")
public AuthResponse testAuth(@RequestBody AuthRequest authRequest) {
String sid = authRequest.getContext().get("sid");
Map<String, String> principal = new HashMap<>();
principal.put("uid", sid + "_uid");
AuthResponse authResponse = new AuthResponse();
authResponse.setSuccess(true);
authResponse.setPrincipal(principal);
return authResponse;
}
说明:
当验证授权的响应中 success
字段值为 true
时,网关会根据缓存策略缓存 principal
信息,然后将 principal
信息放入这次请求的 header
中,透传到后端业务系统中。没有principal也需要传个空Map。
当验证授权的响应中 success
字段值为 false
时,网关会返回 2000
错误码,客户端需要根据 2000
做相应的操作,例如弹出登录框。
当授权规则配置后,可以在 API 配置页面中的 高级配置 > API 授权 中选择对应的规则,为该 API 启用授权功能。
注意:要使用 API 授权,确保在 网关管理 页面,API 授权 功能开启:
- 登录 mPaaS 控制台。在左侧导航栏,点击 移动网关。
- 点击 网关管理 标签,确保 API 授权 按钮开启。
该 API 在请求后端系统前,会进行授权验证。通过则接受请求,网关将请求路由到后端系统。否则,请求会被拒绝,调用方将收到授权失败的错误响应。
在文档使用中是否遇到以下问题
更多建议
匿名提交