at posts/single.html

mixilabo のサービスはパスワードを渡さなくても実装できるかも

文句ばかり言うのもあれなので。 昨日の日記で「足跡をつけた人の追跡」以外ではパスワードは要らないはずって書いたけど、「足跡をつけた人の追跡」もパスワードを渡さずに実装できる気がしてきた。 ポイントは以下のとおり。

  • mixi のあしあとAPIを使って足跡を取得する
  • mixilabo には生パスワードではなく、WSSEで規定された wsse:PasswordDigest を渡す
  • wsse:PasswordDigest は JavaScript を使ってクライアントで生成する

wsse:PasswordDigest は以下のようにして生成する(参考リンクの仕様書から引用)。

Password_Digest = Base64 ( SHA-1 ( nonce + created + password ) )

生パスワードとの違いは、毎回 nonce と created を違う値にすることで、生成されるダイジェストの値も毎回異なること。 mixi 側が同じ nonce を一度しか受け付けないようになっていれば、ダイジェストの使いまわしはできないはず。 図にするとこんな感じか。

生パスワードの場合
[client] ----- (password) -----> [mixilabo] ----- (password) -----> mixi
あしあとAPIの場合
[client] -- (nonce, digest) ---> [mixilabo] -- (nonce, digest) ---> mixi (同じ nonce は一度しか受け付けない)
  ↑
JavaScript: digest = base64(sha1(nonce + created + password)

利用者はパスワードを入力するけど、パスワード自体は mixilabo には送られない。 ただ困ったことに、本当に生パスワードを送っていないかどうかを利用者が確認するのが難しいんだよね…。

参考リンク

関連する日記