
# 通过SAML协议单点登录至应用
#### 概述
SAML即安全断言标记语言（Security Assertion Markup Language），是OASIS安全服务技术委员会的一个产品，是基于XML的开源标准数据格式。SAML可以解决Web端应用系统的单点登录（SSO）需求，在不同的安全域（security domain）之间交换认证和授权数据。
从抽象的角度来看，SAML主要包括：主要术语和授权流程。
- 主要术语
  表1主要术语 
  | 术语  | 说明                                                                     |
  |:---|:---|
  | IdP | 身份提供商（Identity Provider，简称IdP）。负责收集、存储用户身份信息，如用户名、密码等，在用户登录时负责认证用户的服务。 |
  | SP  | 服务提供商（Service Provider，简称SP）。与IdP建立信任关系，使用IdP提供的用户信息，为用户提供具体的服务。       |
  | SSO | 单点登录（Single Sign-On，简称SSO）。用户在OneAccess系统登录后，就可以通过跳转链接访问已建立互信关系的SP系统。  |
     
  
- 授权流程
  1. 用户通过浏览器访问Web应用系统。
  
  2. Web应用系统生成一个SAML身份验证请求。
  
  3. Web应用系统将重定向网址发送到用户的浏览器，重定向网址包含应向SSO服务提交的编码SAML身份验证请求。
  
  4. IdP对SAML请求进行解码。
  
  5. IdP对用户进行身份验证。认证成功后，IdP生成一个SAML响应并编码返回到用户的浏览器，其中包括经过验证的用户的用户名。
  
  6. 浏览器将SAML响应转发到Web应用系统ACS URL。
  
  7. Web应用系统使用IdP的公钥验证SAML响应，验证成功，ACS则会将用户重定向到目标网址。
  
  8. 用户将重定向到目标网址并登录到 Web 应用系统。
   
 
