登录验证
相关概念
应用 接入SSO的第三方系统 Oauth2.0 用户资源授权标准 auth_code SSO给予应用的授权码, 有效时间60s,只生效1次 access_code 通过授权码交换的SSO给与应用的接入码,有效期4小时 有效期内生效
登录验证流程
- 应用浏览器重定向到 SSO
- 验证通过后SSO浏览器重定向到应用携带auth_code
- 后台调用SSO接口使用auth_code 获取 access_code
- 后台调用SSO接口使用access_code 获取 用户信息
浏览器重定向到SSO (调用)
说明
当用户需要登录第三方系统(后文统称应用)时可以通过SSO系统进行用户身份验证,此过程需要通过用户浏览器跳转至SSO,因此第三系统需要设定合适的超链接,或者进行重定向
请求地址
http://authtest.hengchanglt.com/authorize
请求方式
GET(浏览器请求)
参数说明
参数名称 | 参数类型 | 是否必须 | 参数说明 |
---|---|---|---|
returnurl | string | 必须项 | 浏览器重定向地址(由于安全限制,会根据key校验url,请务必提前沟通) |
appkey | string | 必须项 | 应用经过认证的key |
state | string | 可选项 | 用于保持请求和回调的状态,授权后原样带回给应用。用于防止csrf攻击(跨站请求伪造攻击),建议使用 |
调用样例
浏览器访问 http://authtest.hengchanglt.com/authorize?appkey=testkey&returnurl=http://127.0.0.1:8080/login&state=teststate
验证通过,重定向到应用(接收)
SSO 验证通过后会通过浏览器重定向到应用
调用地址
浏览器重定向至returnurl并携带auth_code(授权码)和state returnurl?auth_code=xxxxx&state=xxxxx
eg. http://127.0.0.1:8080/login?auth_code=150120da286fcc2bb8331af40655eb70&state=teststate
后台调用接口获取 access_code
说明
第三方系统直接接入SSO。根据Oauth2.0标准 授权码模式, 通过浏览器重定向方式提供应用授权码, 然后应用使用授权码与SSO系统直接联系换取接入码
请求地址
http://authtest.hengchanglt.com/getaccesstoken
请求方式
POST(服务器直接请求)
参数说明
参数名称 | 参数类型 | 是否必须 | 参数说明 |
---|---|---|---|
appkey | string | 必须项 | 应用经过认证的key |
auth_code | string | 必须项 | url重定向携带的授权码 |
返回结果 (Json)
成功:
{
"code":200,
"errmsg":"successs",
"access_token":"test_access_token"
}
出错:
{
"code":400,
"errmsg":"auth_code is invaild or expired.",
"data":"test_auth_code"
}
调用样例
请求url:http://authtest.hengchanglt.com/getaccesstoken
请求data: {"appkey":"testkey", "auth_code":"test_auth——code"}
返回结果:{"code":200,"errmsg":"successs","access_token":"test_access_token"}
后台调用接口获取用户信息
说明
应用使用上一步获取的access_token, 与SSO直接连接请求登录的用户信息。
请求地址
http://authtest.hengchanglt.com/getuserinfo
请求方式
POST(服务器直接请求)
参数说明
参数名称 | 参数类型 | 是否必须 | 参数说明 |
---|---|---|---|
access_token | string | 必须项 | 应用上一步使用auth_code换取的接入码 |
返回结果(Json)
成功:
{
"username": "张三",
"usermail": "zhangsantest@credithc.com",
"usermobile": "13700000001", #手机
"department": "技术中心",
"ehrid": "1000000001",
"imageurl": "http://p.qlogo.cn/bizmail/6X90Q25vYMhwPb6LsWk1xAyzBAXqUicXXiaxw6ib9NU7aViaG3YFLu0ic4g/0" #企业微信头像url
}
出错
{
"code":400,
"errmsg":"sessionid is empty.", #报错信息
"data":"" #出错的数据
}
调用样例
请求url:http://authtest.hengchanglt.com/getuserinfo
请求data: {"access_token":"testaccess_token"}
返回结果: {
"username": "张三",
"usermail": "zhangsantest@credithc.com",
"usermobile": "13700000001",
"department": "技术中心",
"ehrid": "1000000001",
"imageurl": "http://p.qlogo.cn/bizmail/6X90Q25vYMhwPb6LsWk1xAyzBAXqUicXXiaxw6ib9NU7aViaG3YFLu0ic4g/0"
}