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

2009年6月27日土曜日

[Apache Shindig][お勉強][OpenSocial] メモ36 SecurityToken4

サーバ側でApache Shindigのモジュールを使用し、securityTokenを作成してみた。
正しいかどうかは知らない。


String viewerId = "viewer";
String ownerId = "owner";
String domain = "shindig";
String container = "default";
long moduleId = 0;
String appId = "http://www.labpixies.com/campaigns/todo/todo.xml";

String securityToken = null;
try {
String keyFile = containerConfig.getString(container, "gadgets.securityTokenKeyFile");
if (keyFile != null) {
BlobCrypterSecurityToken token = new BlobCrypterSecurityToken(new BasicBlobCrypter(new java.io.File(keyFile)), container, domain);
token.setOwnerId(ownerId);
token.setViewerId(viewerId);
token.setAppUrl(appId);
token.setModuleId(moduleId);
token.setActiveUrl(request.getRequestURL().toString());
securityToken = token.encrypt();
}
else {
BasicSecurityToken token = new BasicSecurityToken(
ownerId,
viewerId,
appId,
domain,
appId,
"" + moduleId,
container,
request.getRequestURL().toString());
securityToken = token.toSerialForm();
}
}
catch (Exception ex) {
AnonymousSecurityToken token = new AnonymousSecurityToken();
securityToken = token.toSerialForm();
}

securityToken = URLEncoder.encode(securityToken, "UTF-8");
 


もっとちゃんと実装しなきゃならないけど、
おおまかな流れ的には、こんな感じでよい気がする。
activeUrlには何を指定するか、まだ知らないんで、とりあえずリクエストURLを指定した。

で、とりあえず動いた。
AuthenticationServletFilterもちゃんと通過。
iframeには意味不明な文字列が指定されている。

securityTokenには'+'とかが入るので、処理の最後でURLEncoder.encodeしてやらないと
だめ。(ちろっとはまった)

iframeのsecurityTokenをでたらめな文字列を指定すると、ちゃんと403になる。

うーん。
AuthenticationServletFilterでやっている処理は、
FilterじゃなくてHandlerでやった方がいじりやすい気もする。

--

というか、SecurityTokenDecoderはShindigにあるのに、SecurityTokenEncoderはShindigには
用意されていない。BlobCrypterがあるので、いらない、ということかな?

SecurityTokenDecoderも含めて、Shindigはサンプルだから自分で実装しろ、ということか。。
.

0 コメント: