securityTokenをsecureにして、iframeでGadgetを表示後、しばらくほっておいて、
再表示しようとすると、
Caused by: org.apache.shindig.common.crypto.BlobExpiredException: Blob expired, was valid from Sat Jun 27 20:23:10 JST 2009 to Sat Jun 27 21:29:10 JST 2009, attempted use at Sat Jun 27 21:43:12 JST 2009
at org.apache.shindig.common.crypto.BasicBlobCrypter.checkTimestamp(BasicBlobCrypter.java:228)
at org.apache.shindig.common.crypto.BasicBlobCrypter.unwrap(BasicBlobCrypter.java:190)
at org.apache.shindig.auth.BlobCrypterSecurityToken.decrypt(BlobCrypterSecurityToken.java:83)
at org.apache.shindig.auth.BlobCrypterSecurityTokenDecoder.createToken(BlobCrypterSecurityTokenDecoder.java:114)
とexpiredだといわれる。
ほほぅ。
./java/common/src/main/java/org/apache/shindig/common/crypto/BasicBlobCrypter.java
を見ると、
/**
* We allow a few minutes on either side of the validity window to account
* for clock skew.
*/
private void checkTimestamp(Mapout, int maxAge)
throws BlobExpiredException {
long origin = Long.parseLong(out.get(TIMESTAMP_KEY));
long minTime = origin - CLOCK_SKEW_ALLOWANCE;
long maxTime = origin + maxAge + CLOCK_SKEW_ALLOWANCE;
long now = timeSource.currentTimeMillis()/1000;
if (!(minTime < now && now < maxTime)) {
throw new BlobExpiredException(minTime, now, maxTime);
}
}
となっている。
呼び出し元を見ると、maxAgeは3600。
で、CLOCK_SKEW_ALLOWANCEは180。
(秒単位)
なので、securityTokenが発行された時の3分前から63分後までは、securityTokenは有効で、
そのほかはExpiredとなる。
さて、この値を変更したい人はどうすればよいか。
BlobCrypterSecurityTokenで定義されているんだけど、
”いじるな”という感じ。
OpenSocialの仕様なんですかね。
.
0 コメント:
コメントを投稿