最近のイノベーションは JWT (JSON Web Token) です。
仕様へのリンクは次のとおりです:
JWT - JSON Web トークン
JWT は、Hash-based Message Authentication Code を表す HMAC などのハッシュ方式を使用してハッシュ トークンを使用する方法です。トークンは秘密鍵を使用してハッシュされるため、サーバーはトークンが改ざんされているかどうかを判断できます。
JWT のハッシュ トークンを作成する方法の例を次に示します。
public String createTokenForUser(User user) {
byte[] userBytes = toJSON(user);
byte[] hash = createHmac(userBytes);
final StringBuilder sb = new StringBuilder(170);
sb.append(toBase64(userBytes));
sb.append(SEPARATOR);
sb.append(toBase64(hash));
return sb.toString();
}
改ざんされていないことを確認するためにトークンをデコードする例を次に示します。
public User parseUserFromToken(String token) {
final String[] parts = token.split(SEPARATOR_SPLITTER);
if (parts.length == 2 && parts[0].length() > 0 && parts[1].length() > 0) {
try {
final byte[] userBytes = fromBase64(parts[0]);
final byte[] hash = fromBase64(parts[1]);
boolean validHash = Arrays.equals(createHmac(userBytes), hash);
if (validHash) {
final User user = fromJSON(userBytes);
if (new Date().getTime() < user.getExpires()) {
return user;
}
}
} catch (IllegalArgumentException e) {
//log tampering attempt here
}
}
return null;
}
より完全な例を含む記事を次に示します: ステートレス認証