云服务器内容精选

  • 操作步骤 在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设定的地址。
  • 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为例),具体方法请参见:创建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设定的地址。