OAuth タグのついた記事一覧
entries tagged with OAuth

OAuth WRAP という新しい OAuth の仕様が話題になってるので、ちょっとドキュメントを訳してみました。
全部翻訳するのは大変なので、利用シーンごとに分けて作られている "Profile" というのだけをそれぞれ訳しています。(WRAP は Web Resource Authorization Protocol の略らしい)
Facebook Connect を置き換えるものとしても注目されており、Javascript 単体のアプリケーションなんかも想定してあります。今回翻訳したドキュメントでは、まだ Javascript Profile は定義されていないのですが、MLに仕様書のドラフトが添付されていたので、そちらも同時に訳しています。
Smart.fm でも Javascript アプリ上での認証はオープン化の key なので、特に Javascript Profile に注目しています。
Read more
Comments
Contact リストを Email じゃなくて OpenID で取れればいいのに
Google / Yahoo! Inc. の Contact API、正直友達の Email アドレスとかもらっても、スパムまがいの招待状送るくらいでどうせみんな登録しないんじゃない?本当は Facebook Connect みたいに「友達をインポートする」とかの方がやりたいのに。
G も Y! も OP になっていて、Smart.fm 内には各社数万単位でその OpenID を使っているユーザがいるので、Friend リストを OpenID で受け取れれば、Facebook Connect や Twitter なんかより遥かに高い確率で友達が見つかる、はず。
そして Email じゃなければ、Y! Japan さんも対応しやすい、かも?
OpenSocial Container の User ID が OpenID だったらいいのに
これも一つ目とほぼ同じ。mixi ID なんて送ってきて、僕らにどうしろと言うのさ!(まぁほとんどの mixi OpenID には mixi ID 含まれてるけど)
ってことで、OpenSocial Container も、OP やってるなら ID を OpenID にしちゃえばいいよね。
mixi OpenID で OAuth Hybrid 対応して、発行された Access Token で OpenSocial の Activity API とか叩けるようになれば、国内では Facebook Connect に負けるわけ無い。
って、mixi と MySpace 以外にどこがあるのか分からんけど。
OP / SP が iPhone 対応してくれればいいのに
OP が iPhone 対応してないから、自分とこのサイトが iPhone 対応しても、結局ログインはしにくいまま。どうせ2-3ページ対応すればいいだけだし、iPhone 対応してくれればいいのになぁ〜。
と、idcon でちょうどタイムリーな話題もあったので、いろいろ言ってみた。
Comments
OAuth の POST リクエストでは、基本的に Content-type = x-www-form-urlencoded のデータを送ることが想定されています。
もちろんそれ以外にも Content-type が multipart/form-data や application/xml、application/json などの場合も、request body が signature base string に入らないという違いはあるものの、OAuth を使って POST することは可能です。
仕様的には。
smart.fm でも一部 API で multipart (upload file) や xml/json データ (save study data : comming soon) をポストしないといけない API があるのですが、みごと ruby の oauth gem ではそれらに失敗しました。
原因は、OAuth::Consumer#create_http_request の以下の1行。青色の部分を赤色の部分のように変えれば動きます。
module OAuth
class Consumer
def create_http_request(http_method, path, *arguments)
http_method = http_method.to_sym
if [:post, :put].include?(http_method)
# data = (arguments.shift || {}).reject { |k,v| v.nil? }
data = arguments.shift
data.reject! { |k,v| v.nil? } if data.is_a?(Hash)
end
以下略
end
end
というところを、github の master ではこの bug が fix されているのですが、rubyforge にはまだ反映されていなくて、ちょっとハマりました。これを fix すれば、こんな感じで POST できます。
access_token.post(path, params, {'Content-Type' => 'multipart/form-data'})
access_token.post(path, xml, {'Content-Type' => 'application/xml'})
access_token.post(path, json, {'Content-Type' => 'application/json'})
Read more
Comments
ruby oauth gem も rails oauth plugin も OAuth 1.0a 対応になったので、smart.fm も OAuth 1.0a に対応することにしました。
実装は既に終わったので、予定通りだと明日の昼前に本番に反映される予定です。
OAuth の脆弱性が発見されてから、暫定的に以下の2つの制約を加えましたが、OAuth 1.0a 対応でどちらの制約も外れます。
- authorize 時に渡される oauth_callback を無視
- request token の有効期間もかなり短く
ただし OAuth 1.0a では oauth_callback を指定するタイミングが authorize 時から get request token 時に変更になっているので、authorize 時に oauth_callback 渡しても無効、というのは変わりません。
もちろん従来のフローでアクセスする consumer に対する動作は変わらないので、oauth_callback を利用しない場合は特に consumer 側の変更は必要ありません。consumer 登録時に登録する oauth_callback は、従来通り有効です。
Read more
Comments
一部の方(特に女性)には「また意味の分からないこと書いてる」と言われるような内容ですが、あしからず(汗

今週の月曜日から4週間連続で、gihyo.jpに「特集:ゼロから学ぶOAuth」という連載を書かせていただいています。
第1回は「第1回 OAuthとは?―OAuthの概念とOAuthでできること」と題して、OAuth のざっくりした概念の説明と、smart.fm で使ってる Google OAuth を触ってもらって、裏でどういうことが起きてるかを簡単に説明するような内容です。
第2回と第3回は OAuth Consumer の実装と、実際の通信内容の理解を行います。実際に最初から実装手順を説明するのは大変なので、事前に実装しておいた OAuth Consumer Sample を使って話を進めていきます。
ちなみにこのサンプルアプリケーション、僕が smart.fm OAuth の動作検証に使う為のものだったりします。もちろん Rails で書いてます。
第4回は OAuth Service Provider の実装とサービス提供者側でチェックする項目などを説明する予定です。こちらも現在 Sample をちまちま実装中です。
そして OAuth Consumer の実装に興味を持たれた方は、ぜひ smart.fm API を使って何か!
以上、宣伝でした m_ _m
Read more
Comments

火曜日の夜に銀座の Apple Store で行われた OpenID TechNight #4 に参加してきました。
今回のイベントは OpenID Foundation Japan 以外の方も参加できるイベントだったので、OpenID BizDay よりもエンジニアっぽい参加者が多かったです。やっぱこっちの方が性に合う。
内容は ZIGOROu さんと tkudo による OpenID 入門的なお話でした。本当は OAuth & OpenID ハイブリッド仕様と Contract Exchange について詳しく知りたかったんだけれど、対象レベルが違ったのでしょうがない。
最後は時間が押してしまったのもあり、質問時間が全くなかったのが残念でしたが、プレゼンは分かりやすくて良かったです。いままでざっとしか理解してなかったところが、きっちり系統だって分かった気がします。
きっとそのうちプレゼン資料が公開されるはずなので、OpenID についての基本用語を押さえたい人にはお勧めです!!
しかし、夜にやるイベントなのに懇親会が無いってのは、ちょっと物足りない。
Comments
本日、iKnow! gem を OAuth と Basic 認証サポートを追加して、リスト作成/削除とリストへのアイテム追加/削除を実装して、version 0.1.0 をリリースしました。
OAuth を実装してみて、iKnow! OAuth も Google や Yahoo! の OAuth と同じくらい使いづらいのが分かって来ました。というか、そもそも若干動作がおかしい気がします(アセ
冬休みまであと2日しか営業日が無いので、急ピッチで iKnow! OAuth を使いやすくして、gem もリリースする予定です。もっと多くのデベロッパーに iKnow! API 使ってほしいしね。
ちなみに今 Basic 認証には Mechanize を使ってますが、こいつもまた動作が変。どうも DELETE の動作が怪しい。。。OAuth 関連のタスクがスムーズに行って時間に余裕があれば、Mechanize 使わないようにしたいです。
冬休み中には、RSpec でテストも書きたいな。
ps.
iKnow! gem 使った感想とかもらえると、モチベーション急上昇するよ☆
Comments