
# ISDP免密登录解决方案
#### 目的
为实现ISDP系统与第三方系统间页面快速集成，外部系统侧可通过ISDP提供的免密登录方案进行SSO单点登录适配来实现无感登录。
页面集成方案（推荐）
1. 第三方系统获取isdp+的token。
2. 通过token访问中间跳转页面。
3. 该页面拿到isdpToken调用接口模拟登录成功后再重定向实际访问的页面。 页面url格式：https://***{domian}*** /auth/#/jump?isdpToken=xxxxxx\&redirect=https://***{domain}***/one/#/portal/index
   
 
#### 时序图
该时序图着重介绍集成方案的详细过程，请详细查阅。
![](https://support.huaweicloud.com/isdp_faq/zh-cn_image_0000001655461846.png "点击放大")
#### 集成步骤
1. 添加账号（ISDP+）。 
   在ISDP+人员管理页面https://***{domain}***/admin/#/pub/personList（页面菜单路径：公共平台 \> 系统配置 \> 用户权限 \> 用户）添加第三方系统账号。
   例如：第三方系统存在账号**test** ，需要在人员管理新建人员账号为**test**的人员数据。
   ![](https://support.huaweicloud.com/isdp_faq/zh-cn_image_0000001703581253.png "点击放大")
   
   
2. 分配clientId和clientsecret （ISDP+）。
   
   1. ISDP超级管理员在console页面oauth2集成配置页面，新建集成客户端。
   
   2. ISDP控制台地址：https://***{domain}***/console#/sysAdmin/oauth2IntegrationConfig
   
   3. 将生成的客户端id和密码发给第三方系统。 ![](https://support.huaweicloud.com/isdp_faq/zh-cn_image_0000001703581241.png "点击放大")
      
   
   
   
   
3. 配置IP白名单（ISDP+）。 
   1. 第三方反馈他们的服务器ip给ISDP，ISDP超级管理员将ip配置到[2]建好的客户端中。
      ![](https://support.huaweicloud.com/isdp_faq/zh-cn_image_0000001655461850.png "点击放大")
      
   
   
   
   
4. 开发获取token的接口（第三方）。 
   第三方开发一个接口获取isdp+的token供第三方前端使用（请注意不是前端直接访问）。
   isdp+接口格式如下：
   1. 请求url：https://***{domain}***/oauth2/oauth/rest_token
   
   2. 请求方法：POST
   
   3. Content-Type：application/json
   
   4. 请求参数：
      ```
      {
           "client_id":"{客户端id}",
           "client_secret":"{客户端密码}",
           "username":"{账号}",
           "login_type":"server_auth"
      }
      ```
      ![](https://support.huaweicloud.com/isdp_faq/public_sys-resources/note_3.0-zh-cn.png)
      客户端id和客户端密码为[2]中分配的clientId和clientsecret。
      
   
   5. 返回值：
      ```
      {
           "access_token":"xxxxxx",
           .....
      }
      ```
      
   
   
   
   
5. 集成ISDP+页面（第三方）。 
   - 第三方前端拿到isdp颁发的access_token，将token通过**encodeURIComponent**方法编码后拼接到页面url参数上。
   
   - 通过iframe或者跳转方式集成ISDP+页面，页面url格式如下： https://***{domian}*** /auth/#/jump?isdpToken=xxxxxx\&redirect=https://***{domain}***/one/#/portal/index
     
   
   
   
   
 
