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

2009年7月27日月曜日

[Apache Shindig][お勉強][OpenSocial] メモ94 lockedDomainを有効にする

gadgets.rpcを理解するにあたって、別ドメイン別フレームという環境がほしくなった。

そこで、ShindigのlockedDomain機能を有効にしてみた。

以下手順。
1) container.jsで、lockedDomainを有効にする。
container.jsのgadgets.lockedDomainRequiredとgadgets.lockedDomainSuffixを有効にすべく
設定する。以下設定後の値。


"gadgets.lockedDomainRequired" : true,
"gadgets.lockedDomainSuffix" : ".gadget.example.com"

期待するdomainは、

<変な値>.gadget.example.com

として、<変な値>はgadgetXMLと一対一の値。

Shindigとしては、GadgetXMLのRequireタグにlocked-domainフィーチャーが指定されている
と、lockedDomain機能が有効になるが、それはまた別のお話。

2) /gadgets/metadataリクエスト経由でiframeに渡すURLを取得する。
参考になるのはShindig付属のsamplecontainer.js。
これをみて、/gadgets/metadataへリクエストし、gadgetのiframeUrlを取得する。
取得したiframeUrlは

//<変な値>.gadget.example.com/gadgets/ifr・・・・・

と先頭が'//'で始まっているかもしれない。そんときは、現在のschemeを付加してやればよい。

で、上記iframeUrlをiframeタグのsrcに指定してあげる。
これでクライアント側はOKのはず。

3) DNSでワイルドカード指定

<変な値>.gadget.example.comで、IPが返るようにDNSでワイルドカード指定する。
bindでもtinydnsでも可能。

4) Apache mod_proxy

もしApache mod_proxyを使用しているなら、
ShindigでlockedDomain機能を有効にしている場合、もともとのHostヘッダを見て
チェックするので、

ProxyPreserveHost On


と設定してやる必要がある。


これでガジェット毎に別ドメインになっていい感じ。

さて、locked-domain機能だけど、
gadgetごとに決まったURLじゃないとInvalid domainを返す機能・・・
で合っているかどうかは良くわからない。

ちなみに<変な値>の生成ロジックは以下のとおり。
1) gadgetXMLファイルへのURLからSHA1でハッシュ値を求める。
2) 1)で求めたSHA1ハッシュ値をBase64ではなく、Base32で文字列化
3) 2)で求めた文字列にcontainer.jsのgadgets.lockedDomainSuffixで指定した文字列を単純に連結。

な感じ。

なのでわざわざ/gadgets/metadata経由でDefaultUrlGeneratorを使って生成しなくても、
自前でもっと簡単に生成しても別にいい感じ。


そんだけ。
.

0 コメント: