最近的創新是JWT - JSON Web令牌。
這裏是該規範的鏈接: JWT - JSON Web Token
JWT是使用利用一個散列方法,如HMAC,其代表基於哈希的消息驗證代碼散列令牌的方法。由於令牌是使用密鑰散列的,因此服務器可以確定令牌是否被篡改。
下面是一個例子的方法來創建用於JWT散列令牌:
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;
}
下面是一個:
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();
}
這裏是進行解碼的標記,以確保它的一個例子是沒有被篡改文章更完整的例子:Stateless Authentication
看看這個庫https://pypi.python.org/pypi/python-oauth2 – DarkAnthey 2018-01-19 15:15:06