シーケンス図を描いてみた

アルバイト

OAuth 2.0 の仕組みを調べる

そう言えば、某 G 社の面接を受けたときに「OAuth とか分かる?」と聞かれて、何も分かりませんと回答したのをよく覚えている。今日は半日かけて OAuth とは何ぞやを調べて、シーケンス図にまとめて、大雑把な認証の流れが分かった。これで面接で聞かれてもちょっとは答えられるようになった。

一番分かりやすい記事はこれだと思う。

で、OAuth 2.0 の最新仕様 (現時点では v2-18) は draft-ietf-oauth-v2-18 - The OAuth 2.0 Authorization Framework にある。OAuth 2.0 は現在進行形で仕様を策定中らしい。日本語情報もまとめられていて、少し古いバージョン Oauth v2-10 が翻訳されている。

全体を掴むために日本語翻訳を一通り読んでから最新の仕様を読むのが良さそうだ。やっぱり8つもリビジョン (?) が上がっていれば、文章の内容や構成がちょこちょこ変わってる。例えば、v2-10 では、OAuth 2.0 のクライアント (コンシューマー) は以下の4つに分類されているけど、

  • ウェブサーバー
  • ユーザーエージェント
  • ネイティブアプリケーション
  • 自律クライアント

v2-18 では、そういったクライアントのカテゴライズはされず、どういう環境や条件で認証が行われるか、セキュリティはどうやって確保するかといった視点で仕様の記述が行われている。

シーケンス図を描く

シーケンス図というのを描いたことがなくて、よく分からず描いたら全然違うって諭されて、本当に何も知らない人間でごめんなさい (> <) 。

当初 http://blockdiag.com/seqdiag/build/html/index.html で OAuth 2.0 のシーケンス図を描いてみたのだけど、シーケンス図の描き方を知らない人間が応用ツールを使うのは危険だということから、ちゃんとしたシーケンス図の作成ツールを使った。astah* というツールで Community 版は無償で使えるようだ。すごく良く出来ていて、1時間ほどいじってたら、一通りシーケンス図が描けた。微妙なレイアウトやパーツの追加がちょっとまどろっこしい感がするけど、対応関係を自動的に結び付けてくれるので誤ったシーケンス図にはならなくて済む。また画像出力も簡単。選択範囲のみの出力もできるのでこれは便利だなーと思った。

その後は「おれ、今日は OAuth 2.0 のシーケンス図を描き切らないと帰らねー」って意地になって描いてた。何とか今日中にできて良かった。

最後に

つまり何が言いたいかと言うと #しみずかわ にはお歳暮とか贈っておくべきだと思うんですね。OAuth の仕組みから、シーケンス図の描き方まで懇切丁寧に教えてもらった。感謝!