
# 通过OneAccess免密登录单个华为云账号（SAML-IAM用户SSO）
本文以SAML协议为例介绍如何实现使用OneAccess免密登录单个华为云账号。如需了解华为云身份提供商详情，请参考[身份提供商概述](https://support.huaweicloud.com/usermanual-iam/iam_08_0001.html)。
#### 在华为云上创建身份提供商
在华为云控制台创建身份提供商，配置身份提供商的元数据文件后，可以在华为云中建立对OneAccess的信任关系。
1. 登录OneAccess管理门户，下载OneAccess系统的元数据文件（metadata文件）。 
   1. 登录OneAccess管理门户。
   
   2. 在导航栏中，选择"设置 \> 服务配置"。
   
   3. 在"服务配置"页面，单击"IDP配置"。
   
   4. 在弹出的IDP配置页面，单击右上角的"下载IDP元数据"，数据会自动保存。
   
   
   
   
2. 参考[在华为云上创建身份提供商](https://support.huaweicloud.com/usermanual-iam/iam_08_0003.html#section2)创建身份提供商 ，其中"类型"选择"IAM用户SSO"。
   
   ![](https://support.huaweicloud.com/bestpractice-oneaccess/public_sys-resources/note_3.0-zh-cn.png)
   - 身份提供商名称不能重复，建议以域名唯一标识命名。
   
   - IAM用户SSO定义可参考[虚拟用户SSO与IAM用户SSO的适用场景](https://support.huaweicloud.com/usermanual-iam/iam_08_0251.html)。
   
   - 一个华为云账号只能存在"IAM用户SSO"和"虚拟用户SSO"中的一种类型的身份提供商。
    
   
   
3. 获取华为云登录链接。
   
   ![](https://support.huaweicloud.com/bestpractice-oneaccess/zh-cn_image_0000002142241141.png)
   
   
4. 参考[在华为云上配置元数据文件](https://support.huaweicloud.com/usermanual-iam/iam_08_0003.html#section3)把OneAccess IdP的Metadata文件配置到华为云。
5. 参考[配置外部身份ID](https://support.huaweicloud.com/usermanual-iam/iam_08_0257.html)在华为云上配置IAM用户的外部身份ID，建立OneAccess用户和IAM用户的对应关系。
#### 建立OneAccess对华为云的信任关系
在OneAccess中配置华为云的元数据文件，以建立OneAccess对华为云的信任。
1. 在OneAccess上添加华为云应用。 
   1. 登录OneAccess管理门户，选择"资源 \> 应用"。
   
   2. 在应用页面，单击"新增预集成应用"。
   
   3. 在新增预集成应用页面，单击"华为云"应用。
   
   4. 在弹出的添加应用页面，确认通用信息，单击"下一步"。
   
   5. 在认证参数配置页面，选择"导入SP应用元数据 \> 选择文件"，选择获取的华为云元数据文件。系统会自动上传文件并提取元数据。
      ![](https://support.huaweicloud.com/bestpractice-oneaccess/public_sys-resources/note_3.0-zh-cn.png)
      - 预集成应用为OneAccess专业版用户功能，如果是OneAccess基础版用户，请参考[在OneAccess中添加企业应用](https://support.huaweicloud.com/bestpractice-oneaccess/oneaccess_05_0022.html#oneaccess_05_0022__section8919141211415)创建自定义应用后进行[1.e]操作。
      
      - 在<https://auth.huaweicloud.com/authui/saml/metadata.xml>下载华为云元数据文件，并设置文件名称，例如"SP-metadata.xml"。
      
      - OneAccess同时支持"选取文件"和"手动输入配置数据"方式配置元数据，了解详情请参考[在OneAccess中配置元数据文件](https://support.huaweicloud.com/bestpractice-oneaccess/oneaccess_05_0022.html#oneaccess_05_0022__section7213193111510)。
        
   
   6. 待"选取文件"变为"√"时，代表系统已提取元数据，单击"下一步"，成功添加华为云应用。
   
   7. 在认证集成页面，在"参数配置"页签，单击"编辑"，将"Single Logout URL"对应值中的"/saml/LogoutServiceHTTPRedirect"替换为"/logout"。
   
   
   
   
2. 配置OneAccess与华为云之间的映射关系。 
   1. 单击已添加的华为云应用，在应用信息页面，单击应用图标，进入应用详情页面。
   
   2. 选择"认证集成 \> 映射配置"，进入映射配置页面。
   
   3. 单击"添加映射"，添加应用属性名为"IAM_SAML_Attributes_xUserId"的映射，建立OneAccess与华为云之间的属性映射。映射对象可以是OneAccess中用户已有的属性，也可以是新增的自定义属性，必须和[5]中添加的IAM用户的外部身份ID一致。
   
   
   
   
3. 在OneAccess中配置华为云登录入口。 
   在华为云应用详情页面，选择"登录配置 \> 网站应用"，单击"编辑"，将挂接URL替换为[3]中获取的"登录链接"，单击"确定"保存此次编辑。
   图1编辑挂接URL   
   ![](https://support.huaweicloud.com/bestpractice-oneaccess/zh-cn_image_0000001679958525.png)
   ![](https://support.huaweicloud.com/bestpractice-oneaccess/public_sys-resources/note_3.0-zh-cn.png)
   如果需要跳转华为云Console中的特定业务页面，需要对华为云创建的身份提供商的"登录链接"进行拼接后填入挂接URL中，此处以跳转CodeArts服务页面为例进行说明：
   华为云创建的身份提供商的"登录链接"为：https://auth.huawei.com/authui/federation/websso?domain_id=e35f94\*\*\*\*\*\*\*\*\*\*\*\*14839c\&idp=SAML-OneAccess\&protocol=saml
   CodeArts服务地址为：https://console.huaweicloud.com/devcloud/?locale=zh-cn#
   如果服务地址中带有"agencyId=\*\*\*\&"字段，需要将该字段删除后，使用"\&service="将两个地址进行拼接后填入挂接URL中：
   
   https://auth.huawei.com/authui/federation/websso?domain_id=e35f94\*\*\*\*\*\*\*\*\*\*\*\*14839c\&idp=SAML-OneAccess\&protocol=saml\&service=https://console.huaweicloud.com/devcloud/?locale=zh-cn#
   
   
4. 在OneAccess给用户授予华为云访问权限。 
   在华为云应用详情页面，选择"授权管理 \> 应用账号"，单击"添加账号"，按需勾选账号，单击"保存"，所选用户即可在OneAccess中免密访问华为云。
   
   
 
#### OneAccess用户登录验证
在OneAccess中授予华为云应用访问权限的用户，登录OneAccess用户门户，单击华为云应用即可进入华为云控制台首页访问云服务。
