OpenIDとセキュリティ――経路の安全性をどう担保するか:ZIGOROuのOpenID Short Clinic
OpenIDにかんするさまざまな疑問を解消していく本連載。今回は、OpenIDではどのような流れで認証手続きが行われているのかを解説する。
OpenIDについて少しづつ理解してきたつもりなのですが、OpenIDを使うに当たってセキュリティ上の課題や問題などについてまだ理解が十分でなく、少し心配です。OpenIDのセキュリティについてその仕組みのほか、推奨される対策などがあれば教えてください。
この話題はなかなか難しい話で、少し説明が長くなりそうなので複数回にわたって取り扱いたいと思います。多少難しい解説でも構わない方は、わたしが以前@ITで書いたOpenID のセキュリティに関する記事も参考にして参照ください。
OpenIDのセキュリティを語る上で最も重要な点
まずOpenID認証プロトコルで定義されているセキュリティに関連する登場人物をあらためて復習しましょう。それぞれの用語の理解が十分でないとお感じの場合は、過去の「ZIGOROuのOpenID Short Clinic」をさっと読んでおくとよいでしょう。
- End User(利用者)
- User-Agent(利用者のブラウザ)
- Relying Party(認証依存サイト:RP)
- OpenID Provider(OpenID認証プロバイダー:OP)
OpenID認証プロトコルでは、認証にまつわるメッセージのやり取りを常にOP EndPoint URLと呼ばれるOP上のエンドポイントURLに対して行いますが、その手法には「Direct Communication」「Indirect Communication」という2つのパターンがあります。
Direct CommunicationとはRPとOP間で文字通り“直接”行われるメッセージのやり取りです。
一方、Indirect Communicationとは、まずRPがUser-Agentに対してOP EndPoint URLへのLocationヘッダを設定することでUser-AgentをOPに遷移させます。ここまでがリクエストです。
このリクエストに対してOPはユーザーの認証結果を返すのですが、今度はOPがUser-Agentに対してRPへのリダイレクト要求を行い、User-AgentをRPに遷移させることによって返されます。なお、どこにリダイレクトさせるかは認証リクエスト時にopenid.return_toパラメータで指定しておく必要があります。
ここでは、OPとRPが直接リクエスト・レスポンスの受け渡しを行うのがDirect Communication、ユーザーのWebブラウザを介してリクエスト・レスポンスの受け渡しを行うのがIndirect Communicationであると覚えておけばよいでしょう。なぜ2つのパターンがあるのかについては、OpenIDの動作モードやセキュリティモデルによるところが大きいのですが、これは別の機会で解説したいと思います。
少なくとも、OpenIDでは認証にまつわるメッセージのやり取りをする経路が幾つか存在していることはご理解いただけると思います。そして、この経路間でのプロトコルメッセージのやり取りこそが OpenIDのセキュリティに関するトピックのほぼすべてであるといえます。
まずはSSLを使いましょう
ありがちな結論ではありますが、まずはOP EndPoint URLには信頼あるauthorityによるCertification(証明書)があるSSLを用いるのが最も簡単で信頼性を高める方法となります。
SSLを用いるだけでDNS解決などの不正な改ざんによる攻撃手法を防止できます。またUser-Agentを介したIndirect Communicationは経路が多いですが、その間の通信もメッセージがSSLにより暗号化されますので、より安全になります。
著者:山口 徹(やまぐち とおる)
サイボウズ・ラボで研究開発にいそしむPerlハッカー。Perlを中心とした開発のノウハウやネタをShibuya Perl Mongersのイベントで発表するなど講演活動も行う。最近ではOpenIDの実装方法や考察などをブログ「Yet Another Hackadelic」などで書き連ねている。
関連記事
- 認証と認可の違い
OpenIDにかんするさまざまな疑問を解消していく本連載。今回は、普段当然のように使用される「認証」「認可」の違いについて解説する。 - 実は簡単なOpenIDの認証手続き
OpenIDにかんするさまざまな疑問を解消していく本連載。今回は、OpenIDではどのような流れで認証手続きが行われているのかを解説する。 - ユーザーの細かなプロファイル情報を取得するには
本稿では、OpenIDに対応した場合にRelying Party側がユーザーの細かなプロファイル情報を取得する方法について解説する。 - OpenIDに対応するメリットは?
OpenIDをめぐってかなりの盛り上がりがみられるようになってきた。しかし、同規格についての詳細やその開発プロセスについてはまだまだ情報が不足している。本連載は、OpenIDにかんするさまざまな疑問をZIGOROuこと山口徹が短時間で解消していく。 - OpenID入門――その導入で何が変わって何が変わらないのか
ここ数カ月で注目を集めつつある話題の1つに、OpenIDというオープン系の分散型デジタル認証システムがある。本稿では、最も基本的なレベルから、OpenIDでは行えないことまで網羅したOpenID入門をお届けする。 - 思い切ってOpenIDを信頼しよう
OpenIDは信頼できないという人もいるが、ある意味では、少なくとも任意のユーザー名とパスワードでログインするのと同じくらいには信頼できる。 - 国内でOpenID推進団体へ 新団体設立、ヤフーら賛同
- ヤフーがOpenIDを発行 2000万ユーザーの取り込みが可能に
関連リンク
Copyright © ITmedia, Inc. All Rights Reserved.