# 创建SAML身份提供商
IAM SAML 2.0身份提供商是IAM中的一种资源类型，用于表示一个支持SAML 2.0标准的外部身份提供商。该资源用于描述外部身份提供商的元数据信息，并建立华为云对该外部身份提供商的信任关系。
当您需要在企业身份系统（如Shibboleth或Active Directory Federation Services）与华为云之间实现单点登录（SSO）时，需要在IAM中创建SAML身份提供商。通过该机制，企业用户可以使用已有身份访问华为云资源，而无需单独创建的IAM用户。IAM SAML身份提供商可以在IAM信任委托的信任策略中作为信任主体（Principal）使用，用于标识允许切换信任委托的外部身份提供商。
您可以通过华为云管理控制台或直接调用华为云API创建和管理IAM SAML身份提供商。创建SAML身份提供商后，必须创建一个或多个IAM信任委托。信任委托本身不包含长期凭证，而是用于向经过外部身份提供商验证的用户动态授予访问权限。当用户通过外部身份提供商的身份验证后，华为云STS服务会根据信任委托的信任策略决定是否向该用户颁发临时安全凭证, 而信任委托所附加的身份策略则定义了用户在华为云中可以执行的操作范围。为支持SAML联邦身份认证，您需要在信任委托的信任策略中指定前面创建的SAML身份提供商，并允许其调用STS AssumeAgencyWithSAML API。完成IAM侧的配置后，还需要在外部身份提供商中配置信任关系，即在外部身份提供商中注册华为云相关信息，并指定允许使用的IAM信任委托。该配置决定了哪些用户或用户组可以切换到华为云的哪些信任委托上。完成上述配置后，企业用户即可通过外部身份提供商发起SAML登录流程，经华为云验证后获取临时安全凭证，从而访问授权的华为云资源。
#### 前提条件
在IAM创建SAML身份提供商之前，您必须从外部身份提供商处获得以下信息：
- 从外部身份提供商中获取SAML元数据文件，必须包含：发布者名称、创建时间、过期时间以及用于验证SAML断言的签名证书（公钥）。要生成元数据文件，请使用外部身份提供商提供的身份系统。
  ![](https://support.huaweicloud.com/usermanual-iam5/public_sys-resources/warning_3.0-zh-cn.png)
  如[SAML V2.0 Metadata Interoperability Profile Version 1.0](https://docs.oasis-open.org/security/saml/Post2.0/sstc-metadata-iop-os.html)所定义，IAM在进行SAML断言验证时，不会校验元数据文件中X.509证书的有效期（仅在上传元数据文件时校验证书是否过期）。若 X.509 证书在元数据文件上传后发生过期，IAM不会执行任何额外处理，意味着您的身份提供商仍然可以正常使用。建议您根据组织的治理与安全策略，定期监控证书到期时间，并及时完成证书轮换，以降低潜在风险。
  
- 启用SAML加密时，您需要生成一个私钥文件（Private Key）上传至IAM的SAML身份提供商配置中，私钥所对应的公钥则需要配置在外部身份提供商处。华为云STS需要使用该私钥解密外部身份提供商加密过的SAML响应。SAML加密支持的算法分类如下：
  1. 密钥传输算法 (Key Transport Algorithms) 用于加密对称密钥：
     - RSA-OAEP
      
  
  2. 数据加密算法 (Data Encryption Algorithms) 用于加密实际的SAML断言内容：
     - AES-128-GCM
     
     - AES-128-CBC
      
   
 
#### 操作步骤
1. 登录[统一身份认证服务新版控制台](https://console.huaweicloud.com/iam5)。
2. 在左侧导航窗格中，选择"身份提供商"，单击右上方的"创建身份提供商"。 
   图1创建身份提供商   
   ![](https://support.huaweicloud.com/usermanual-iam5/zh-cn_image_0000002550988880.png "点击放大")
   
   
3. "类型"选择"SAML"。
4. 填写"身份提供商名称"。
5. 单击"上传文件"配置元数据。 
   ![](https://support.huaweicloud.com/usermanual-iam5/public_sys-resources/note_3.0-zh-cn.png)
   SAML身份提供商的过期时间默认为自创建时间起的100 年，不受元数据文件中的validUntil、cacheDuration或X.509证书有效期的影响。为保证可用性，IAM不会在验证SAML断言时校验元数据中X.509 证书的有效期，这意味着即使证书过期，您的身份提供商仍然可以正常使用。
   
   
6. （可选）输入描述信息。
7. （可选）设置SAML加密。单击"上传文件"上传您在前提条件中创建的私钥文件。 
   ![](https://support.huaweicloud.com/usermanual-iam5/public_sys-resources/note_3.0-zh-cn.png)
   是否传输加密的SAML断言取决于所使用的加密配置及登录URL：
   1. 如果勾选了"需要加密"，那么只能使用https://auth.huaweicloud.com/authui/v5/saml/acs/{provider_id}登录URL，且必须要传递加密的SAML断言。
   
   2. 如果没有勾选"需要加密"，那么可以使用https://auth.huaweicloud.com/authui/v5/saml/acs/{provider_id}登录URL或https://auth.huaweicloud.com/authui/v5/saml登录URL。使用https://auth.huaweicloud.com/authui/v5/saml/acs/{provider_id}登录URL时，可以传递加密的SAML断言或明文的SAML断言（取决于您是否上传 SAML 解密私钥文件）；而使用https://auth.huaweicloud.com/authui/v5/saml登录URL时，只能传递明文的SAML断言。
    
   
   
8. 请核对您所提供的信息。确认无误后，单击"确定"。
9. 为您的身份提供商分配一个信任委托。此信任委托授予由您的身份提供商管理的外部用户身份访问您账号中的华为云资源的权限。 
   ![](https://support.huaweicloud.com/usermanual-iam5/public_sys-resources/note_3.0-zh-cn.png)
   在信任委托的信任策略中使用的SAML身份提供商必须与信任委托属于同一账号。
   图2为身份提供商分配信任委托   
   ![](https://support.huaweicloud.com/usermanual-iam5/zh-cn_image_0000002581585105.png "点击放大")
   
   
 
#### 后续操作
创建SAML身份提供商后，需要在外部身份提供商中配置与华为云之间的信任关系，以完成SAML联邦身份认证。同时，还可以在信任策略中使用外部身份提供商返回的身份验证响应中的声明控制对信任委托的切换。
- 您必须告知外部身份提供商将华为云作为服务提供商。此操作称为在外部身份提供商和华为云之间添加信任关系，具体步骤取决于您使用的外部身份提供商。
- 当外部身份提供商将包含断言的响应发送至华为云时，传入的断言将映射为华为云条件键。您可以在IAM策略中使用这些Condition条件键控制信任委托的切换。
 
