云服务器内容精选

  • 多因素认证支持的设备 多因素认证设备支持手机、邮箱、虚拟MFA和安全密钥。 虚拟MFA:虚拟MFA是能产生6位数字认证码的设备,遵循基于时间的一次性密码 (TOTP)标准。基于软件的虚拟MFA,即虚拟MFA应用程序,可以在移动硬件设备(包括智能手机)上运行,非常方便。启用虚拟MFA后,当需要验证身份时,还需要输入来自MFA设备的动态验证码,从而实现双因素安全认证。 安全密钥:安全密钥是基于物理设备的双因素认证,使用双因子(密码+硬件介质)保护用户的账号和隐私。华为云当前支持基于FIDO身份验证协议和Windows Hello的安全密钥。启用FIDO类型的硬件MFA(如Yubikey)后,当需要验证身份时,还需要在当前计算机中插入该设备,并触摸后进行验证。启用Windows Hello的安全密钥后,当需要验证身份时,需要提供指纹、PIN码或 人脸识别 进行验证。
  • 多因素认证应用的场景 多因素认证主要应用于登录保护以及操作保护。 IAM 用户绑定虚拟MFA可以应用于登录保护和操作保护,而绑定安全密钥只能应用于登录保护。若开启多因素认证,则管理控制台和REST API均会受到影响。 登录保护:您以及账号中的IAM用户登录时,除了在登录页面输入用户名和密码外,还需要在登录验证页面输入多因素认证设备中的验证码,再次确认登录者身份,进一步提高账号安全性。 操作保护:您以及账号中的IAM用户进行敏感操作时,例如删除弹性云服务器资源,需要输入多因素认证设备中的验证码对操作进行确认,避免误操作带来的风险和损失。 更多有关登录保护和操作保护的介绍,请参见:开启或关闭敏感操作。
  • 什么是多因素认证 多因素认证是一种非常简单的安全实践方法,它能够在用户名称和密码之外再额外增加一层保护。启用多因素认证后,用户进行操作时,除了需要提供用户名和密码外(第一次身份验证),还需要提供验证码(第二次身份验证),多因素身份认证结合起来将为您的账号和资源提供更高的安全保护。 多因素认证主要应用在登录验证和操作保护中,开启了登录验证功能后,用户登录控制台时,除了需要输入用户名和密码外,还需要在登录验证页面输入验证码;开启了操作保护后,用户进行敏感操作时,需要输入验证码确认操作。
  • 操作步骤 在DomainA中创建IAM用户(用户名以UserB为例),具体方法请参见:创建IAM用户。 (可选)将用户UserB加入用户组中(用户组名以GroupC为例),并为用户组授予必要的权限,具体方法请参见:创建用户组并授权 将UserB的访问密钥或用户名和密码(推荐使用访问密钥)配置到企业IdP的配置文件中,以便获取用户认证token。为了保障您的账号安全,密码和访问密钥建议加密存储。 企业管理员登录企业管理系统后,访问自定义代理,从用户列表中选择需要登录华为云的企业用户,具体操作请参见企业管理系统帮助文档。此处以企业管理员选择2中配置的用户UserB为例。 自定义代理的用户列表是在华为账号下的IAM用户列表,将IAM用户的访问密钥或用户名和密码(推荐使用访问密钥)配置到企业IdP的配置文件中,即可将这些用户按需赋予不同企业用户。 企业IdP自定义代理携带IAM用户UserB的token调用API(POST /v3.0/OS-CREDENTIAL/securitytokens),获取临时访问密钥和securityToken,调用方法请参见:通过token获取临时访问密钥和securitytoken。 企业IdP自定义代理携带获取到的临时访问密钥和securitytoken通过全局 域名 (iam.myhuaweicloud.com)调用API(POST /v3.0/OS-AUTH/securitytoken/logintokens)获取登录票据loginToken。登录票据位于Response Header中的X-Subject-LoginToken。获取方式请参见:获取自定义代理登录票据。 调用API(POST /v3.0/OS-AUTH/securitytoken/logintokens)获取登录票据loginToken时,需要使用全局域名:iam.myhuaweicloud.com。 logintoken是系统颁发给自定义代理用户的登录票据,承载用户的身份、session等信息,默认有效期为10分钟。 调用API(POST /v3.0/OS-AUTH/securitytoken/logintokens)时可以设置logintoken的有效时间,有效时间设置范围为10分钟~12小时。如果传入的值大于临时安全凭证securitytoken剩余的过期时间,则使用临时安全凭证securitytoken剩余的过期时间。 企业IdP自定义代理根据如下规范创建云服务代理登录地址,并作为Location返回给浏览器: https://auth.huaweicloud.com/authui/federation/login?idp_login_url={enterprise_system_loginURL}&service={console_service_region_url}&logintoken={logintoken} 示例: https://auth.huaweicloud.com/authui/federation/login?idp_login_url=https%3A%2F%2Fexample.com&service=https%3a%2f%2fconsole.huaweicloud.com%2fapm%2f%3fregion%3dcn-north-4%23%2fapm%2fatps%2ftopology&logintoken=****** 表1 参数说明 参数 说明 idp_login_url 企业管理系统登录地址。 service 需要访问的华为云服务地址。 logintoken 自定义代理登录票据。 您可以参考以下Demo示例创建云服务登录地址:使用token方式创建云服务登录地址 云服务代理登录地址中包含从IAM获得的登录票据loginToken,loginToken用于对访问的用户进行身份验证。云服务代理登录地址中每个参数的值都需要经过UrlEncode编码。 华为云认证登录票据loginToken成功后,浏览器自动重定向到需要访问的华为云服务地址,即云服务代理登录地址中service设定的地址,企业用户成功访问华为云的控制台。 loginToken认证失败,则重定向到idp_login_url设定的地址。
  • Java示例代码 以下示例说明了如何使用java编程的方式创建云服务登录地址FederationProxyUrl,该示例基于华为云 Java 软件开发工具包(Java SDK)开发。 import java.net.*; import java.util.Collections; import com.huaweicloud.sdk.core.auth.GlobalCredentials; import com.huaweicloud.sdk.core.exception.ClientRequestException; import com.huaweicloud.sdk.core.exception.ServerResponseException; import com.huaweicloud.sdk.core.http.HttpConfig; import com.huaweicloud.sdk.iam.v3.IamClient; import com.huaweicloud.sdk.iam.v3.model.*; // 使用全局域名获取自定义代理登录票据 String endpoint = "https://iam.myhuaweicloud.com"; // 配置客户端属性 HttpConfig config = HttpConfig.getDefaultHttpConfig() .withIgnoreSSLVerification(true) .withProxyHost("proxy.huawei.com") .withProxyPort(8080); // 使用IAM userB的domainID/ak/sk,初始化指定IAM客户端 {Service}Client,用户B的创建方式见“创建IAM用户”章节 IamClient iamClient = IamClient.newBuilder().withCredential(new GlobalCredentials() .withDomainId("domainId") .withAk("ak") .withSk("sk")) .withEndpoint(endpoint) .withHttpConfig(config) .build(); /*CreateTemporaryAccessKeyByAgency 调用通过委托获取临时访问密钥和securitytoken接口获取具有临时身份的访问密钥和securityToken。 访问密钥和securitytoken的默认有效期为900秒,即15分钟,取值范围为15分钟-24小时,这里设置有效期为3600秒,即一小时。 注意: 下一步获取自定义代理登录票据logintoken时,如果您设置了有效期,则有效期不能大于这里获取的securitytoken的剩余有效时间。 */ IdentityAssumerole identityAssumerole = new IdentityAssumerole(). withAgencyName("testagency").withDomainId("0525e2c87exxxxxxx").withSessionUser(new AssumeroleSessionuser().withName("ExternalUser")).withDurationSeconds(3600); AgencyAuth agencyAuth = new AgencyAuth().withIdentity(new AgencyAuthIdentity().withAssumeRole(identityAssumerole). withMethods(Collections.singletonList(AgencyAuthIdentity.MethodsEnum.fromValue("assume_role")))); CreateTemporaryAccessKeyByAgencyRequestBody createTemporaryAccessKeyByAgencyRequestBody = new CreateTemporaryAccessKeyByAgencyRequestBody().withAuth(agencyAuth); CreateTemporaryAccessKeyByAgencyResponse createTemporaryAccessKeyByAgencyResponse = iamClient.createTemporaryAccessKeyByAgency(new CreateTemporaryAccessKeyByAgencyRequest().withBody(createTemporaryAccessKeyByAgencyRequestBody)); Credential credential = createTemporaryAccessKeyByAgencyResponse.getCredential(); /*CreateLoginToken 获取自定义代理登录票据logintoken。 logintoken是系统颁发给自定义代理用户的登录票据,承载用户的身份、session等信息。 调用自定义代理URL登录云服务控制台时,可以使用本接口获取的logintoken进行认证。 自定义代理登录票据logintoken的有效期默认为600秒,即10分钟,取值范围为10分钟-12小时,这里设置为1800秒,即半小时。 注意:自定义代理登录票据logintoken的有效期不能大于上一步获取的securitytoken的剩余有效时间。 通过委托获取securitytoken时,请求体中必须填写session_user.name参数。 */ CreateLoginTokenRequestBody createLoginTokenRequestBody = new CreateLoginTokenRequestBody(). withAuth(new LoginTokenAuth().withSecuritytoken(new LoginTokenSecurityToken(). withAccess(credential.getAccess()). withId(credential.getSecuritytoken()). withSecret(credential.getSecret()).withDurationSeconds(1800))); CreateLoginTokenResponse createLoginTokenResponse = iamClient.createLoginToken(new CreateLoginTokenRequest().withBody(createLoginTokenRequestBody)); String loginToken = createLoginTokenResponse.getXSubjectLoginToken(); //自定义代理登录地址 String authURL = "https://auth.huaweicloud.com/authui/federation/login"; //企业管理系统登录地址 String enterpriseSystemLoginURL = "https://example.com/"; //需要访问的华为云服务地址 String targetConsoleURL = "https://console.huaweicloud.com/iam/?region=cn-north-4"; //创建云服务登录地址FederationProxyUrl,作为Location返回给浏览器 String FederationProxyUrl = authURL + "?idp_login_url=" + URLEncoder.encode(enterpriseSystemLoginURL, "UTF-8") + "&service=" + URLEncoder.encode(targetConsoleURL, "UTF-8") + "&logintoken=" +URLEncoder.encode(loginToken, "UTF-8");
  • Python示例代码 以下示例说明了如何使用Python编程的方式创建云服务登录地址FederationProxyUrl,该示例基于华为云开发者 Python 软件开发工具包 (Python SDK)开发。 from huaweicloudsdkcore.auth.credentials import GlobalCredentials from huaweicloudsdkcore.http.http_config import HttpConfig from huaweicloudsdkiam.v3 import * import urllib # 使用全局域名获取自定义代理登录票据 endpoint = "https://iam.myhuaweicloud.com" # 配置客户端属性 config = HttpConfig.get_default_config() config.ignore_ssl_verification = True config.proxy_protocol = "https" config.proxy_host = "proxy.huawei.com" config.proxy_port = 8080 credentials = GlobalCredentials(ak, sk, domain_id) # 使用IAM userB的domainID/ak/sk,初始化指定IAM客户端 {Service}Client,用户B的创建方式见“创建IAM用户”章节 client = IamClient().new_builder(IamClient) \ .with_http_config(config) \ .with_credentials(credentials) \ .with_endpoint(endpoint) \ .build() # CreateTemporaryAccessKeyByAgency # 调用通过委托获取临时访问密钥和securitytoken接口获取具有临时身份的访问密钥和securityToken # 访问密钥和securitytoken的默认有效期为900秒,即15分钟,取值范围为15分钟-24小时,这里设置有效期为3600秒,即一小时。 # 注意: 下一步获取自定义代理登录票据logintoken时,如果您设置了有效期,则有效期不能大于这里获取的securitytoken的剩余有效时间。 # 通过委托获取securitytoken时,请求体中必须填写session_user.name参数。 assume_role_session_user = AssumeroleSessionuser(name="ExternalUser") identity_assume_role = IdentityAssumerole(agency_name="testagency", domain_id="0525e2c87exxxxxxx", session_user=assume_role_session_user, duration_seconds=3600) identity_methods = ["assume_role"] body = CreateTemporaryAccessKeyByAgencyRequestBody( AgencyAuth(AgencyAuthIdentity(methods=identity_methods, assume_role=identity_assume_role))) request = CreateTemporaryAccessKeyByAgencyRequest(body) create_temporary_access_key_by_agency_response = client.create_temporary_access_key_by_agency(request) credential = create_temporary_access_key_by_agency_response.credential # CreateLoginToken # 获取自定义代理登录票据logintoken。 # 自定义代理登录票据logintoken的有效期默认为600秒,即10分钟,取值范围为10分钟-12小时,这里设置为1800秒,即半小时。 # 注意:自定义代理登录票据logintoken的有效期不能大于上一步获取的securitytoken的剩余有效时间。 login_token_security_token = LoginTokenSecurityToken(access=credential.access, secret=credential.secret, id=credential.securitytoken, duration_seconds=1800) body = CreateLoginTokenRequestBody(LoginTokenAuth(login_token_security_token)) request = CreateLoginTokenRequest(body) create_login_token_response = client.create_login_token(request) login_token = create_login_token_response.x_subject_login_token # 获取自定义代理登录票据URL auth_URL = "https://auth.huaweicloud.com/authui/federation/login" # 企业管理系统登录地址 enterprise_system_login_URL = "https://example.com/" # 需要访问的华为云服务地址 target_console_URL = "https://console.huaweicloud.com/iam/?region=cn-north-4" # 创建云服务登录地址FederationProxyUrl,作为Location返回给浏览器。 FederationProxyUrl = auth_URL + "?idp_login_url=" + urllib.parse.quote( enterprise_system_login_URL) + "&service=" + urllib.parse.quote( target_console_URL) + "&logintoken=" + urllib.parse.quote(login_token) print(FederationProxyUrl)
  • Java示例代码 以下示例说明了如何使用java编程的方式创建云服务登录地址FederationProxyUrl,该示例基于华为云 Java 软件开发工具包(Java SDK)开发。 import java.net.URLEncoder; import java.util.Collections; import com.huaweicloud.sdk.core.auth.GlobalCredentials; import com.huaweicloud.sdk.core.http.HttpConfig; import com.huaweicloud.sdk.core.exception.*; import com.huaweicloud.sdk.iam.v3.IamClient; import com.huaweicloud.sdk.iam.v3.model.*; //使用全局域名获取自定义代理登录票据 String endpoint = "https://iam.myhuaweicloud.com"; //配置客户端属性 HttpConfig config = HttpConfig.getDefaultHttpConfig() .withIgnoreSSLVerification(true) .withProxyHost("proxy.huawei.com") .withProxyPort(8080); // 使用IAM userB的domainID/ak/sk,初始化指定IAM客户端 {Service}Client,用户B的创建方式见“创建IAM用户”章节 IamClient iamClient = IamClient.newBuilder().withCredential(new GlobalCredentials() .withDomainId(domainId) .withAk(ak) .withSk(sk)) .withEndpoint(endpoint) .withHttpConfig(config) .build(); /*CreateTemporaryAccessKeyByToken 调用通过token获取临时访问密钥和securitytoken接口获取具有临时身份的访问密钥和securitytoken。 访问密钥和securitytoken的默认有效期为900秒,即15分钟,取值范围为15分钟-24小时,这里设置有效期为3600秒,即一小时。 注意: 下一步获取自定义代理登录票据logintoken时,如果您设置了有效期,则有效期不能大于这里获取的securitytoken的剩余有效时间。 */ TokenAuthIdentity tokenAuthIdentity = new TokenAuthIdentity().withMethods(Collections.singletonList(TokenAuthIdentity.MethodsEnum.fromValue("token"))).withToken(new IdentityToken().withDurationSeconds(3600)); CreateTemporaryAccessKeyByTokenRequestBody createTemporaryAccessKeyByTokenRequestBody = new CreateTemporaryAccessKeyByTokenRequestBody().withAuth(new TokenAuth().withIdentity(tokenAuthIdentity)); CreateTemporaryAccessKeyByTokenResponse createTemporaryAccessKeyByTokenResponse = iamClient.createTemporaryAccessKeyByToken(new CreateTemporaryAccessKeyByTokenRequest().withBody(createTemporaryAccessKeyByTokenRequestBody)); Credential credential = createTemporaryAccessKeyByTokenResponse.getCredential(); /*CreateLoginToken 获取自定义代理登录票据logintoken。 logintoken是系统颁发给自定义代理用户的登录票据,承载用户的身份、session等信息。 调用自定义代理URL登录云服务控制台时,可以使用本接口获取的logintoken进行认证。 自定义代理登录票据logintoken的有效期默认为600秒,即10分钟,取值范围为10分钟-12小时,这里设置为1800秒,即半小时。 注意:自定义代理登录票据logintoken的有效期不能大于上一步获取的securitytoken的剩余有效时间。 */ CreateLoginTokenRequestBody createLoginTokenRequestBody = new CreateLoginTokenRequestBody(). withAuth(new LoginTokenAuth().withSecuritytoken(new LoginTokenSecurityToken(). withAccess(credential.getAccess()). withId(credential.getSecuritytoken()). withSecret(credential.getSecret()).withDurationSeconds(1800))); CreateLoginTokenResponse createLoginTokenResponse = iamClient.createLoginToken(new CreateLoginTokenRequest().withBody(createLoginTokenRequestBody)); String loginToken = createLoginTokenResponse.getXSubjectLoginToken(); //获取自定义代理登录票据URL String authURL = "https://auth.huaweicloud.com/authui/federation/login"; //企业管理系统登录地址 String enterpriseSystemLoginURL = "https://example.com/"; //需要访问的华为云服务地址 String targetConsoleURL = "https://console.huaweicloud.com/iam/?region=cn-north-4"; //创建云服务登录地址FederationProxyUrl,作为Location返回给浏览器。 String FederationProxyUrl = authURL + "?idp_login_url=" + URLEncoder.encode(enterpriseSystemLoginURL, "UTF-8") + "&service=" + URLEncoder.encode(targetConsoleURL, "UTF-8") + "&logintoken=" +URLEncoder.encode(loginToken, "UTF-8");
  • Python示例代码 以下示例说明了如何使用Python编程的方式创建云服务登录地址FederationProxyUrl,该示例基于华为云开发者 Python 软件开发工具包 (Python SDK)开发。 from huaweicloudsdkcore.auth.credentials import GlobalCredentials from huaweicloudsdkcore.http.http_config import HttpConfig from huaweicloudsdkiam.v3 import * import urllib # 使用全局域名获取自定义代理登录票据 endpoint = "https://iam.myhuaweicloud.com" # 配置客户端属性 config = HttpConfig.get_default_config() config.ignore_ssl_verification = True config.proxy_protocol = "https" config.proxy_host = "proxy.huawei.com" config.proxy_port = 8080 credentials = GlobalCredentials(ak, sk, domain_id) # 使用IAM userB的domainID/ak/sk,初始化指定IAM客户端 {Service}Client,用户B的创建方式见“创建IAM用户”章节 client = IamClient().new_builder(IamClient) \ .with_http_config(config) \ .with_credentials(credentials) \ .with_endpoint(endpoint) \ .build() # CreateTemporaryAccessKeyByToken # 调用通过token获取临时访问密钥和securitytoken接口获取具有临时身份的访问密钥和securityToken # 访问密钥和securitytoken的默认有效期为900秒,即15分钟,取值范围为15分钟-24小时,这里设置有效期为3600秒,即一小时。 # 注意: 下一步获取自定义代理登录票据logintoken时,如果您设置了有效期,则有效期不能大于这里获取的securitytoken的剩余有效时间。 identity_methods = ["token"] identity_token = IdentityToken(duration_seconds=3600) body = CreateTemporaryAccessKeyByTokenRequestBody( TokenAuth(TokenAuthIdentity(methods=identity_methods, token=identity_token))) request = CreateTemporaryAccessKeyByTokenRequest(body) create_temporary_access_key_by_token_response = client.create_temporary_access_key_by_token(request) credential = create_temporary_access_key_by_token_response.credential # CreateLoginToken # 获取自定义代理登录票据logintoken。 # logintoken是系统颁发给自定义代理用户的登录票据,承载用户的身份、session等信息。 # 调用自定义代理URL登录云服务控制台时,可以使用本接口获取的logintoken进行认证。 # 自定义代理登录票据logintoken的有效期默认为600秒,即10分钟,取值范围为10分钟-12小时,这里设置为1800秒,即半小时。 # 注意:自定义代理登录票据logintoken的有效期不能大于上一步获取的securitytoken的剩余有效时间。 login_token_security_token = LoginTokenSecurityToken(access=credential.access, secret=credential.secret, id=credential.securitytoken, duration_seconds=1800) body = CreateLoginTokenRequestBody(LoginTokenAuth(login_token_security_token)) request = CreateLoginTokenRequest(body) create_login_token_response = client.create_login_token(request) login_token = create_login_token_response.x_subject_login_token #自定义代理登录地址 auth_URL = "https://auth.huaweicloud.com/authui/federation/login" #企业管理系统登录地址 enterprise_system_login_URL = "https://example.com/" #需要访问的华为云服务地址 target_console_URL = "https://console.huaweicloud.com/iam/?region=cn-north-4" # 创建云服务登录地址FederationProxyUrl,作为Location返回给浏览器。 FederationProxyUrl = auth_URL + "?idp_login_url=" + urllib.parse.quote( enterprise_system_login_URL) + "&service=" + urllib.parse.quote( target_console_URL) + "&logintoken=" + urllib.parse.quote(login_token) print(FederationProxyUrl)
  • 操作步骤 在DomainA中创建IAM用户(用户名以UserB为例),并加入GroupC用户组中,具体方法请参见:用户组添加用户。 请确认该IAM用户支持编程访问华为云服务。如需修改IAM用户访问方式,请参考:管理IAM用户的基本信息。 将UserB的访问密钥或用户名和密码(推荐使用访问密钥)配置到企业IdP的配置文件中,以便获取用户认证token和调用API。为了保障您的账号安全,密码和访问密钥建议加密存储。 在IAM控制台左侧导航栏选择“委托”,单击右上方的“ 创建委托”。 在创建委托页面,设置委托参数。 “委托名称”以“testagency”为例,“委托类型”必须选择“普通账号”,“委托的账号”填写“DomainA”,“持续时间”根据具体情况选择,并单击“下一步”。 图1 创建委托 选择权限的作用范围,勾选需要授予委托的权限,给委托授权。 在企业IdP创建用户组“testagency”(与4中的委托名称相同),将企业本地用户按需加入本地用户组,授予其自定义代理登录华为云时所需权限,具体方法请参见企业IdP帮助文档。 企业本地用户登录企业管理系统后,访问企业IdP的自定义代理,从委托列表(由安全管理员来查询租户的委托列表,根用户默认为安全管理员)中选择所需要使用的委托,具体方法请参见企业管理系统帮助文档。 自定义代理的委托列表是企业IdP创建的用户组名称与华为云创建的委托名称的交集。 企业IdP自定义代理根据委托,携带IAM用户userB的token调用API(POST /v3.0/OS-CREDENTIAL/securitytokens),获取具有临时身份的securityToken,调用方法请参见:通过委托获取临时AK/SK和securitytoken。 通过委托获取securitytoken时,请求体中必须填写session_user.name参数。 企业IdP自定义代理携带获取到的临时AK/SK和securitytoken通过全局域名(iam.myhuaweicloud.com)调用API(POST /v3.0/OS-AUTH/securitytoken/logintokens)获取登录票据loginToken。登录票据位于Response Header中的X-Subject-LoginToken。获取方式请参见:获取自定义代理登录票据。 调用API(POST /v3.0/OS-AUTH/securitytoken/logintokens)获取登录票据loginToken时,需要使用全局域名:iam.myhuaweicloud.com。 logintoken是系统颁发给自定义代理用户的登录票据,承载用户的身份、session等信息,默认有效期为10分钟。调用FederationProxyUrl登录云服务控制台时,需要使用logintoken进行认证。 调用API(POST /v3.0/OS-AUTH/securitytoken/logintokens)时可以设置logintoken的有效时间,有效时间设置范围为10分钟~12小时。如果传入的值大于临时安全凭证securitytoken剩余的过期时间,则使用临时安全凭证securitytoken剩余的过期时间。 企业IdP自定义代理根据规范创建云服务登录地址FederationProxyUrl,作为Location返回给浏览器。FederationProxyUrl如下: https://auth.huaweicloud.com/authui/federation/login?idp_login_url={enterprise_system_loginURL}&service={console_service_region_url}&logintoken={logintoken} 示例: https://auth.huaweicloud.com/authui/federation/login?idp_login_url=https%3A%2F%2Fexample.com&service=https%3a%2f%2fconsole.huaweicloud.com%2fapm%2f%3fregion%3dcn-north-4%23%2fapm%2fatps%2ftopology&logintoken=****** 表1 参数说明 参数 说明 idp_login_url 企业管理系统登录地址。 service 需要访问的华为云服务地址。 logintoken 自定义代理登录票据。 为了浏览器正常识别参数内容,需要将以上三个参数都进行UrlEncode编码。 您可以参考以下Demo示例创建云服务登录地址FederationProxyUrl:使用委托方式创建云服务登录地址 该FederationProxyUrl包含从IAM获得的登录票据,票据用于对访问的用户进行身份验证。FederationProxyUrl需要经过UrlEncode编码。 华为云认证登录票据loginToken成功后,浏览器自动重定向到需要访问的华为云服务地址,即云服务代理登录地址中service设定的地址,企业用户成功访问华为云的控制台。 loginToken认证失败,则重定向到idp_login_url设定的地址。
  • 登录验证 按照登录请求发起方可将联邦用户登录方式分为两类: Idp侧登录:用户从IdP侧(企业自己的身份提供商侧)发起登录请求,例如从Microsoft Active Directory(AD FS)、Shibboleth侧发起登录华为云控制台的请求。 SP侧登录:用户从SP侧(服务提供商侧)发起登录请求,在企业与华为云联邦身份认证的过程中,服务提供商指华为云,SP侧登录链接可在IAM控制台身份提供商详情页面获取。 不同的企业IdP发起Idp侧登录的方式差异较大,华为云帮助文档不做详述,具体操作请参考企业IdP的帮助文档。本节重点介绍SP侧发起登录的方法: 联邦用户登录。 在控制台的“身份提供商”页面,单击“操作”列的“查看”,进入“身份提供商基本信息”页面;单击“登录链接”右侧的“”,在浏览器中打开,输入企业管理系统用户名和密码,登录成功。 图1 登录链接 查看联邦用户是否跳转至实体IAM用户。
  • 跳转到指定区域或服务 如需指定联邦用户登录的目标页面,比如联邦用户登录时,指定跳转到北京四局点, 云监控服务 CES主页。有以下两种配置方式: SP侧登录配置方法 拼接控制台获取的登录链接与经过UrlEncode编码后的指定url地址,拼接格式为“登录链接&service=经过UrlEncode编码后的指定url地址”。例如:获取的登录地址为https://auth.huaweicloud.com/authui/federation/websso?domain_id=XXX&idp=XXX&protocol=saml,指定跳转的控制台地址为https://console.huaweicloud.com/ces/?region=cn-north-4,按照拼接格式拼接得到的登录链接为:https://auth.huaweicloud.com/authui/federation/websso?domain_id=XXX&idp=XXX&protocol=saml&service=https%3A%2F%2Fconsole.huaweicloud.com%2Fces%2F%3Fregion%3Dcn-north-4。 IdP侧登录配置方法 在企业IdP的SAML 断言中配置IAM_SAML_Attributes_redirect_url声明,声明值为指定跳转的目标URL。
  • 常用联邦身份认证配置示例 由于不同的企业IdP的配置存在较大差异,华为云帮助文档对于企业IdP的配置不做详述,具体操作请参考企业IdP的帮助文档。常见IdP与华为云建立联邦身份认证的操作,请参见: 使用Active Directory Federation Services建立与华为云的联邦身份认证 使用Shibboleth IdP建立与华为云的联邦身份认证 使用Azure AD建立与华为云的联邦身份认证 使用 OneAccess 建立与华为云的联合认证
  • 常用的企业IdP配置参数 表1 常用的企业IdP配置参数 参数名 描述 适用场景 IAM_SAML_Attributes_xUserId 选择IAM用户SSO时,企业IdP用户的ID值。 使用IAM SSO时,必须配置此参数。 企业IdP用户与华为云IAM用户一一对应,企业IdP用户的IAM_SAML_Attributes_xUserId值,与对应IAM用户的外部身份ID相同。 IAM_SAML_Attributes_redirect_url 指定联邦登录重定向的目标网址 用户在SSO登录过程中,希望跳转到华为云控制台的指定页面。例如指定跳转到北京四局点, 云监控 服务 CES 主页。 IAM_SAML_Attributes_domain_id 与企业IdP建立联邦认证的华为账号或华为云账号ID值 从企业IdP侧发起联邦认证登录,必须在企业IdP侧配置该参数。 IAM_SAML_Attributes_idp_id 与企业IdP建立联邦认证的华为账号或华为云账号中,创建的身份提供商名称 从企业IdP侧发起联邦认证登录,必须在企业IdP侧配置该参数。
  • 建立企业IdP对华为云的信任关系 在企业IdP中配置华为云的元数据文件,以建立企业IdP对华为云的信任。常用企业IdP,如Microsoft Active Directory(AD FS)和Shibboleth的配置步骤,请参见:与华为云集成第三方IdP解决方案提供商示例。 下载华为云系统的元数据文件(metadata文件)。 访问网址:https://auth.huaweicloud.com/authui/saml/metadata.xml。下载华为云元数据文件,并设置文件名称,例如“SP-metadata.xml”。 将上述文件上传到企业IdP服务器上。上传方法请参见企业IdP的帮助文档。 获取企业IdP的元数据文件。获取方法请参见企业IdP的帮助文档。
  • 在华为云上创建身份提供商 在IAM控制台上创建身份提供商,配置身份提供商的元数据文件后,可以在IAM中建立对企业IdP的信任关系,使得企业用户可以直接访问华为云。 进入IAM控制台,在左侧导航窗格中,选择“身份提供商”页签,单击右上方的“创建身份提供商”。 图1 创建身份提供商 在“创建身份提供商”窗口中设置名称、协议、类型、状态、描述。 图2 填写身份提供商参数 表1 身份提供商基本参数 参数 含义 名称 身份提供商的名称。身份提供商名称在全局范围内不能重复,建议以域名唯一标识命名。 协议 身份提供商协议。当前华为云支持基于SAML、OIDC的身份提供商,如需创建基于OIDC协议的联邦身份认证,请参考基于OIDC协议的虚拟用户SSO。 类型 身份提供商类型。一个账号下只能存在一种类型的身份提供商。本章介绍IAM用户SSO,此处选择IAM用户SSO。 IAM用户SSO:该身份提供商中的用户登录华为云后,系统将自动匹配外部身份ID绑定的对应IAM子用户,从而拥有该子用户所在用户组的权限。一个账号下只能创建一个IAM用户SSO类型的身份提供商。如果选择该类型,请确保您已为用户创建对应的IAM用户并设置外部身份ID,请参考创建IAM用户。 状态 身份提供商的状态。默认设置为“启用”。 单击“确定”,创建身份提供商成功。
提示

您即将访问非华为云网站,请注意账号财产安全