第三方集成中心如何支持单点登录

Viewed 61

希望挂载一个应用在易搭云平台上,要如何做到,有大佬知道吗~

1 Answers

🌟🌟🌟🌟🌟 我在文档库中找到相关资料 希望能解决你的问题 🌟🌟🌟🌟🌟


第三方集成中心-单点登录流程

0. 前置准备&注意事项

  • AppID 以及 AppSecret 需要向易搭云系统提工单申请

    申请 AppID 工单说明请跳转:

    https://web.yidayun.com/public/form?publicKey=f8e9716aa827fe31510ea441dd729fef17025f0bd3f539b1d92ab4f6ff9b07f2f044b9e9f28d292977140e7e13c7cc7834ff1e2486ff72082fe441d27e699afe24975684fa80b55ba342073adbe0610defb347ab3683801192b1853e876688f075864ad70f2e51e19be193d90165be4d
    
  • 配置第三方应用菜单流程

    工作区 -> 创建应用 -> 创建功能 -> 创建菜单 -> 外部链接 -> 填写菜单名称 -> 填写第三方应用被易搭云集成的地址链接

  • 使用易搭云用户的账户身份时,需要先同步易搭云账户到第三方应用系统。

    目前支持的方式:

    1、使用易搭云 OpenApi 接口全量同步用户信息接口

    工作区集成方式:https://help.yidayun.com/openapi/#_3-1-%E8%8E%B7%E5%8F%96%E6%95%B0%E6%8D%AE%E8%AF%A6%E6%83%85
    
    伙伴集成方式:https://help.yidayun.com/partnerapi/#_2-2-%E8%8E%B7%E5%8F%96%E5%91%98%E5%B7%A5%E5%88%97%E8%A1%A8
    
  • 所有的通信都应该使用安全的HTTPS协议。

  • 定期更新客户端密钥以增强安全性。

1. 第三方跳转易搭云系统登录

1.1 配置第三方客户端

在易搭云系统中,配置OIDC客户端链接在菜单中以与易搭云建立信任关系。需要提供以下信息:

- 客户端ID(AppID):易搭云为第三方应用分配的唯一标识符。

- 客户端密钥(AppSecret):易搭云为第三方应用分配的令牌。

- 重定向URL(RedirectURL):易搭云用于发送授权码(Authorization Code)的URI。

1.2 跳转至易搭云登录页面

用户在第三方应用中点击登录按钮后,第三方应用通过浏览器将用户重定向到易搭云的认证页面。在重定向URI中包含客户端ID、重定向URL(需要将URI Base64加密)。

重定向到易搭云的认证地址:

https://web.yidayun.com/third-integration?appId=f03edbc9be8c44a694b15728b4fc934b&redirectUrl=aHR0cDovLzE5Mi4xNjguMjAwLjk6ODg4OC9jYWxsYmFjaw==

参数含义

- 客户端ID(AppID):易搭云为第三方应用分配的唯一标识符。

- 重定向URL(RedirectURL):易搭云用于发送授权码(Authorization Code)的URL。

2. 用户授权获取Code

2.1 用户登录和授权

在易搭云的认证页面,用户完成登录,然后决定是否授权第三方应用访问其信息。如果用户同意,易搭云将生成一个授权码并将用户重定向回第三方应用的重定向URL。

2.2 获取Authorization Code

第三方应用从重定向URL中提取AuthorizationCode。

示例代码(javascript)


// window.location.search: redirectUri?code=?
//构造一个含有目标参数的正则表达式对象
const reg = new RegExp("(^|&)code=([^&]*)(&|$)");
//匹配目标参数
const r = window.location.search.substring(1).match(reg);
// 获取 Authorization Code
const code = null == r ? null : r[2];

3. 第三方获取身份认证 Code 去 交换AccessToken

3.1 向易搭云发送请求

第三方应用使用获得的 AuthorizationCode,以及之前配置的客户端ID和客户端密钥,向易搭云发送请求以获取 AccessToken。

用户获取 AccessToken 接口 (GET 请求):

https://api.yidayun.com/sso/outside/accessToken?code=code&appId=f03edbc9be8c44a694b15728b4fc934b&appSecret=345fa2a055164860be211dca8d38126b

参数含义:

- 客户端ID(AppID):易搭云为第三方应用分配的唯一标识符。

- 客户端密钥(AppSecret):易搭云为第三方应用分配的令牌。

- 身份认证编码(AuthorizationCode):易搭云用户授权后从回调链接返回的编码。

示例代码(java)

// 换取 access_token
String url = "https://api.yidayun.com/sso/outside/accessToken?code=code&appId=f03edbc9be8c44a694b15728b4fc934b&appSecret=345fa2a055164860be211dca8d38126b"

HttpRequest request = HttpRequest.newBuilder().uri(URI.create(url)).GET().build();

HttpResponse<String> response = HttpClient.newBuilder().build().send(request,HttpResponse.BodyHandlers.ofString());

String body = response.body();

返回值

{
    "success": true,
    "data": {
        "appId": "f03edbc9be8c44a694b15728b4fc934b",
        "accessToken": "345fa2a055164860be211dca8d38126b",
        "expire": 1701416769933
    },
    "errorMessage": "",
    "errorCode": 0,
    "showType": 0,
    "traceId": "ieqgsd2hw99agvj"
}

返回值参数含义:

- 客户端ID(AppID):易搭云为第三方应用分配的唯一标识符。

- 访问凭证(AccessToken):访问易搭云资源的 accessToken,有效期一天。

- 访问凭证过期时间(Expire):访问易搭云资源 accessToken 的过期时间,毫秒时间戳格式。

3.2 获取Access Token

易搭云验证授权码的有效性,并向第三方应用提供Access Token。AccessToken用于访问受保护的资源。

4. 通过AccessToken获取用户信息

4.1 向易搭云发送请求获取用户信息

使用获得的Access Token,第三方应用向身份提供商的UserInfo Endpoint发送请求,以获取有关用户的详细信息。

用户获取用户信息接口 (GET 请求):

https://api.yidayun.com/sso/api/getUserInfo

headers参数:

accessToken: accessToken

参数含义:

- 访问凭证(AccessToken):访问易搭云资源的 accessToken。

示例代码(java)

String url = "https://api.yidayun.com/sso/api/getUserInfo";

HttpRequest request = HttpRequest.newBuilder().header("accessToken", "d189380601e94ed6873c0e9cde21ec38").uri(URI.create(url)).GET().build();

HttpResponse<String> response = HttpClient.newBuilder().build().send(request, HttpResponse.BodyHandlers.ofString());

String body = response.body();

返回值示例

{
    "success": true,
    "data": {
        "account": "1568072601001571314",
        "user": "1646395992762773114",
        "wsn": "W856VD"
    },
    "errorMessage": "",
    "errorCode": 0,
    "showType": 0,
    "traceId": "madbubyge6786t9"
}

返回值参数含义:

- 易搭云用户账户ID(account):易搭云账户唯一标识。

- 易搭云用户员工ID(user):易搭云工作区员工唯一标识。

- 易搭云工作区编码(wsn):易搭云工作区编码。

4.2 处理用户信息

易搭云将用户信息以JSON格式返回给第三方应用。第三方应用可以使用这些信息完成用户的注册、登录,或者其他必要的操作。

感谢, karina.