本文主要介绍OneAccess以SAML协议集成应用的方法。
#### 配置流程
![](https://support.huaweicloud.com/bestpractice-oneaccess/zh-cn_image_0000002187474114.png)
#### 前提条件
请确保您已拥有OneAccess管理门户的访问权限。
 #### 在OneAccess中添加企业应用
在OneAccess管理门户中添加企业应用，配置企业应用的元数据文件后，可以建立OneAccess对企业应用SP的信任关系。使用企业已有账号登录华为云，具体操作请参考[通过OneAccess免密登录华为云](https://support.huaweicloud.com/bestpractice-oneaccess/oneaccess_05_0070.html)。
1. 登录OneAccess管理门户。
2. 在导航栏中，单击"资源 \> 应用"。
3. 在企业应用页面，单击自建应用下的"添加自建应用"，设置Logo和名称，单击"保存"。
 
 #### 在OneAccess中配置元数据文件
配置元数据文件，即在OneAccess中配置企业SP的Metadata文件。OneAccess支持"上传文件"和"手动编辑"两种配置，选择其中一种即可。如果后续元数据有更新，需要重新上传或者编辑元数据，否则会影响企业用户通过OneAccess登录企业应用。
1. 单击[在OneAccess中添加企业应用]中添加的企业应用，在应用信息页面单击应用图标。
2. 在通用信息模块，单击"认证集成"后的![](https://support.huaweicloud.com/bestpractice-oneaccess/zh-cn_image_0000002222720113.png)打开认证集成设置，此处选择SAML协议，单击"保存"。
   
   ![](https://support.huaweicloud.com/bestpractice-oneaccess/zh-cn_image_0000002222674553.png)
   ![](https://support.huaweicloud.com/bestpractice-oneaccess/public_sys-resources/note_3.0-zh-cn.png)
   应用认证集成协议一旦设置不可修改。
   
   
3. 在通用信息模块，单击"认证集成"后的"配置"，进入"参数配置"页签配置元数据文件，可以选择上传文件和手动配置两种方式。 
   ![](https://support.huaweicloud.com/bestpractice-oneaccess/public_sys-resources/notice_3.0-zh-cn.png)
   配置参数会明文展示所输入的信息，请防止信息泄露。
   - 上传文件
     1. 单击"上传文件"，选择获取的企业SP的元数据文件。 ![](https://support.huaweicloud.com/bestpractice-oneaccess/zh-cn_image_0000002187314422.png)
        
     
     2. 当显示"上传成功"时，即系统已提取元数据。
        ![](https://support.huaweicloud.com/bestpractice-oneaccess/public_sys-resources/note_3.0-zh-cn.png)
        - 如果提示"文件格式错误，仅支持上传xml格式文件"，需要您确认元数据文件的正确性后，重新上传或者通过手动编辑提取元数据。
        
        - 企业应用的元数据获取方法请参考SP提供商的帮助文档。
          
      
   
   - 手动配置
     1. 在"参数配置"页签，单击"手动配置"。
     
     2. 在手动编辑元数据页面，输入从企业SP元数据文件中获取的"**SP** **Entity ID** "、"**ACS URL** "和"**签名证书** "等参数，单击"保存"。
        ![](https://support.huaweicloud.com/bestpractice-oneaccess/zh-cn_image_0000002222674561.png)
        表2认证参数 
        | 参数                | 是否必选 | 说明                                                                               |
        |:---|:---|:---|
        | SP Entity ID      | 是    | SP唯一标识，对应SP元数据文件中的"Entity ID"的值。                                                 |
        | 断言消费地址（ACS URL）   | 是    | SP回调地址（断言消费服务地址），对应SP元数据文件中"AssertionConsumerService"的值，即当OneAccess认证成功后响应返回的地址。 |
        | Name ID           | 是    | 用户在应用系统中的账号名对应字段，可以选择用户的属性或者对应的账号属性,此字段的值将作为断言中的subject。                         |
        | NameID Format     | 是    | SP支持的用户名称标识格式。对应SP元数据文件中"NameIDFormat"的值。                                        |
        | Audience URI      | 否    | 允许使用SAML断言的资源，默认和SP Entity ID相同。                                                 |
        | Single Logout URL | 否    | 服务提供商提供会话注销功能，用户在OneAccess注销会话后返回该地址。                                            |
        | 默认Relay State     | 否    | 使用在idp发起的认证中，作为默认的一个值。                                                           |
        | 支持ForceAuth       | 是    | 默认为否。如果SP要求重新认证，则强制用户再次认证。                                                       |
        | Response签名        | 是    | 默认为否。是否对SAML Response使用IdP的证书签名。                                                 |
        | 断言签名              | 是    | 默认为是。断言需使用IdP的证书签名，对应SP元数据文件中"WantAssertionsSigned"值。                            |
        | 数字签名算法            | 是    | 默认为RSA_SHA256，是SAML Response或者断言签名的算法，可在下拉框选择。                                   |
        | 数字摘要算法            | 是    | 默认为SHA256，是SAML Response或者断言的算法摘要算法，可在下拉框选择。                                     |
        | 断言加密              | 是    | 默认为否。是否对断言进行加密。                                                                  |
        | 验证请求签名            | 是    | 默认为是。用来对SAML Request签名进行验证，对应SP元数据文件中"AuthnRequestsSigned"值。                     |
        | 验证签名证书            | 是    | SP公钥证书，用来验证SAML request的签名，对应SP元数据文件中use="signing"证书内容。                          |
           
        
      
   
   
   
   
 
 #### 在OneAccess中配置映射并授权用户
- 映射配置，即在OneAccess中配置认证成功后需要返回给应用的属性，以建立OneAccess与应用端属性的映射关系。
  ![](https://support.huaweicloud.com/bestpractice-oneaccess/public_sys-resources/note_3.0-zh-cn.png)
  如果[在OneAccess中配置元数据文件]的"Name ID"已设置你所需要的映射关系，可以选择跳过映射配置。
  在认证配置页面，选择"映射配置"页签，单击"添加映射"，建立OneAccess与应用端属性的映射。
  表3映射参数 
  | 参数               | 说明                                  |
  |:---|:---|
  | 应用系统属性名          | 必填。认证成功后，OneAccess返回给应用的用户属性。       |
  | 映射类型             | 必填。不同的映射类型决定不同接口返回属性的属性值，可在下拉框按需选择。 |
  | Friendly Name    | 必填。与**应用系统属性名**一致。                  |
  | Attr Name Format | 必填。SAML协议返回的一种数据格式。                 |
     
  
- 授权用户，即在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)。
  
 
#### 建立SP对OneAccess的信任关系
在SP中配置OneAccess的元数据文件，以建立SP对OneAccess的信任。
1. 下载OneAccess系统的元数据文件（metadata文件）。 
   1. 登录OneAccess管理门户。
   
   2. 在导航栏中，选择"设置 \> 服务配置"进入服务配置页面。
   
   3. 单击"IDP配置"。
   
   4. 在弹出的IDP配置页面，单击右上角的"下载IDP元数据"，数据会自动保存。
   
   
   
   
2. 将上述文件上传到企业SP服务器上，上传方法请参见SP提供商的帮助文档。
3. 获取企业SP的元数据文件。获取方法请参见SP提供商的帮助文档。
#### OneAccess用户登录验证
使用[授权用户]中的已授权用户访问用户门户，成功登录以后，单击目标应用即可进入企业应用。
