
# 身份提供商概述
IAM支持基于SAML2.0、OIDC协议的单点登录。如果您已经有自己的企业身份系统，同时您的用户需要使用您账号内的云服务资源，可以通过IAM的身份提供商功能，实现用户通过企业身份系统单点登录华为云，这一过程称之为联邦身份认证。作为最佳实践，建议通过与外部身份提供商（IdP）的联邦身份认证来管理用户对华为云资源的访问，而不是在华为云账号中为每个用户单独创建IAM用户。通过使用外部IdP，您可以在华为云之外集中管理用户身份，并为这些用户授予访问华为云资源的权限。这种方式特别适用于已经具备企业身份系统的组织，同时也适用于需要访问华为云资源的移动应用程序或Web应用程序场景。
![](https://support.huaweicloud.com/usermanual-iam5/public_sys-resources/caution_3.0-zh-cn.png)
通过联邦身份认证获取的访问权限基于临时安全凭证，这些凭证具有有限的有效期，可降低长期凭证泄露带来的安全风险。但是您仍需要结合**最小权限原则**配置IAM信任委托权限，并对身份提供商进行严格的访问控制与审计。
如果您在未启用IAM Identity Center的情况下使用单个华为云账号，可以将IAM与外部身份提供商(IdP)集成，由IdP通过SAML2.0或OpenID Connect(OIDC)向华为云提供身份信息。常见的SAML身份提供商包括Shibboleth和Active Directory Federation Services，常见的OIDC身份提供商包括Google、Microsoft Entra ID和Github Actions等。
使用身份提供商后，您可以使用IdP提供的登录系统或用户身份管理功能。外部用户通过IdP完成身份验证后，即可根据授权访问华为云资源。该方式还可以提升安全性，因为无需在应用程序中分发或嵌入长期凭证（如访问密钥），而是使用具有时效性的临时安全凭证。
#### 基本概念
下面为您介绍身份提供商的一些基本概念。
表1基本概念 
| 概念                                                                         | 说明                                                                                                                                                                                                                                                                                                                                |
|:---|:---|
| 身份提供商（Identity Provider，简称IdP）                                             | 负责收集、存储用户身份信息，如用户名、密码等，在用户登录时负责认证用户的服务。在企业与华为云联邦身份认证的过程中，身份提供商指企业自身的身份提供商，目前常用的第三方IdP有Microsoft Active Directory（AD FS）、Shibboleth。                                                                                                                                                                                               |
| 服务提供商（Service Provider，简称SP）                                               | 服务提供商通过与身份提供商IdP建立信任关系，使用IdP提供的用户信息，为用户提供具体的服务。在企业与华为云联邦身份认证的过程中，服务提供商指华为云。                                                                                                                                                                                                                                                       |
| 联邦身份认证                                                                     | 身份提供商IdP与服务提供商SP建立信任关系并完成交互流程，实现用户单点登录的过程，称之为联邦身份认证。                                                                                                                                                                                                                                                                              |
| 单点登录（Single Sign-On，简称SSO）                                                 | 用户在身份提供商IdP系统登录后，就可以通过跳转链接访问已建立互信关系的服务提供商SP系统，这一过程称之为单点登录。如：企业身份系统与华为云建立互信关系后，企业身份系统中的用户通过华为云提供的登录入口，使用已有的账号密码在企业身份系统中登录后，即可跳转访问华为云。                                                                                                                                                                                              |
| SAML 2.0                                                                   | 安全断言标记语言（Security Assertion Markup Language 2.0，缩写为SAML 2.0）是一个由一组协议组成，用来传输安全声明的XML框架。SAML2.0是由标准化组织OASIS提出的用于安全操作的标准，是很多身份提供商 （IdP）使用的一种开放标准，关于SAML2.0的详细描述请参见：[SAML 2.0技术概述](https://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0.html)。IAM支持使用SAML2.0协议进行联邦身份认证，与华为云完成SAML联邦身份认证的企业IdP也需要支持SAML2.0协议。 |
| SAML断言（SAML assertion）                                                     | SAML协议中用来描述认证请求和认证响应的核心元素。例如：用户的具体属性就包含在认证响应的断言里。                                                                                                                                                                                                                                                                                 |
| 信任（Trust）                                                                  | 建立在SP和IdP之间的互信机制，通常由公钥和私钥来实现。SP通过可信的方式获取IdP的SAML元数据，元数据中包含IdP签发SAML断言的签名验证公钥，SP则使用公钥来验证断言的完整性。                                                                                                                                                                                                                                    |
| OIDC                                                                       | OIDC是OpenID Connect的简称，是一个基于OAuth 2.0协议的身份认证标准协议。IAM支持使用OIDC1.0协议进行联邦身份认证，与华为云完成OIDC联邦身份认证的企业IdP也需要支持OIDC 1.0协议。关于OIDC的详细描述请参见：[欢迎使用OpenID Connect](https://openid.net/connect/)。                                                                                                                                                 |
| OIDC令牌                                                                     | OIDC可以给应用签发代表登录用户的身份令牌，即OIDC令牌（ID Token）。OIDC令牌用于获取登录用户的基本信息。                                                                                                                                                                                                                                                                     |
| 客户端ID                                                                      | 应用在外部身份提供商(IdP)注册时，会生成一个客户端ID(Client ID)。当您向IdP请求签发OIDC令牌时，必须使用该客户端ID，OIDC令牌中的aud（Audience）字段会携带该值。在华为云中创建OIDC身份提供商时，需要配置该客户端ID；在使用OIDC令牌调用STS获取临时安全凭证时，华为云会校验令牌中aud字段的值是否与已配置的客户端ID一致。只有校验通过，才允许切换到对应的信任委托。                                                                                                                      |
| 验证指纹                                                                       | 为了防止颁发者URL被恶意劫持或篡改，您需要为外部身份提供商(IdP)配置基于HTTPS CA证书生成的验证指纹。在华为云中，系统会自动计算该指纹，但建议您在本地使用工具（例如OpenSSL）自行计算OIDC IdP的证书指纹，并与平台计算结果进行比对。如果两者不一致，则可能存在中间人攻击或证书被篡改的风险，应立即停止配置并重新验证颁发者URL的真实性，确保填写的指纹准确无误。                                                                                                                                    |
| 颁发者URL                                                                     | 颁发者URL由外部身份提供商提供，统一使用 OIDC令牌。颁发者URL必须以https开头，符合标准URL格式，但不允许带有query参数（以?标识）、fragment片段（以#标识）和登录信息（以@标识）。                                                                                                                                                                                                                          |
| [临时安全凭证](https://support.huaweicloud.com/usermanual-iam5/iam_01_1236.html) | STS（Security Token Service）是华为云提供的一种临时访问权限管理服务，通过STS获取可以自定义时效和访问权限的临时安全凭证。                                                                                                                                                                                                                                                        |
   
#### 信任委托SSO
IAM 支持基于SAML 2.0和OIDC的两种信任委托SSO：
- SAML信任委托SSO：华为云通过IdP颁发的SAML断言确定企业用户在华为云上可以使用的IAM信任委托。企业用户登录后，使用SAML断言中指定的IAM信任委托访问华为云资源。请参见[基于SAML协议的信任委托SSO概述](https://support.huaweicloud.com/usermanual-iam5/iam_01_1308.html)。
- OIDC信任委托SSO：企业用户通过IdP签发的OIDC令牌（ID Token），调用华为云API切换指定信任委托并换取信任委托临时安全凭证（STS Security Token），然后使用[临时安全凭证](https://support.huaweicloud.com/usermanual-iam5/iam_01_1236.html)安全地访问华为云资源。更多信息，请参见[基于OIDC协议的信任委托SSO概述](https://support.huaweicloud.com/usermanual-iam5/iam_01_1321.html)。
 
