[openpne-dev:578] 「 OpenPNE3 の master の認証プラグイン用の API を大幅に変更しました」についての詳細

閲覧: 115 回
最初の未読メッセージにスキップ

Kousuke Ebihara

未読、
2010/05/02 10:51:122010/05/02
To: openp...@ml.pne.jp
OpenPNE 開発チームの海老原です。

# メインマシン修理中につき、別メールアドレス・別スレッドでの投稿失礼します。

予告通り、「[openpne-dev:577] OpenPNE3 の master の認証プラグイン用の API
を大幅に変更しました」で告知させていただいた変更についての詳細をご連絡します。

本変更の内容
============

今回、 OpenPNE 3 の master ブランチに対して以下の変更をおこないました。

Enhance a registering flow from inviting e-mail
http://redmine.openpne.jp/issues/1009

登録処理にはクレデンシャルを使わず、トークンを引き回す形に変更する
http://redmine.openpne.jp/issues/960

本変更の趣旨
============

本変更は、以下のバグの対策として実施したものです。

Invite mail depends on opAuthMailAddressPlugin (招待メールが
opAuthMailAddressPlugin に依存している)
http://redmine.openpne.jp/issues/943

このバグは OpenPNE 3
の登録フローが正しく整備されていないためのもので、これを修正するためには登録部分のソースコードの大幅な変更が必要でした。この変更を適用しない限り、
opAuthMailAddressPlugin 以外のプラグイン経由での招待が適切に動作しません(プロフィール入力ページに遷移する条件が
opAuthMailAddressPlugin とまったく同一な場合を除く)。

また、従来の招待メール経由の登録では opAuthMailAddressPlugin
の登録フローに則って、メールアドレス登録用の一時的なトークンを付加した URL
から登録ページにアクセスし、そこでクレデンシャルを発行された上でプロフィール入力ページに進みます。
opAuthMailAddressPlugin
であればここでの入力が完了次第メンバー登録が完了しますが、メンバー登録作業を実行する前に特別な条件を設けている認証プラグイン(バンドルされているものの中にはありません)の場合、登録完了のフローに進むために新たなクレデンシャルを発行されます。この後適切に登録完了のフローに進めば問題ありませんが、その前にセッションが切れてしまった場合に登録を続行できなくなります。

そもそもクレデンシャルは静的な権限を扱うものであって OpenPNE のように DB
と紐付いた動的な権限の管理には向いていません。今回のようなバグを引き起こす危険性や、クレデンシャルの付与を誤った場合などのトラブルも考えられます。登録処理のような用途でクレデンシャルを使い続けるのは不適切であり誰もメリットを享受し得ないことから廃止し、トークンを引き回して認証を継続する形に置き換えることにしました。

本変更の影響
============

登録機能を備えている認証プラグインについて、以下の影響があります。

* クレデンシャルを使った登録時の権限管理がおこなえなくなります
* 招待経由の登録が member/register
アクション経由になります。このアクションに対応したコンポーネントを用意していない認証プラグインからの招待経由の登録はおこなえません

登録機能を備えていない認証プラグインや、それ以外のプラグインについては本変更の影響を受けません。

本変更への認証プラグインの対応方法
==================================

クレデンシャルの使用の廃止する
------------------------------

* アプリケーションの security.yml で SNSRegisterBegin や SNSRegisterFinish を使用している設定を削除する
* トークンでのアクセス制御をおこなうため、 SNSRegisterBegin や SNSRegisterFinish
のクレデンシャルをチェックしていたアクションについては security.yml 内の is_secure を false にする

招待用コンポーネントの作成
--------------------------

認証アダプタクラスの getAuthModeName() と同じモジュールに registerBox というコンポーネントを追加することで、
member/register アクションで読み込まれるようになります。 member/register
は招待メール経由の登録ページで、ユーザは登録したいアカウントの種類(認証モード)を選択します。このコンポーネントの内容については特に決まりなどはありません。フォームを設置して登録ページに飛ばしたり、ここで一度外部連携用
ID をチェックしたりと、それぞれの認証プラグインに適した内容を記述してください。

本変更を反映した OpenPNE のリリースについて
===========================================

認証プラグインは作成方法についてのドキュメントがまだなく(本変更によってインターフェースが整備されてきたと考えているので、 3.6
のリリースがある 7 月までには簡単なドキュメントだけでも用意できればと考えています)、その影響か plugins.openpne.jp
に登録されている認証プラグインはバンドルされている opAuthMailAddressPlugin と
opAuthMobileUIDPlugin、そして opAuthOpenIDPlugin に限られています。

本変更自体が及ぼす影響についても、招待・登録関連のコードに限られており、修正箇所は前述のように極めて小さいものとなります。
そもそも本変更を適用しなければ招待・登録関連の処理を適切に作ることができなかったわけですから、(plugins.openpne.jp
に関係のないところで認証プラグインを作成しておられる方がいらっしゃったとしても)本変更の影響を受ける方はまずおられないことと思っております。

念のため本変更が master に入ってから一週間が経過した 5/7 までは OpenPNE 3.5.2
のリリースはおこないません。なにか本変更についてのご意見などあればお寄せください。

もちろん OpenPNE 3.5 は開発版ですから、たとえ 5/7
を過ぎてしまったとしても、本変更によって不都合があった場合ご連絡いただければ、当然に、修正や最悪本変更の差し戻しも検討いたします。

以上、よろしくお願いします。

--
このメールは Google グループのグループ「openpne-dev」の登録者に送られています。
このグループに投稿するには、openp...@googlegroups.com にメールを送信してください。
このグループから退会するには、openpne-dev...@googlegroups.com にメールを送信してください。
詳細については、http://groups.google.com/group/openpne-dev?hl=ja からこのグループにアクセスしてください。

手嶋守

未読、
2010/05/06 5:33:022010/05/06
To: openp...@ml.pne.jp
手嶋です。
なんとなくわかりました。

>
> 登録機能を備えている認証プラグインについて、以下の影響があります。
>

認証プラグインじゃなければまず影響が全くなく
そのなかでも登録機能を備えているものに限るわけですね。


今回のような仕様についての変更は、その経緯もぜひ共有したいです。
※今回の、ではなく今後の議論を、という意味で。

せっかく公式SNSがVer3化されたので、こうした議論が気軽にできるプラグインを用意したいですね。

2010年5月2日23:51 Kousuke Ebihara <kou...@co3k.org>:

--
☆~~~~~~~~~~~~~~~~~~~~~~~~~~~~☆
株式会社手嶋屋 http://www.tejimaya.com
手嶋 守 (tej...@tejimaya.com)

〒160-0022 東京都新宿区新宿1-6-8 新宿鈴木ビルA館7F
Tel:03-6380-4575 Fax:03-6380-4576
Mobile:090-3241-0334(Docomo) 080-4060-0334(SoftBank)
☆~~~~~~~~~~~~~~~~~~~~~~~~~~~~☆
http://twitter.com/tejima <<手嶋Twitter>>
http://www.tejimaya.com/category/tejima <<手嶋ブログ>>
http://bit.ly/edGgu <<「OpenPNEオフィシャルガイドブック」>>

全員に返信
投稿者に返信
転送
新着メール 0 件