域名说明

https://sec-sso.apps.paas.se-unicloud.com

准备工作

网站应用用户登录是基于OAuth2.0协议标准构建的OAuth2.0授权登录系统。 在进行OAuth2.0授权登录接入之前,您需要在平台上已创建了一个应用,详情查看开发前必读

授权流程说明

OAuth2.0授权登录让用户使用星云智汇安全登录第三方应用或网站,在用户订阅应用且被审核通过后即认为授权。 用户登录星云智汇平台,通过星云智汇OAuth2.0的进入第三方应用后,第三方可以获取到用户的接口调用凭证(access_token),通过access_token可以实现获取用户基本信息。 适用于拥有server端的应用授权。该模式整体流程为:

  1. 第三方发起星云智汇授权登录请求,星云智汇判断用户已授权第三方应用后,星云智汇会重定向到第三方网站,并且带上授权临时票据code参数;
  2. 通过code参数加上AppID和AppSecret等,通过API换取用户access_token;
  3. 通过access_token进行接口调用,获取用户基本信息。

第一步:获取CODE

第三方使用网站应用授权登录前请注意已获取AppID和AppSecret,该链接需在浏览器中访问

{domain}/auth/realms/SE-UNICLOUD/protocol/openid-connect/auth?response_type=code&client_id={appid}&redirect_uri={redirect_uri}&state={state}&scope=userinfo

请求参数说明

参数 是否必须 说明
appid 应用唯一标识
redirect_uri 请使用urlEncode对链接进行处理
response_type 填code
state 用于保持请求和回调的状态,授权请求后原样带回给第三方。该参数可用于防止csrf攻击(跨站请求伪造攻击),建议第三方带上该参数,可设置为简单的随机数加session进行校验
scope 填userinfo

返回说明

确认用户授权后,将会重定向到redirect_uri的网址上,并且带上code和state参数

第二步:获取用户信息(20221116更新)

https://open.apps.paas.se-unicloud.com/iot-open-manager/open/getLoginUserData
请求方式
请求以GET形式,认证采用bearer token。token 为应用的access_token。
注意:此接口不再用basic auth的方式。

应用的access_token获取请参考文档

请求参数说明
参数 是否必须 说明
code 填写第一步获取的code参数
redirectUri 填写第一步的redirect_uri,不需要encode
返回说明
{
    "code": 1,
    "message": "success",
    "data": {
        "sub": "f:809dc164-64d0-450c-b719-549f362ffe9a:xxxxx@youke",
        "preferred_username": "admin@youke",
        "openId": "xxxxx",
        "nickName": "小强"
    }
}
返回参数说明
参数 说明
preferred_username 用户唯一登录账号
sub 用户在SSO下的唯一ID
nickName 用户的昵称(有可能为空)
openId 用户的唯一ID

第二步:获取用户access_token(已废弃)

该接口与废弃的获取用户信息接口进行了合并,已对接使用的应用可继续使用,不受影响,建议使用最新接口。

通过code获取用户access_token,code仅可使用一次,再次调用无效。

{domain}/auth/realms/SE-UNICLOUD/protocol/openid-connect/token

Authorization: 采用basic auth。 
username和password分别为AppID和AppSecret
请求方式以及参数
请求方式为:POST请求,采用form形式提交
请求参数说明
参数 是否必须 说明
code 填写第一步获取的code参数
grant_type 填authorization_code
redirect_uri 填写第一步的redirect_uri
针对刷新token的参数说明
参数 是否必须 说明
client_id 你的appid
grant_type 填refresh_token
refresh_token 上次获取access_token时候的refresh_token
返回说明
正确的返回:
{ 
    "access_token":"ACCESS_TOKEN", 
    "expires_in":300, 
    "refresh_token":"REFRESH_TOKEN",
    "refresh_expires_in": 1800
}
错误的返回:
{
    "error": "invalid_token",
    "error_description": "Token verification failed"
}
参数说明
参数 说明
access_token 接口调用凭证
expires_in access_token接口调用凭证超时时间,单位(秒)
refresh_token 用户刷新access_token

第三步:获取用户信息(已废弃)

该接口与废弃的获取用户access_token接口进行了合并,已对接使用的应用可继续使用,不受影响,建议使用最新接口。

{domain}/auth/realms/SE-UNICLOUD/protocol/openid-connect/userinfo
请求以POST形式,认证采用bearer token,无其他参数。(token 为第二步获取的用户access_token)
注意:此接口不再用basic auth的方式。
返回说明
{
    "sub": "f:809dc164-64d0-450c-b719-549f362ffe9a:xxxxx@youke",
    "preferred_username": "admin@youke",
    "openId": "xxxxx",
    "nickName": "小强"
}
参数说明
参数 说明
preferred_username 用户唯一登录账号
sub 用户在SSO下的唯一ID
nickName 用户的昵称(有可能为空)
openId 用户的唯一ID

第三步:判断用户是否有访问应用的权限

https://open.apps.paas.se-unicloud.com/iot-open-manager/open/checkAuth?uniqueId=xxx
请求方式以及参数
请求方式为:GET请求
请求参数说明
参数 是否必须 说明
uniqueId 用户唯一ID,用户信息中的openId
返回示例
{
  "code": 1,
  "message": "success",
  "data": {
      "createUserId": null,
      "updateUserId": null,
      "id": 63,
      "remark": null,
      "deleted": false,
      "version": 0,
      "createDateTime": "2020-12-11T15:15:11",
      "updateDateTime": "2020-12-11T15:15:11",
      "createUserType": 1,
      "updateUserType": 1,
      "uniqueId": "tnhqqf3fnk",//角色唯一识别码,有角色且有访问权限时才有数据
      "applicationUniqueId": "n89vnnsort",//应用唯一识别码e
      "code": "TENANTADMIN",//角色code,有角色且有访问权限时才有数据
      "name": "租户管理员",//角色name,有角色且有访问权限时才有数据
      "tenantUniqueId": "testabc",//租户id,有访问权限时才有数据
      "isAuth":"true"//true 有权限 false 无权限,有权限不一定有角色code,有角色code则一定有权限
  },
  "error": ""
}

第四步:登出

应用系统点击退出后跳转重定向的路径为:
https://sec-portal.apps.paas.se-unicloud.com/#/logout?redirect_uri={redirect_uri}
参数 是否必须 说明
redirect_uri 请使用urlEncode对链接进行处理
为便于平台做统一的退出操作,应用系统生成的token需遵守如下两点要求
1、token需要存在cookie中,cookie必须种在.se-unicloud.com 主域名下
2. token 的key命名规则,sedt-{AppID}-token;

results matching ""

    No results matching ""