本篇文档介绍如何使用 Server SDK 生成 Custom Token 以及认证 Wilddog ID Token。
安装 Server SDK
首先,你需要在服务器中安装 Server SDK,请参考 Server SDK(Java) 下载安装。
目前有 JDK1.7 及 JDK1.8 两个编译版本。
生成 Custom Token
生成 Custom Token:
String secret = "<your-secret>"; Map<String, Object> developerClaims = new HashMap<String, Object>(); developerClaims.put("claims1", 112); developerClaims.put("claims2", true); Map<String, Object> developerClaims2 = new HashMap<String, Object>(); developerClaims2.put("aaa", 212); developerClaims2.put("bbb", "bbb"); developerClaims.put("claims3", developerClaims2); TokenOptions options = new TokenOptions(); options.setExpires(new Date(System.currentTimeMillis() + 2 * 24 * 3600 * 1000L)); String token = CustomTokenGenerator.createCustomToken("some-uid", developerClaims, secret, options);
|
生成 Admin Token:
String secret = "<your-secret>"; TokenOptions options = new TokenOptions(); options.setExpires(new Date(System.currentTimeMillis() + 2 * 24 * 3600 * 1000L)); String token = CustomTokenGenerator.createAdminToken(secret, options);
|
Custom Token 按照 JWT 格式生成,格式如下:
Custom Token payload:
{ "v": 1, "uid": "11111111", "iat": 1471347140, "exp": 1471357140, "claims": { "C": 112, "B": "自定义" } }
|
你可以通过下表的字段来生成 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 进行身份认证:
wilddog.auth.signInWithCustomToken(customToken).catch(function(error)){ var errorCode = error.code; var errorMessage = error.message; }
|
认证 Wilddog ID Token
在客户端获取用户 Wilddog ID Token:
wilddog.auth().currentUser.getToken( true).then(function(idToken) { }).catch(function(error) { });
|
使用 Wilddog SDK 校验 Wilddog ID Token:
VerifyResult result = IdTokenVerifier.verifyIdToken(idToken, appId); boolean isValid = result.isValid(); Token token = result.getIdToken();
|