title: 使用 Server SDK

本篇文档介绍如何使用 Server SDK 生成 Custom Token 以及认证 Wilddog ID Token。

安装 Server SDK

首先,你需要在服务器中安装 Server SDK,请参考 Server SDK(Java) 下载安装。 目前有 JDK1.7 及 JDK1.8 两个编译版本。

生成 Custom Token

生成 Custom Token:

  1. // 生成 Custom Token
  2. // 自定义字段
  3. String secret = "<your-secret>";
  4. Map<String, Object> developerClaims = new HashMap<String, Object>();
  5. developerClaims.put("claims1", 112);
  6. developerClaims.put("claims2", true);
  7. Map<String, Object> developerClaims2 = new HashMap<String, Object>();
  8. developerClaims2.put("aaa", 212);
  9. developerClaims2.put("bbb", "bbb");
  10. developerClaims.put("claims3", developerClaims2);
  11. TokenOptions options = new TokenOptions();
  12. options.setExpires(new Date(System.currentTimeMillis() + 2 * 24 * 3600 * 1000L));
  13. String token = CustomTokenGenerator.createCustomToken("some-uid", developerClaims, secret, options);

生成 Admin Token:

  1. // 生成 Admin Token
  2. // Admin Token 是管理员权限凭证。
  3. String secret = "<your-secret>";
  4. TokenOptions options = new TokenOptions();
  5. options.setExpires(new Date(System.currentTimeMillis() + 2 * 24 * 3600 * 1000L));
  6. String token = CustomTokenGenerator.createAdminToken(secret, options);

Custom Token 按照 JWT 格式生成,格式如下:

Custom Token payload:

  1. {
  2. "v": 1,
  3. "uid": "11111111",
  4. "iat": 1471347140,
  5. "exp": 1471357140,
  6. "claims": {
  7. "C": 112,
  8. "B": "自定义"
  9. }
  10. }

你可以通过下表的字段来生成 Custom Token :

必填字段 描述
v token 的版本,默认为 1
iat token 的颁发时间,Unix 时间秒数
uid 用户的 ID,在 Wilddog Auth 中作为 Wilddog ID

其中 uid 为不超过64位的字符串,字符串中只允许数字、大小写字母以及”-“。

下面是可选字段:

可选字段 描述
exp token 过期的时间戳,以秒为单位
admin 如果设置为 true,将获得完全的读写权限
claims 用户自定义字段节点。claims 为固定字段,子节点为自定义字段。子节点不能为 JWT 保留字

提示:

Custom Token 使用的是 SHA-256 HMAC 签名方式。 如果你使用非 Java 平台,可以使用第三方的 JWT(JSON Web Token)库自己生成 Custom Token。

服务器生成 Custom Token 之后需要发送给客户端。客户端收到 Custom Token 可以实现自定义身份认证。

例如,Web 端使用 Custom Token 进行身份认证:

  1. wilddog.auth.signInWithCustomToken(customToken).catch(function(error)){
  2. var errorCode = error.code;
  3. var errorMessage = error.message;
  4. }

认证 Wilddog ID Token

在客户端获取用户 Wilddog ID Token:

  1. wilddog.auth().currentUser.getToken(
  2. /* 强制刷新 */
  3. true).then(function(idToken) {
  4. // 通过 HTTPS 发送 Token 给后端服务器
  5. }).catch(function(error) {
  6. // 错误处理
  7. });

使用 Wilddog SDK 校验 Wilddog ID Token:

  1. VerifyResult result = IdTokenVerifier.verifyIdToken(idToken, appId);
  2. boolean isValid = result.isValid();
  3. Token token = result.getIdToken();