编写版本:v3.5.1
适用版本:v3.5.0+
IFORM登录服务实现原理
概述
本文档主要讲解用户登录和第三方集成商登录获取用户信息的过程。
IFORM用户登陆
获取登录状态码
简述:
- 登陆,传入用户名密码
请求URL:
- http://ip:port/iform/oauth2/v3/user/login/apply
- URL中的ip需要替换为自己网关ip
- URL中的port需要替换为自己网关端口
请求方式:
- POST
请求参数:
- Headers:
暂无
- Query:
暂无
- Body:
名称 | 类型 | 是否必须 | 默认值 | 备注 | 其他信息 |
---|---|---|---|---|---|
username | String | 是 | 用户账号 | ||
password | String | 是 | 用户密码 | ||
captcha | String | 否 | 验证码 | ||
requestId | String | 否 | 请求ID |
请求参数示例:
{
"username": "anke",
"password": "123456",# 跟实际需求是否加密
"captcha": "",
"requestId": ""
}
返回示例:
{
"state": 200,
"request": null,
"message": "",
"cause": "",
"variables": {},
"data": "616e7580f9fa11e906ee9dff8b7b5da8"
}
返回参数说明:
名称 | 类型 | 备注 |
---|---|---|
data | String | 登录状态 |
注意:用户在前端输入用户名和密码,再加密后,传入后端。若校验成功,就返回具有
三分钟
时限的登录状态码
。
获取授权凭证
传入已授权过的子平台的相应信息AppKey,例如IFORM平台的AppKey为iform。即使用
Appkey
和登录状态码
申请授权凭证
。
注意:
:接口请求时,两参数分别是client_id
和login_state
。
简述:
用户申请授权码
请求URL:
URL中的ip需要替换为自己网关ip
URL中的port需要替换为自己网关端口
请求方式:
- POST
请求参数:
Headers:
暂无Query:
暂无Body:
名称 | 类型 | 是否必须 | 默认值 | 备注 | 其他信息 |
---|---|---|---|---|---|
login_state | String | 是 | 使用用户登录接口获取的状态值 | ||
client_id | String | 是 | 应用接入凭证 | ||
state | String | 否 | 3d896n | 请求状态值,防篡改 |
请求参数示例:
{
"login_state":"b055cbf0f6bf11e9c2decb30b33a53a6",
"client_id":"iform"
}
返回示例:
{
"state": 200,
"request": null,
"message": "",
"cause": "",
"variables": {
"state": "3d896n"
},
"data": "cf5918e0f6bf11e9c2decb30b33a53a6"
}
返回参数说明:
名称 | 类型 | 备注 |
---|---|---|
data | String | 授权码 |
获取令牌
传入
授权凭证
、AppKey
、AppScret
以及grant_type
,获取access_token
和refresh_token
AppKey
和AppScret
等相应信息加密后存储在前端。有关授权机制grant_type
的讲解请看这里。
简述:
- 传入授权AppKey,申请access_token
请求URL:
- http://ip:port/iform/oauth2/v3/authentication/apply
- URL中的ip需要替换为自己网关ip
- URL中的port需要替换为自己网关端口
请求方式:
- POST
请求参数:
- Headers:
暂无
- Query:
暂无
- Body:
名称 | 类型 | 是否必须 | 默认值 | 备注 | 其他信息 |
---|---|---|---|---|---|
grant_type | String | 是 | 请求类型,可选值为:authorization_code/password_credentials/client_credentials/refresh_token | ||
authorize_code | String | 否 | 调用authorize获得的code值,grant_type为authorization_code时必填 | ||
client_id | String | 否 | 申请应用时分配的AppKey | ||
client_secret | String | 否 | 申请应用时分配的AppSecret | ||
refresh_token | String | 否 | 调用access_token获得的refresh_token值,grant_type为refresh_token时必填 | ||
username | String | 否 | 用户名 | ||
password | String | 否 | 密码,grant_type为password_credentials时必填 | ||
redirect_uri | String | 否 | 回调地址 |
请求参数示例:
示例1:
{
"client_id": "iform",
"client_secret": "58b65297-3467-0859-8337-8cbaf81ef68a",
"authorize_code": "6173f3c0f9fa11e906ee9dff8b7b5da8",
"grant_type": "authorization_code"
}
示例2:
{
"client_id": "iform",
"client_secret": "58b65297-3467-0859-8337-8cbaf81ef68a",
"grant_type": "client_credentials"
}
示例3:
{
"client_id": "iform",
"client_secret": "58b65297-3467-0859-8337-8cbaf81ef68a",
"username": "iform",
"password": "123456",
"grant_type": "password_credentials"
}
示例4:根据刷新token值请求新token
{
"refresh_token": "58b65297-3467-0859-8337-8cbaf81ef68a",
"grant_type": "refresh_token"
}
返回示例:
结果1:
{
"state": 200,
"request": null,
"message": "",
"cause": "",
"variables": {
"code": "086670360d004dd78b681d602e50741d",# code凭证
"redirect_uri": null
},
"data": {
"access_token": "61797200f9fa11e906ee9dff8b7b5da8",
"refresh_token": "61797201f9fa11e906ee9dff8b7b5da8",
"primary_refresh_token": null,
"uid": "626353848415420416",
"publisher": null,
"applicant": null,
"expires_in": 28800,
"remind_in": 259200
}
}
返回参数说明:
名称 | 类型 | 备注 |
---|---|---|
access_token | String | 系统令牌值,简称token |
refresh_token | String | 用于刷新请求新token的刷新令牌 |
primary_refresh_token | String | |
uid | String | 用户ID |
publisher | String | |
applicant | String | |
expires_in | Integer | token的生命周期,单位秒 |
remind_in | Integer | refresh_token的生命周期,单位秒 |
code | String | 第三方获取用户信息的凭证 |
redirect_uri | String | 回调地址 |
- 使用令牌获取相应权限的资源,前端显示相应的页面信息。
第三方集成商获取对应用户信息
IFORM平台目前不支持第三方平台获取IFORM用户全部信息,同时也无法获取用户权限调用资源,可获取部分信息用于第三方登录集成。
- 第三方平台信息校验
点击对应的图标,进行第三方平台信息校验,传入
平台标识
和回调地址
,经IFORM系统校验后会发放一个具有三分钟
时限的校验码
。
注意:
:平台标识
和回调地址
需要在IFORM系统【系统管理】中【第三方接入】中创建相应的第三方平台时填写(服务端人员提供)。
后续步骤与IFORM用户登录相同。
- 请求登录状态码
这里进入登录页面,用户输入用户名密码后,获取
登录状态码
。获得login_state后,前端重定向到指定回调地址。
注意:
:获取信息加密后传入IFORM系统,具体的接口信息和实现请看这里。
获取授权凭证
重定向成功后,第三方传入于IFORM系统中创建好的第三方平台的相应信息AppKey,使用
Appkey
和登录状态码
申请授权凭证
。获取令牌
传入
授权凭证
、AppKey
、AppScret
以及grant_type
,获取access_token
和refresh_token
获取用户的信息
调用相应接口获取IFORM用户用于第三方登录的信息。
最后编辑:hugh 更新时间:2024-11-25 19:17