メモ代わり。てきとーに。 いや、ですからてきとーですって。 2年前ぐらいにPythonあたりでメールくれた方、ごめんなさい。メール紛失してしまい無視した形になってしまいました。。。

2009年6月27日土曜日

[Apache Shindig][お勉強][OpenSocial] メモ37 SecurityToken 5

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(Map out, 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 コメント: