JavaScriptでOAuth認証するときの注意点


JavaScript単体でOAuth認証する場合ConsumerKey/SecretKeyが見えてしまう。

難読化(base64など)ですぐにはバレないようにはできてもいずれ見つかってしますのだけれど、どのように他のJSなアプリは隠しているのだろうか?

単体ではなくサーバプロキシを通せばそんな意識しなくてもいいのだろうけど気になるところではある。

思いつく限りだと、JS本体には置かずバイナリをJSでパースしてキーを使うというものもある。

xhrでバイナリ取得
var xhr = new XMLHttpRequest();
xhr.open(‘GET’, path, false);
xhr.overrideMimeType(’text/plain; charset=x-user-defined’);
xhr.send(null);
binary_string = xhr.responseText;

binary_stringをbinaryに変換する
bytes = []
for(var i=0, t; i < binary_string.length; i++){
bytes[i] = binary_string.charCodeAt(i) & 0xff;
}

こんなかんじでJS内でバイナリ化して、各自パース処理を書けばいいのではないでしょうか?

隠し方は人それぞれだと想いますが^^;

他の方法としてはyqlを使う方法もあるようですね。

How-to: Secure OAuth in JavaScript