【AGC】AGC鉴权认证模式获取clientToken的方法

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

 近期有开发者在使用API方式接入Indexing服务时提出疑问如何获取clientToken。其实AGC认证模式是基于clientToken鉴权方式由云侧网关与AGC微服务实现的一套OAuth2标准鉴权体系。访问网关的后端服务需要具备有效的clientId以及clientSecret才能通过云侧网关的鉴权校验并对业务接口发起有效地调用。下面介绍两种获取clientToken的方法。

获取clientId和clientSecret

两种方法的前提都是需要先获取到clientId和clientSecret。

登录AGC控制台选择“用户与访问”。选择“API密钥 > Connect API”点击“创建”新建API客户端。

cke_293.png

api地址和请求参数

api地址https://connect-api.cloud.huawei.com/api/oauth2/v1/token

cke_872.png

方法1postman获取clientToken

第一种方法很简单直接使用postman在Body中输入grant_type、client_id和client_secret的键值对无需添加Headers使用post方式直接发起请求即可获得clientToken。

cke_1696.png

方法2项目中使用代码调用api获取clientToken

调用示例

public static String getToken(String domain, String clientId, String clientSecret) {
    String token = null;
    try {
        HttpPost post = new HttpPost(domain + "/oauth2/v1/token");

        JSONObject keyString = new JSONObject();
        keyString.put("client_id", "18893***83957248");
        keyString.put("client_secret", "B15B497B44E080EBE2C4DE4E74930***52409516B2A1A5C8F0FCD2C579A8EB14");
        keyString.put("grant_type", "client_credentials");

        StringEntity entity = new StringEntity(keyString.toString(), Charset.forName("UTF-8"));
        entity.setContentEncoding("UTF-8");
        entity.setContentType("application/json");
        post.setEntity(entity);

        CloseableHttpClient httpClient = HttpClients.createDefault();
        HttpResponse response = httpClient.execute(post);
        int statusCode = response.getStatusLine().getStatusCode();
        if (statusCode == HttpStatus.SC_OK) {

            BufferedReader br =
                new BufferedReader(new InputStreamReader(response.getEntity().getContent(), Consts.UTF_8));
            String result = br.readLine();
            JSONObject object = JSON.parseObject(result);
            token = object.getString("access_token");
        }

        post.releaseConnection();
        httpClient.close();
    } catch (Exception e) {

    }
    return token;
}

调用成功后返回正确的响应得到clientToken与有效期

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
    "access_token": "eyJhbGciOiJIUzU****************",    
    "expires_in": 172800
}

 欲了解更多更全技术文章欢迎访问https://developer.huawei.com/consumer/cn/forum/?ha_source=zzh

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6