更新时间:2025-08-04 gmt 08:00

认证鉴权-j9九游会登录

appstage调用接口支持ak/sk、api key或token认证鉴权。

  • ak/sk认证:通过ak(access key id)/sk(secret access key)进行api调用时的认证。
  • api key认证:通过api密钥进行api调用时的认证。
  • token认证:通过token认证调用请求。

ak/sk认证

ak/sk认证就是使用ak/sk对请求进行签名,在请求时将签名信息添加到消息头,从而通过身份认证。

  • ak(access key id):访问密钥id。与私有访问密钥关联的唯一标识符;访问密钥id和私有访问密钥一起使用,对请求进行加密签名。
  • sk(secret access key):与访问密钥id结合使用的密钥,对请求进行加密签名,可标识发送方,并防止请求被修改。

使用ak/sk认证时,您可以基于签名算法使用ak/sk对请求进行签名。详细的签名认证操作流程如下。

  1. ak/sk申请

    使用具有管理员权限(admin)账号登录到ai原生应用引擎,从凭证管理进入到ak/sk访问密钥页面,新建ak/sk。

    每个用户只能同时拥有两个ak/sk凭证。

  2. ak/sk下载

    成功创建ak/sk后,会立刻弹出ak/sk凭证下载弹窗,下载后得到凭证文件。

    每个凭证仅能下载一次,且无法找回,请妥善保管凭证文件。

  3. 使用ak/sk鉴权

    在请求头里添加如下header:

    ts: 毫秒时间戳

    nonce: 请求唯一标识(uuid)

    ak: 凭证文件中的ak明文

    resource-code: wiseagent对外开放接口对应的唯一编码,每个接口唯一

    sign: 按如下规则拼接字符串"ts={变量名}&nonce={nonce}&ak={ak}",对拼接得到的字符串plain进行sha256散列后得到散列值hash,再使用凭证中的sk明文对刚才生产的hash进行再散列,最后进行base64转码,得到签名字符串。

    签名样例代码(java):

    public string sha256(string plain) {
    	try {
    		messagedigest messagedigest = messagedigest.getinstance("sha-256");
    		messagedigest.update(plain.getbytes(standardcharsets.utf_8));
    		byte[] bytes = messagedigest.digest();
    		stringbuffer hexbuffer = new stringbuffer();
    		for (byte abyte : bytes) {
    			string hex = integer.tohexstring(0xff & abyte);
    			if (hex.length() == 1) {
    				hexbuffer.append('0');
    			}
    			hexbuffer.append(hex);
    		}
    		return hexbuffer.tostring();
    	} catch (nosuchalgorithmexception ignore) {
    	}
    }
    public string hmacsha256(string hash, string sk) {
    	try {
    		mac hmacsha256 = mac.getinstance("hmacsha256");
    		secretkeyspec secretkeyspec = new secretkeyspec(sk.getbytes(standardcharsets.utf_8), "hmacsha256");
    		hmacsha256.init(secretkeyspec);
    		byte[] bytes = hmacsha256.dofinal(hash.getbytes(standardcharsets.utf_8));
    		return base64.encodebase64string(bytes);
    	} catch (nosuchalgorithmexception | invalidkeyexception ignore) {
    	}
    }

api key认证

api key全称为应用程序接口密钥,是一种用于验证和授权api请求的代码。它通常是一串字符,用于识别调用api的应用程序和开发者。

  1. 获取api key

    以管理员身份登录ai原生应用引擎工作台,参考创建api key获取。

  2. 使用api key鉴权

    调用时,在请求头里新增字段authorization,值填写为bearer ${api key},拼接起来如下所示。

    authorization:bearer sk-5db9*********dd58

token认证

  • token的有效期为24小时,需要使用一个token鉴权时,可以先缓存起来,避免频繁调用。
  • 使用token前请确保token离过期有足够的时间,防止调用api的过程中token过期导致调用api失败。

token在计算机系统中代表令牌(临时)的意思,拥有token就代表拥有某种权限。token认证就是在调用api的时候将token加到请求消息头,从而通过身份认证,获得操作api的权限。

token可通过调用获取用户token接口获取,调用本服务api需要project级别的token,即调用获取用户token接口时,请求body中auth.scope的取值需要选择project,如下所示。

{ 
    "auth": { 
        "identity": { 
            "methods": [ 
                "password" 
            ], 
            "password": { 
                "user": { 
                    "name": "username", 
                    "password": "********", 
                    "domain": { 
                        "name": "domainname" 
                    } 
                } 
            } 
        }, 
        "scope": { 
            "project": { 
                "name": "xxxxxxxx" 
            } 
        } 
    } 
}

获取token后,再调用其他接口时,您需要在请求消息头中添加“x-auth-token”,其值即为获取到的token。例如token值为“abcdefg....”,则调用接口时将“x-auth-token: abcdefg....”加到请求消息头即可,如下所示。

post https://iam.cn-north-4.myhuaweicloud.com/v3.0/os-user/users 
content-type: application/json 
x-auth-token: abcdefg....

您还可以通过这个视频教程了解如何使用token认证: 。

相关文档

网站地图