
# 认证鉴权
调用接口有如下两种认证方式，您可以选择其中一种进行认证鉴权。
- Token认证：通过Token认证通用请求。 当调用API网关Silvan接口时，需要采用Token认证方式，需要使用"roles"为"op_service"的token，各服务的管理账号一般都具有op_service权限*。*
  
- AK/SK认证：通过AK（Access Key ID）/SK（Secret Access Key)加密调用请求。 通过API网关向下层服务发送请求时，必须使用AK、SK对请求进行签名。
  
#### Token认证
![](https://support.huaweicloud.com/api-imagesearch/public_sys-resources/note_3.0-zh-cn.png)
Token的有效期为24小时，需要使用一个Token鉴权时，可以先缓存起来，避免频繁调用。
Token在计算机系统中代表令牌（临时）的意思，拥有Token就代表拥有某种权限。Token认证就是在调用API的时候将Token加到请求消息头，从而通过身份认证，获得操作API的权限。
Token可通过调用[获取用户Token](https://support.huaweicloud.com/api-iam/iam_30_0001.html)接口获取，调用本服务API需要project级别的Token，即调用[获取用户Token](https://support.huaweicloud.com/api-iam/iam_30_0001.html)接口时，请求body中auth.scope的取值需要选择project，如下所示。
***username*** 、***domainname*** 的获取请参考[获取账号名和账号ID](https://support.huaweicloud.com/api-imagesearch/imagesearch_02_0036.html)。***password***为用户密码。
![](https://support.huaweicloud.com/api-imagesearch/zh-cn_image_0000001550698836.png)
```
{ 
    "auth": { 
        "identity": { 
            "methods": [ 
                "password" 
            ], 
            "password": { 
                "user": { 
                    "name": "username", 
                    "password": "********", 
                    "domain": { 
                        "name": "domainname" 
                    } 
                } 
            } 
        }, 
        "scope": { 
            "project": { 
                "name": "xxxxxxxx" 
            } 
        } 
    } 
}
```
当调用API网关Silvan接口时，需要获取用户Token并在调用接口时增加"X-Auth-Token"到业务接口请求消息头中。
获取Token后，再调用其他接口时，您需要在请求消息头中添加"X-Auth-Token"，其值即为Token。例如Token值为"ABCDEFJ...."，则调用接口时将"X-Auth-Token: ABCDEFJ...."加到请求消息头即可，如下所示。
```
GET https://iam.cn-north-1.myhuaweicloud.com/v3/auth/projects
Content-Type: application/json 
X-Auth-Token: ABCDEFJ....
```
您还可以通过这个视频教程了解如何使用Token认证：<https://bbs.huaweicloud.com/videos/101333> 。
#### 调用接口步骤
如何调用接口完成Token认证。
1. 发送"POST https://***IAM* *的Endpoint*** /v3/auth/tokens"，获取IAM的Endpoint及消息体中的区域名称，请参见[地区和终端节点](https://developer.huaweicloud.com/endpoint?all)。
   
   请求内容示例如下：
   ```
   {
     "auth": {
       "identity": {
         "methods": [
           "password"
         ],
         "password": {
           "user": {
             "name": "username",  //用户名
             "password": "password",  //密码
             "domain": {
               "name": "domainname"  //账户名
             }
           }
         }
       },
       "scope": {
         "project": {
           "name": "cn-north-1"  //图像搜索所属区域信息
         }
       }
     }
   }
   ```
   ![](https://support.huaweicloud.com/api-imagesearch/public_sys-resources/note_3.0-zh-cn.png)
   请将以上示例代码中的斜体字替换为实际所需要的内容，详情请参考[《统一身份认证服务API参考》](https://support.huaweicloud.com/api-iam/iam_02_0008.html)。
   
   
2. 获取Token，请参考《统一身份认证服务API参考》的"[获取用户Token](https://support.huaweicloud.com/api-iam/iam_30_0001.html)"章节。请求响应成功后在响应消息头中包含的"X-Subject-Token"的值即为Token值。
3. 调用业务接口，在请求消息头中增加"X-Auth-Token"，"X-Auth-Token"的取值为[步骤2]中获取的Token。
 
#### AK/SK认证
![](https://support.huaweicloud.com/api-imagesearch/public_sys-resources/note_3.0-zh-cn.png)
AK/SK签名认证方式仅支持消息体大小12M以内，12M以上的请求请使用Token认证。
AK/SK签名认证通过API网关向下层服务发送请求时，必须使用AK、SK对请求进行签名，参见[API签名指南](https://support.huaweicloud.com/devg-apisign/api-sign-provide.html)。
AK/SK认证就是使用AK/SK对请求进行签名，在请求时将签名信息添加到消息头，从而通过身份认证。
- AK(Access Key ID)：访问密钥ID。与私有访问密钥关联的唯一标识符；访问密钥ID和私有访问密钥一起使用，对请求进行加密签名。
- SK(Secret Access Key)：与访问密钥ID结合使用的密钥，对请求进行加密签名，可标识发送方，并防止请求被修改。
使用AK/SK认证时，您可以基于签名算法使用AK/SK对请求进行签名，也可以使用专门的签名SDK对请求进行签名。详细的签名方法和SDK使用方法请参见[API签名指南](https://support.huaweicloud.com/devg-apisign/api-sign-provide.html)。
![](https://support.huaweicloud.com/api-imagesearch/public_sys-resources/notice_3.0-zh-cn.png)
签名SDK只提供签名功能，与服务提供的SDK不同，使用时请注意。
使用子账号AK/SK的时候需要在header中增加字段X-Domain-Id，填入用户的账号ID。
#### 获取AK/SK
1. 注册并登录图像搜索管理控制台。
2. 在页面右上方用户名的下拉列表中，单击"我的凭证"。在"我的凭证"界面，单击"管理访问密钥"。
3. 单击"新增访问密钥"，弹出"新增访问密钥"对话框。
4. 输入当前用户的登录密码，并通过邮箱或者手机进行验证，输入对应的验证码，单击"确定"，下载访问密钥。 
   ![](https://support.huaweicloud.com/api-imagesearch/public_sys-resources/note_3.0-zh-cn.png)
   - 在统一身份服务中创建的用户，如果创建时未填写邮箱或者手机号，则只需校验登录密码。
   
   - 为防止访问密钥泄露，建议您将其保存到安全的位置。
    
   
   
 
