
# 通过OneAccess免密登录华为云（OIDC）
本文以OIDC协议为例介绍如何实现使用OneAccess免密登录华为云Console中的CodeArts服务页面。
#### 在OneAccess中创建华为云OIDC应用
在OneAccess管理门户中创建华为云OIDC应用，并获取OIDC相关设置，以建立OneAccess云华为云的信任关系。
1. 在OneAccess上添加华为云应用。 
   1. 登录OneAccess管理门户，选择"资源 \> 应用"。
   
   2. 在企业应用页面，单击"添加自建应用"。
   
   3. 输入应用名称，单击"保存"。
   
   
   
   4. 单击新建的应用，进入应用信息页面，获取应用ClientId。
      ![](https://support.huaweicloud.com/bestpractice-oneaccess/zh-cn_image_0000001496715512.png)
      
   
   
   
   
2. 获取OIDC相关配置。 
   1. 登录OneAccess管理门户，选择"设置 \> 服务配置"。
   
   2. 在服务配置页面，单击"OIDC"。
   
   3. 在OIDC页面，单击"OIDC设置"。 ![](https://support.huaweicloud.com/bestpractice-oneaccess/zh-cn_image_0000001513601284.png)
      
   
   
   
   4. 获取issuer、authorization_endpoint、jwks_uri地址。
      ![](https://support.huaweicloud.com/bestpractice-oneaccess/zh-cn_image_0000001513601740.png)
      
   
   5. 将jwks_uri地址复制到浏览器地址栏，获取签名公钥。
      ![](https://support.huaweicloud.com/bestpractice-oneaccess/zh-cn_image_0000001513282948.png)
      
   
   
   
   
 
#### 在华为云上创建身份提供商
在华为云控制台创建身份提供商，配置OneAccess的应用以及OIDC信息后，可以在华为云中建立对OneAccess的信任关系。
1. 参考[在华为云上创建身份提供商](https://support.huaweicloud.com/usermanual-iam/iam_08_0009.html#section2)创建身份提供商 。
   
   ![](https://support.huaweicloud.com/bestpractice-oneaccess/public_sys-resources/note_3.0-zh-cn.png)
   - 身份提供商名称不能重复，建议以域名唯一标识命名。
   
   - 在修改身份提供商页面，填写"配置信息"页面：
     1. "身份提供商URL"填写在OneAccess侧获取的issuer地址，见[2.d]；
     
     2. "授权请求Endpoint"填写在OneAccess侧获取的authorization_endpoint地址，见[2.d]；
     
     3. "客户端ID"填写在OneAccess侧获取的创建的OIDC应用的ClientId，见[1.d]；
     
     4. "签名公钥"填写在OneAccess侧获取的前面公钥（需要将其格式化为json格式），见[2.e]。
      
    
   
   
2. 配置过程中获取登录地址以及redirect uri地址。
   
   ![](https://support.huaweicloud.com/bestpractice-oneaccess/zh-cn_image_0000001591299838.png)
   
   
3. 参考[配置身份转换规则](https://support.huaweicloud.com/usermanual-iam/iam_08_0004.html#section1)在华为云上配置身份转换规则，使得OneAccess用户拥有华为云访问CodeArts云服务的权限。
#### 建立OneAccess对华为云的信任关系
在OneAccess中配置华为云的跳转地址以及redirect uri。
1. 登录OneAccess管理门户，选择"资源 \> 应用"。
2. 在企业应用页面，单击新增的华为云自定义应用。
3. 打开"认证集成"开关，并配置协议为"OIDC"，单击"保存"。 ![](https://support.huaweicloud.com/bestpractice-oneaccess/zh-cn_image_0000001497207560.png)
   
4. 单击"认证集成"后的"配置"，进入OIDC配置页面，"回调地址"配置为[2]中获取的redirect uri值，并打开"隐式授权模式"开关。
   ![](https://support.huaweicloud.com/bestpractice-oneaccess/zh-cn_image_0000001640898801.png)
   
5. 在OneAccess中配置华为云登录入口。 在华为云应用详情页面，选择"登录配置 \> 网站应用"，单击"编辑"，将挂接URL替换为在华为云创建的身份提供商的"登录链接"，单击"确定"保存此次编辑。
   ![](https://support.huaweicloud.com/bestpractice-oneaccess/zh-cn_image_0000001591459418.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=e35f\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*79ba14839c\&idp=one001\&protocol=oidc
   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#
   
6. 在OneAccess给用户授予华为云访问权限。 在华为云应用详情页面，选择"授权管理 \> 应用账号"，单击"添加账号"，按需勾选账号，单击"保存"，所选用户即可在OneAccess中免密访问华为云。
   ![](https://support.huaweicloud.com/bestpractice-oneaccess/public_sys-resources/note_3.0-zh-cn.png)
   华为云"统一身份认证服务"中的用户，邮箱是必填字段，OneAccess系统中授权的用户必须有邮箱字段。
   
 
#### OneAccess用户登录验证
在OneAccess中授予华为云访问权限的用户，登录OneAccess用户门户，单击自定义的华为云应用即可进入华为云中的CodeArts云服务。
