
# 通过OAuth2.0协议单点登录至应用
 #### 概述
OAuth2.0（开放授权）是一个开放标准，允许用户授权第三方应用访问其存储在资源服务器上的信息，而不需要将用户名和密码提供给第三方应用。
基于该协议进行授权的整体流程为：
1. 用户访问第三方应用系统，第三方应用系统向OneAccess发起授权登录请求，用户同意授权第三方应用系统后，OneAccess将携带授权码code，重定向到第三方应用系统。
2. 第三方应用系统使用授权码code调用OneAccess的API接口换取授权令牌access_token。
3. 第三方应用系统使用授权令牌access_token（access_token有效且未超时）调用OneAccess的API接口获取用户信息。
本文主要介绍OneAccess以OAuth协议集成应用的方法。
#### 配置流程
![](https://support.huaweicloud.com/bestpractice-oneaccess/zh-cn_image_0000002187314426.png)
#### 前提条件
请确保您已拥有OneAccess管理门户的访问权限。
 #### 在OneAccess中添加企业应用
在OneAccess管理门户中添加企业应用，通过配置认证信息，可以建立OneAccess对企业应用的信任关系。
1. 登录OneAccess管理门户。
2. 在导航栏中，单击"资源 \> 应用"。
3. 在企业应用页面，单击自建应用下的"添加自建应用"，设置Logo和名称，单击"保存"。
 
#### 在OneAccess中配置企业应用
在OneAccess中配置应用的信息，确保用户可以通过OneAccess登录企业应用。包括认证配置、 映射配置、授权用户。
- 认证配置
  1. 单击[在OneAccess中添加企业应用]中添加的企业应用，在应用信息页面单击应用图标。
  
  2. 在通用信息模块，单击"认证集成"后的![](https://support.huaweicloud.com/bestpractice-oneaccess/zh-cn_image_0000002222674565.png)打开认证集成设置，此处选择"OAuth"协议，单击"保存"。
     ![](https://support.huaweicloud.com/bestpractice-oneaccess/public_sys-resources/note_3.0-zh-cn.png)
     应用认证集成协议一旦设置不可修改。
     图1设置认证协议   
     ![](https://support.huaweicloud.com/bestpractice-oneaccess/zh-cn_image_0000002187474126.png) 
  
  3. 在通用信息模块，单击"认证集成"后的"配置"，进入"认证集成（OAUTH）"的"参数配置"页签。
     ![](https://support.huaweicloud.com/bestpractice-oneaccess/public_sys-resources/note_3.0-zh-cn.png)
     配置参数会明文展示所输入的信息，请防止信息泄露。
     ![](https://support.huaweicloud.com/bestpractice-oneaccess/zh-cn_image_0000002222720133.png)
     表1认证参数 
     | 参数               | 说明                                                                                                                                                                                                         |
     |:---|:---|
     | 标准授权模式           | 默认开启。是最常用，安全性也最高的一种认证模式，适用于有后端的Web应用。该模式下，授权码通过前端传送，令牌存储在后端，可以避免令牌泄漏，而且所有与资源服务器的通信都在后端完成。具体的标准授权模式可参考[概述]。                                                        |
     | 简化授权模式           | 默认关闭。适用于没有后端的Web应用，必须将令牌存储在前端，用于一些对安全要求不高的场景。与标准授权模式相比，省略了获取授权码code环节。                                                                                                                                     |
     | 资源所有者密码模式        | 默认关闭。适用于用户对客户端高度信任的场景，用户将用户名和密码提供给客户端，由客户端申请令牌。                                                                                                                                                            |
     | 客户端密码模式          | 默认关闭。适用于没有前端的应用，由客户端发起申请令牌请求。                                                                                                                                                                              |
     | 回调地址             | 必填。成功授权后的回调地址，必须在可信域名范围内（多个域名以逗号分隔），建议设置为应用首页。如https://example.com。                                                                                                                                        |
     | 退出跳转URL          | 可选。应用退出地址。用户在OneAccess注销会话后返回绑定的地址。                                                                                                                                                                        |
     | Access Token有效期  | 授权令牌的有效期，默认2小时，以秒为单位。                                                                                                                                                                                      |
     | Refresh Token有效期 | 刷新令牌的有效期，默认0，即不支持Refresh Token。当Access Token过期后，用户可通过Refresh Token实现自动更新令牌。 说明： 实现自动更新令牌的前提是设置Refresh Token有效期大于Access Token的有效期。 |
        
     
   
- （可选）映射配置
  在认证配置页面，选择"映射配置"页签，单击"添加映射"，建立OneAccess与应用端属性的映射。
  表2映射参数 
  | 参数      | 说明                                  |
  |:---|:---|
  | 应用系统属性名 | 必填。认证成功后，OneAccess返回给应用的用户属性。       |
  | 映射类型    | 必填。不同的映射类型决定不同接口返回属性的属性值，可在下拉框按需选择。 |
     
  
- 授权用户
  选择左侧的"授权管理 \> 应用账号"，单击"添加账号"，授权访问应用的账号。如需根据策略给用户授权，请参考[配置应用](https://support.huaweicloud.com/usermanual-oneaccess/oneaccess_03_0310.html)中应用账号的授权策略。
  ![](https://support.huaweicloud.com/bestpractice-oneaccess/public_sys-resources/note_3.0-zh-cn.png)
  登录配置、访问控制、对象模型等设置请参考[配置应用](https://support.huaweicloud.com/usermanual-oneaccess/oneaccess_03_0310.html)。
  
 
#### 建立企业应用对OneAccess的信任关系
在企业应用中配置OneAccess的授权信息，以建立企业应用对OneAccess的信任。
1. 获取OneAccess侧的ClientId和ClientSecret。 
   单击[在OneAccess中添加企业应用]中添加的企业应用，在应用信息页面单击应用图标，在应用详情页面获取ClientId和ClientSecret。
   ![](https://support.huaweicloud.com/bestpractice-oneaccess/public_sys-resources/note_3.0-zh-cn.png)
   - ClientSecret需单击"启用"生成。
   
   - ClientSecret是校验开发者身份的密码，具备高安全性，切勿将其直接提供给第三方开发者或直接存储在代码中。
   
   - 重置后的ClientSecret即时生效，所有使用原ClientSecret的接口将全部失效，请谨慎重置。
   
   - OneAccess不存储ClientSecret，当获取ClientSecret后，请妥善保管。
    
   图2获取ClientId和ClientSecret   
   ![](https://support.huaweicloud.com/bestpractice-oneaccess/zh-cn_image_0000002187474130.png)
   
   
2. 获取OneAccess侧的认证信息。 
   1. 登录OneAccess管理门户。
   
   2. 在导航栏中，选择"设置 \> 服务配置"进入服务配置页面。
   
   3. 单击"OIDC"。
   
   4. 在弹出的OIDC页面，查看认证地址。
   
   
   
   
3. 获取企业应用的授权信息。获取方法请参见应用提供商的帮助文档。
 
#### OneAccess用户登录验证
使用[授权用户]中的已授权用户访问用户门户，成功登录以后，单击目标应用即可进入企业应用。
