文档

校验JwtToken

更新时间:

前提条件

  1. 请先完成阿里云账号注册、实名认证、开通安全认证创建应用

  2. 请完成获取阿里云访问密钥;

校验JwtToken

校验JwtToken,移动端SDK认证成功会返回id_token,使用此接口校验真实性。

请求参数

名称

类型

必填

示例值

描述

ApplicationExternalId

String

A0000001

应用外部ID,该字段在创建应用时指定,在应用详情页中查看

JwtIdToken

String

通过调用移动端SDK认证成功之后返回。目前只有IFAA、手机号认证返回。

返回数据

名称

类型

示例值

描述

Success

boolean

true

操作结果,true 代表成功,false 代表失败

Code

String

Opreation.Success

状态码。

  • 当 Success=true 时,Code=Operation.Success

  • 当 Success=false 时,Code的值,请参见下方错误码

Message

String

Opreation.Success

具体的描述信息,当 Success=false 时,会给出Code的对应的具体描述信息

RequestId

String

1C0EE50A-B3BB-42FD-AB59-E3FE88976982

请求ID

Data

String

操作成功时,Data中的JSON字符串包含UserId字段:

  • userId: 字符串:用户的唯一Id

操作失败时;Data字段为空

请求示例

请求方式:POST

https://idaas-doraemon.aliyuncs.com/?Action=VerifyIdToken
&Version=2021-05-20
&ApplicationExternalId=A0000001
&JwtIdToken=eyJhcHBJ...biI6IjEuMCJ9
&<公共请求参数>

正常返回示例 -校验JwtToken结果

{
  "RequestId": "33ED8414-F27C-5CA4-B53F-FDFF61A7C96E",
  "UserId": "123456"
}

错误返回示例 - 请求参数中应用ID不存在

{
  "Success": false,
  "Code": "Operation.Failure.Application.ResourceNotExist",
  "Message": "APIInvokeError.ApplicationDoesNotExist",
  "RequestId": "1C0EE50A-B3BB-42FD-AB59-E3FE88976982",
}

代码示例(Java)

获取应用token示例代码:

import com.alibaba.fastjson.JSONObject;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.idaas_doraemon.model.v20210520.ServiceInvokeRequest;
import com.aliyuncs.idaas_doraemon.model.v20210520.ServiceInvokeResponse;
import com.aliyuncs.profile.DefaultProfile;

import java.nio.charset.StandardCharsets;
import java.util.Base64;

public class IDaaSAuthSample {

    /**
     * 使用AK&SK初始化账号Client
     *
     * @param accessKeyId
     * @param accessKeySecret
     * @return Client
     * @throws Exception
     */
    public static IAcsClient createClient(String accessKeyId, String accessKeySecret) throws Exception {
      // 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
        // 此处以把AccessKey 和 AccessKeySecret 保存在环境变量为例说明。您可以根据业务需要,保存到配置文件里。
        // 强烈建议不要把 AccessKey 和 AccessKeySecret 保存到代码里,会存在密钥泄漏风险
      	String accessKeyId = System.getenv("ACCESS_KEY_ID");
        String accessKeySecret = System.getenv("ACCESS_KEY_SECRET");
        DefaultProfile profile = DefaultProfile.getProfile(
                "cn-hangzhou",
                accessKeyId,
                accessKeySecret);
        // addEndpoint
        DefaultProfile.addEndpoint("cn-hangzhou",
                "idaas-doraemon",
                "idaas-doraemon.aliyuncs.com");
        // 访问的域名
        return new DefaultAcsClient(profile);
    }

    public static void main(String[] args_) throws Exception {
        // 获取token
        verifyJwtToken();
    }

    public void verifyJwtToken() throws Exception {
       IAcsClient client = IDaaSAuthSample.createClient("Your AccessKey", "Your AccessSecret");
       //校验JwtToken
       VerifyIdTokenRequest verifyIdTokenRequest = new VerifyIdTokenRequest()
                .setApplicationExternalId("test")
                //移动端SDK获取
                .setJwtIdToken("eyJhcHBJZCI6ImNvbS5pZHNtYW5hZ2VyLmlkcCIsImFwcE9TIjoiaU9TIiwidGltZXN0YW1wIjoxNjY4NzQwNjIwMDAwLCJkZXZpY2VVbmlxdWVJZCI6IjI0NzA4NUQ3LTFDNTMtNEY2RS1CRDdFLTFGNUU3ODVBNzc1RiIsImJhc2U2NEVuY29kZWRKc29uUGFyYW1zIjoiZTMwPSIsInZlcnNpb24iOiJWMS4yLjAifQ==");
        // 复制代码运行请自行打印 API 的返回值
        try {
            VerifyIdTokenResponse response = client.getAcsResponse(verifyIdTokenRequest);
            System.out.println(JSONObject.toJSON(response.body).toString());
        } catch (Exception e) {
            //根据e,getCode()判断异常原因
            System.out.println(e);
        }
    }
}

示例代码的maven依赖

  <dependency>
   <groupId>com.aliyun</groupId>
   <artifactId>aliyun-java-sdk-idaas-doraemon</artifactId>
   <version>[1.2.4,1.3.3)</version>
  </dependency>
 <dependency>
   <groupId>com.aliyun</groupId>
   <artifactId>aliyun-java-sdk-core</artifactId>
   <optional>true</optional>
   <version>[4.4.9,5.0.0)</version>
  </dependency>