文档首页 > > 开发指南> 使用IAM认证调用API> Token认证

Token认证

分享
更新时间: 2020/03/26 GMT+08:00

操作场景

当您使用Token认证方式完成认证鉴权时,需要获取用户Token并在调用接口时增加“X-Auth-Token”到业务接口请求消息头中。

调用接口有如下两种认证方式,您可以选择其中一种进行认证鉴权。

  • Token认证:通过Token认证通用请求。
  • AK/SK认证:通过AK(Access Key ID)/SK(Secret Access Key)对调用请求内容进行签名认证。

本节主要从以下几方面介绍Token认证。

调用接口步骤

  1. 发送“POST https://IAM的Endpoint/v3/auth/tokens”,获取IAM的Endpoint及消息体中的区域名称。

    请参考地区和终端节点

    当服务区域名称为“所有”时,选择IAM“中国华北区1”的Endpoint。

    请求内容示例如下:

    下面示例代码中的斜体字需要替换为实际内容,详情请参考《统一身份认证服务API参考》。

    {
      "auth": {
        "identity": {
          "methods": [
            "password"
          ],
          "password": {
            "user": {
              "name": "username", //登录控制台后,从“我的凭证”页面获取“用户名”
              "password": "password",
              "domain": {
                "name": "domainname" //登录控制台后,从“我的凭证”页面获取“账号名”
              }
            }
          }
        },
        "scope": {
          "project": {
            "id": "0215ef11e49d4743be23dd97a1561e91" //登录控制台后,从“我的凭证”页面获取“项目ID”       
          }
        }
      }
    }
  2. 获取Token,请参考《统一身份认证服务API参考》的“获取用户Token”章节。请求响应成功后在响应消息头中包含的“X-Subject-Token”的值即为Token值。

    以下示例为使用Postman工具手工获取Token方案。

    图1 请求示例
    图2 从返回消息的Header中获取X-Subject-Token
  3. 调用业务接口,在请求消息头中增加“X-Auth-Token”,“X-Auth-Token”的取值为2中获取的Token。

接口调用示例

本小节通过调用注册API接口注册一个HTTP类型的API,介绍使用API网关API的基本流程。

  1. 获取相关信息。
  2. 在管理控制台,单击用户名,在下拉列表中单击“我的凭证”,查看“项目ID”。
    图3 查看项目ID
  3. 获取用户Token,并设置成环境变量,Token用于后续调用其他接口鉴权。
    1. 执行以下命令,获取用户Token。
      curl -X POST https://{iam_endpoint}/v3/auth/tokens -H 'content-type: application/json' -d '{
      	"auth": {
      		"identity": {
      			"methods": [
      				"password"
      			],
      			"password": {
      				"user": {
      				"name": "{user_name}",
      					"domain": {
      						"name": "{user_name}"
      					},
      			"password": "{password}"
      				}
      			}
      		},
      		"scope": {
      			"project": {
      				"id": "{project_id}"
      			}
      		}
      	}
      }' -vk

      上述命令中,部分参数请参见以下说明进行修改(具体请参考《统一身份认证服务API参考》):

      • {iam_endpoint}替换为前提条件中获取的IAM的Endpoint。
      • {project_id}替换为前提条件中获取的项目ID。
      • {user_name}和{password}分别替换为连接IAM服务器的用户名和密码。

      响应Header中“X-Subject-Token”的值即为Token:

      X-Subject-Token:MIIDkgYJKoZIhvcNAQcCoIIDgzCCAxxxxxx38CAQExDTALBglghkgBZQMEAgEwg
    2. 使用如下命令将token设置为环境变量,方便后续事项。

      export Token={X-Subject-Token}

      X-Subject-Token即为3.a获取到的token,命令示例如下。

      export Token=MIIDkgYJKoZIhvcNAQcCoIIDgzCCAxxxxxx38CAQExDTALBglghkgBZQMEAgEwg
  4. 调用查询分组列表接口,查询可注册API的API分组列表。

    查询API分组列表的请求消息样例如下:

    curl -X GET https://{apig_endpoint}/v1.0/apigw/api-groups -H 'content-type: application/json' -H "x-auth-token: $Token" -vk

    上述命令中,{apig_endpoint}替换为API网关的Endpoint。

  5. 调用注册API接口注册一个HTTP类型API。
    注册API的请求消息样例如下:
    curl -X POST https://{apig_endpoint}/v1.0/apigw/apis -H 'content-type: application/json' -H "x-auth-token: $Token" -d '{
            "auth_type": "app",
    	"backend_api": {
    		"remark": "web后端API",
    		"req_method": "get",
    		"req_protocol": "https",
    		"req_uri": "/v1.0/apigw/apis",
    		"timeout": 10000,
    		"url_domain": "192.168.1.5",
    		"version": "0.0.1",
    		"vpc_status": 2
    	},
    	"backend_type": "http",
            "group_id": "{group_id}
    	"match_mode": "normal",
    	"name": "查询API列表",
    	"remark": "查询API列表",
    	"req_method": "get",
    	"req_protocol": "https",
    	"req_uri": "/apis",
    	"type": 1,
    	"version": "0.0.1"
    }' -vk

    上述命令中,部分参数请参见以下说明进行修改(其他参数为自定义参数,请根据注册API中的参数解释进行设置):

    • {apig_endpoint}替换为API网关的Endpoint。
    • {group_id}替换为4中查询到的API分组列表中的任一API分组id。
  6. API注册完后,您可以在API网关的管理控制台查看到该API。
    图4 查看API
分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

智能客服提问云社区提问