# 使用基于SAML协议的SSO访问华为云控制台
您可以通过配置信任委托，将符合SAML 2.0标准的外部身份提供商与华为云建立信任关系，从而允许其通过SAML联邦主体访问华为云管理控制台。该信任委托用于为用户授予在控制台中执行相应操作的权限。
#### 概述
下图展示了使用SAML的单点登录流程（Single Sign-On, SSO)。
图1使用SAML的单点登录流程   
![](https://support.huaweicloud.com/usermanual-iam5/zh-cn_image_0000002581574515.png "点击放大")
上图说明了以下步骤：
1. 在企业中，门户网站通常充当处理您企业与华为云之间的信任交换的外部身份提供商。例如，在Active Directory联合身份验证服务中，门户网站URL为：https://ADFSServiceName/adfs/ls/IdpInitiatedSignOn.aspx。
2. 该门户网址可以验证用户在组织中的身份。
3. 该门户网站生成一个SAML身份验证响应并发送到客户端浏览器，该响应包括识别用户身份的断言以及用户的相关属性。您也可以配置外部身份提供商以包含一个名为SessionDuration的SAML断言属性，该属性指定控制台会话的有效时间长度。您还可以配置外部身份提供商，将属性作为会话标签传递。
4. 该客户端浏览器将被重定向到华为云的单点登录端点并发送SAML断言。
5. 单点登录端点将代表用户请求临时安全凭证。
6. 单点登录端点将华为云管理控制台链接作为重定向发回客户端。
7. 该客户端浏览器将重定向到华为云管理控制台。如果SAML身份验证响应包含映射到多个IAM信任委托的属性，则系统将首先提示用户选择信任委托以访问控制台。
 
从用户的角度来看，整个流程以透明的方式进行：用户在您的企业的内部门户网站开始操作，在华为云管理控制台结束操作，整个流程无需提供任何华为云凭证。
有关如何配置此行为的概述以及指向详细步骤的链接，请参阅以下章节。
#### 配置您的SAML外部身份提供商与IAM对接
在企业网络环境中，首先需要部署并配置统一的身份存储系统（例如 **Windows Active Directory** ），并基于该身份源搭建支持**SAML 2.0 协议** 的身份提供商，如**Active Directory联合身份验证服务（ADFS）** 、**Shibboleth**等。
完成外部身份提供商的基础配置后，需要执行以下关键步骤：
1. **生成外部身份提供商元数据（metadata.xml）** 。
   外部身份提供商会对外提供一个标准的SAML元数据文档（通常为metadata.xml）。
   该元数据文件用于向服务提供商（SP，例如华为云）声明外部身份提供商的身份及其信任信息，是建立SAML联邦信任关系的基础。
   
2. **在华为云侧导入外部身份提供商元数据**将生成的metadata.xml上传至华为云 IAM中，完成IAM身份提供商的注册，从而建立信任关系。
3. **外部身份提供商发起登录** 将企业门户网站或统一访问入口配置为：
   - 当用户从企业门户访问华为云控制台时，首先企业门户的身份提供商完成对用户的身份认证
   
   - 用户在身份提供商完成认证后，向华为云发送包含SAML Assertion的响应
    
4. **基于SAML断言完成身份认证与授权**外部身份提供商在认证成功后生成SAML Assertion，其中包含用户身份及属性（如用户名、信任委托等），华为云根据断言内容完成登录及权限映射。
 
#### 在IAM中创建SAML身份提供商
登录华为云管理控制台并转至IAM控制台。在此，您创建一个新的SAML提供商，这是在IAM中包含您的企业的外部身份提供商的相关信息的实体。在此过程中，您可以上传在上一节中由贵组织中的外部身份提供商软件生成的元数据文档。有关更多信息，请参阅[创建IAM SAML身份提供商](https://support.huaweicloud.com/usermanual-iam5/iam_01_1310.html)。
#### 在IAM中为SAML联邦主体配置权限
下一步是在华为云IAM中创建一个信任委托，用于在IAM与企业身份提供商之间建立信任关系，从而实现基于SAML的联邦身份认证。
在该配置过程中，需要明确以下几个核心要素：
- **定义信任主体（Principal）**
  信任委托必须将您的SAML身份提供商注册为信任主体。也就是说，仅允许由该外部身份提供商认证的用户，才能通过 SAML 联邦身份认证方式访问华为云资源。
  在IAM控制台中创建信任委托时，需要将之前已创建的SAML身份提供商指定为该信任委托的信任来源（即"谁可以切换该信任委托"）。
  
- **定义权限范围（Policy）**
  您可以通过以下方式进行授权：
  - 绑定**系统身份策略**（如 ECSFullPolicy、ECSReadOnlyPolicy等）
  
  - 或编写**自定义身份策略**，精细控制允许的操作（Action）、资源（Resource）及条件（Condition）
  
  
  最终效果是：
  企业用户通过外部身份提供商登录后，将以该信任委托的权限在华为云中执行操作。
  
- **配置信任策略（Trust Policy）与SAML属性约束**
  在"谁可以切换该信任委托"的信任策略中，可以进一步增加基于**SAML属性（Attribute）** 的访问控制条件，实现更细粒度的限制。
  例如：
  - 可以限定仅当用户的某个SAML属性满足特定值时，才允许切换该委托。
  
  - 常见用法包括基于组织、部门进行控制。
   
  这种机制本质上是**将外部身份提供商** **中的用户属性（Attribute）映射到云侧授权决策**，实现跨系统的统一身份与权限控制。在创建信任委托时，通常会自动在信任策略中添加一个saml:aud条件，以确保特定的SAML身份提供商在登录华为云管理控制台或调用AssumeAgencyWithSAML API时可以切换该信任委托。其作用是保证接收方是华为云的SAML响应才能切换该信任委托，这一步是SAML安全模型中的关键控制点之一。
  如果需要SAML加密，则登录URL必须包含华为云分配给您的SAML身份提供商的ID，您可以在身份提供者详细信息页面上找到该标识符。该信任委托的信任策略可能如下所示：
  ```
  {
      "Version": "5.0",
      "Statement": [
          {
              "Action": [
                  "sts:agencies:assumeWithSAML"
              ],
              "Effect": "Allow",
              "Condition": {
                  "StringEquals": {
                      "saml:aud": [
                          "https://auth.huaweicloud.com/authui/v5/saml",
                          "https://auth.huaweicloud.com/authui/v5/saml/acs/{provider_id}"
                      ]
                  }
              },
              "Principal": {
                  "Federated": [
                      "iam::{account_id}:samlProvider:{saml_provider_name}"
                  ]
              }
          }
      ]
  }
  ```
  对于该信任委托中的身份策略，您可以像任何信任委托、用户或组一样指定权限。例如，如果允许您的企业中的用户管理华为云ECS实例，您可以在身份策略中显式允许华为云ECS操作。您可通过分配一个系统身份策略执行此操作。
  有关创建用于SAML外部身份提供商的信任委托的详细信息，请参阅[创建SAML协议的信任委托](https://support.huaweicloud.com/usermanual-iam5/iam_01_1303.html)。
  
 
#### 完成配置并创建SAML断言
通过配置以下元数据文件，可将华为云作为服务提供商（Service Provider，SP）信息导入外部 SAML 身份提供商（IdP），从而建立信任关系并支持联邦身份认证：
- 标准元数据文件：https://auth.huaweicloud.com/authui/v5/saml/metadata.xml
- 启用SAML加密能力的元数据文件：https://auth.huaweicloud.com/authui/v5/saml/{provider_id}/metadata.xml
 
导入元数据文件后，外部身份提供商将自动获取华为云的 Entity ID、ACS（Assertion Consumer Service）端点、支持的绑定方式以及证书信息，从而能够正确生成并向华为云发送符合规范的 SAML 断言，实现安全的单点登录（SSO）集成。
元数据文件的配置方式取决于所使用的身份提供商（IdP）：
- 部分 IdP 支持直接通过 URL 导入元数据，此模式下系统会自动拉取并解析配置文件；
- 部分 IdP 需要先下载元数据文件，再以本地文件方式上传并完成配置；
 
由于不同身份提供商（如AD FS、Shibboleth、Keycloak 等）实现方式存在差异，建议参考对应产品的官方文档获取详细配置步骤。
在外部身份提供商侧，还可以配置随身份验证响应一同传递给华为云的 SAML 属性（SAML Attributes）。
这些属性在华为云中通常会映射为 IAM 条件键，可用于策略评估，从而实现精细化访问控制。
例如，可以基于这些条件键实现：
- 限制用户仅在指定时间段内访问控制台
- 控制用户登录会话的最大有效时长（最长可达 12 小时）
 
有关详细配置方法，请参阅[为身份验证响应配置SAML断言](https://support.huaweicloud.com/usermanual-iam5/iam_01_1317.html)。
