访问授权
版本: 1.0 | 发布日期: 30/6/2023
# OAuth 2.0 协议
aiM18 上的Web服务访问授权是基于 OAuth 2.0 协议,详情请参见 http://oauth.net/2/.
# aiM18 中的授权应用程序
对于任何需要调用 aiM18 Web服务的第三方应用程序,该应用程序必须在 aiM18 的[授权应用列表]中注册:
Client ID 和 Client Secret 将在保存记录后生成。
# 授权模式
授权模式 | 第三方应用程序需满足的条件 | 用户授权 |
---|---|---|
授权码 | 需要Web服务器,如 JBoss 或 Tomcat | 需要对每个用户进行独立授权 |
隐式授权模式 | 不需要有Web服务器,如一些移动应用程序 | 需要对每个用户进行独立授权 |
资源所有者密码凭证授权 | 第三方应用程序需要知道 aiM18 用户的用户名和密码 | 无需用户操作 |
对于第一种和第二种授权模式,第三方应用程序不知道 aiM18 用户的用户名和密码,但需要对每个用户进行独立的身份验证(登录)。
# 模式 1: 授权码模式
授权码模式是 3 种授权模式中最完整、流程最严格的一种。其主要特点是使用第三方程序的后台服务器与 aiM18 验证服务器进行交互。
授权码模式的交互流程
# 授权 URL
GET http://[server]/jsf/rfws/oauth/entry
# 授权参数
名字 | 类型 | 说明 |
---|---|---|
response_type | String (Query) | **必填.**值必须为“code” |
client_id | String (Query) | **必填.**aiM18上注册的Client ID |
redirect_uri | String (Query) | **必填.**在 aiM18 上注册的授权回调地址 |
# 访问令牌 URL
GET http://[server]/jsf/rfws/oauth/token
# 访问令牌参数
名字 | 类型 | 说明 |
---|---|---|
grant_type | String (Query) | **必填.**值可以是 "authorization_code" 或 "refresh_token" |
client_id | String (Query) | **必填.**aiM18上注册的Client ID |
client_secret | String (Query) | **必填.**aiM18上注册的Client Secret |
code | String (Query) | 使用 授权 URL 从 aiM18 获取的授权码 |
redirect_uri | String (Query) | **必填.**在 aiM18 上注册的授权回调地址 |
refresh_token | String (Query) | 用于获取访问令牌的刷新令牌 |
# 模式 2: 隐式授权模式
不涉及第三方应用程序的后台服务器,访问令牌直接从用户浏览器请求到 aiM18 服务器。因此,返回的访问令牌对用户是可见的(直接显示在返回的 URL 中)。 请注意,在此授权模式中不返回刷新令牌。
隐式授权模式的交互流程
# 访问令牌 URL
GET http://[server]/jsf/rfws/oauth/entry
# 访问令牌参数
名字 | 类型 | 说明 |
---|---|---|
response_type | String (Query) | **必填.**值必须为"token" |
client_id | String (Query) | **必填.**aiM18上注册的Client ID |
redirect_uri | String (Query) | **必填.**在 aiM18 上注册的授权回调地址 |
# 模式 3: 资源所有者密码凭证授权
在资源所有者密码凭证授权模式中,aiM18 用户需要向第三方应用程序提供用户名和密码。应用程序使用这些信息直接向 aiM18 申请授权。
资源所有者密码凭证授权模式的交互流程
# 访问令牌 URL
GET http://[server]/jsf/rfws/oauth/token
# 访问令牌参数
名字 | 类型 | 说明 |
---|---|---|
grant_type | String (Query) | **必填.**值必须为 "password" |
client_id | String (Query) | **必填.**aiM18上注册的Client ID |
client_secret | String (Query) | **必填.**aiM18上注册的Client Secret |
username | String (Query) | **必填.**aiM18用户的用户名 |
password | String (Query) | **必填.**aiM18用户的密码。密码必须经过 SHA1 哈希处理 |
这种授权方式通常用于 API 集成。如需了解更多信息,请参阅 此示例.
# API 细粒度控制
aiM18 的数据由多个模块组成,每个模块提供创建、更新、读取、删除等基本 API 以及其他 API。您可以分别为基本 API 和其他 API 设置权限控制。详细控制原则请参阅程序。
# CURD 控制
开发者通过设置check_right参数决定是否检查模块权限,如果参数为空白,默认不检查权限。
模块的增删读写(CURD)接口默认检查相应请求用户的模块权限。
# 其他控制
如果你想要严格控制第三方应用程序可以访问的API(和数据),则不推荐使用此设置。
你可以为每个 API 分别设置访问控制规则。