Project

General

Profile

Bug(バグ) #2087

OpenPNE2系からコンバートした環境でかんたんログインできない携帯機種がある

Added by Mutsumi Imamura over 8 years ago. Updated almost 4 years ago.

Status:
Fixed(完了)
Priority:
High(高め)
Target version:
Start date:
2011-05-12
Due date:
% Done:

100%

3.6 で発生するか:
Yes
3.8 で発生するか:
Unknown (未調査)

Description

Overview (現象)

OpenPNE2の時にかんたんログインを設定しておき、そのSNSをOpenPNE3系(3.4 or 3.6)にコンバートした場合、設定した携帯機種でかんたんログインできない。
au(misora)はかんたんログインできるが、softbankとdocomoの携帯でかんたんログインできない。
本来はかんたんログインできるのが正しい仕様である。

もちろん、コンバート後かんたんログインを再設定すれば再びかんたんログインできるようになる。

再現バージョン

  • OpenPNE3.6beta10-dev
  • OpenPNE3.4.12-dev

再現した携帯機種

  • Docomo SH-05A,P901is
  • softbank 840P

再現手順

  1. OpenPNE2.14で携帯(au、docomo、softbank)を登録する
  2. かんたんログインできるようにしておく(個体識別番号を登録しておく)
  3. 手順1で登録したSNSをOpenPNE3.6(または3.4)にコンバートする
  4. 手順1で登録した携帯でかんたんログインを試みる
  5. auはかんたんログインできる
  6. docomoとsoftbankはかんたんログイン出来ずにログイン失敗しましたのページに遷移する

Causes (原因)

OpenPNE 2 では端末付与型の携帯電話個体識別番号を優先して取得しているにも関わらず、 OpenPNE 3 ではゲートウェイ付与型の携帯電話個体識別番号を優先して取得し、かんたんログインに使用しているため。

Way to fix (修正内容)

ゲートウェイ付与型の携帯電話個体識別番号のみ取得や、端末付与型の携帯電話個体識別番号のみの取得がおこなえるようにし、かんたんログインなどそれらの区別が必要な場面において柔軟に対応できるようにした。

この変更を利用したかんたんログイン自体の実装の修正については、 opAuthMobileUIDPlugin 側で実施した。 http://redmine.openpne.jp/issues/2220


Related issues

Related to OpenPNE 3 - Backport(バックポート) #2205: OpenPNE2系からコンバートした環境でかんたんログインできない携帯機種がある Fixed(完了) 2011-06-10
Related to opAuthMobileUIDPlugin - Enhancement(機能追加・改善) #2220: OpenPNE 2 からアップグレードしたユーザの救済のために携帯電話個体識別番号のマッチングを複数回おこなう Fixed(完了) 2011-06-14
Related to OpenPNE 3 - Backport(バックポート) #2525: OpenPNE2系からコンバートした環境でかんたんログインできない携帯機種がある Fixed(完了) 2011-05-12

Associated revisions

Revision ae8664d1 (diff)
Added by Kousuke Ebihara about 8 years ago

added test for fallback uid (fixes #2087)

Revision 9f3f558e (diff)
Added by Kousuke Ebihara about 8 years ago

divided opWebRequest::getMobileUID() into retriving normal uid part, retriving fallback uid part and hashing uid part (refs #2087)

Revision 89da5b0c (diff)
Added by Kousuke Ebihara about 8 years ago

changed to retrieve only non-fallback mobile uid in OpenPNE 3 core because fallback uid is just for keeping BC reason (refs #2087)

Revision 05c7f459 (diff)
Added by Kousuke Ebihara about 8 years ago

changed not to retrieve fallback uid in member/registerMobileToRegisterEnd (oversight in my 89da5b0c commit) (fixes #2087)

Revision 0601f3e2 (diff)
Added by Kousuke Ebihara about 8 years ago

added importing configuration for keeping backward compatible with a legacy (insecure) implementation of mobile uid authentication on upgrade from OpenPNE 2 (refs #2087)

Revision 50d374cd (diff)
Added by Kousuke Ebihara about 8 years ago

changed opWebRequest::getMobileFallbackUID() to return both of OpenPNE 3 format ID and OpenPNE 2 format one (fixes #2087)

History

#1 Updated by isao sano over 8 years ago

参考情報

概要

2系と3系で取得される固体識別番号が異なる

手順

1. 2.14で固体識別番号(暗号化済)を取得。→文字列Aとする
2. 2.14から3.6にバージョンアップ
3. 手順2の環境で固体識別番号を再度紐付け(かんたんログイン設定をしなおす)
4. 手順3で設定しなおされた固体識別番号(暗号化済)を取得。→文字列Bとする
5. 文字列Aと文字列Bが異なる

再現が確認される機種

  • docomo P901i
  • softbank 840P

※au iida misoraでは再現しませんでした

補足情報

取得された固体識別番号(暗号化済)
docomo softbank
2.14 5de30a19ba0bc737419cc01d93ac02a4 28789694a6c9d6345c1376ec9e9d8c0c
3.6beta9 03dcc4cd5fd99292fd57ead077bf2d76 d9624ba8ecb57d2409eb596e95fd1f35

関連しそうな情報

  • ドコモとソフトバンクは端末側とゲートウェイ側で別の個体識別番号を持っているので、2系と3系で別のものを優先して取得しているのではないか?
  • 個体識別番号の件、分岐条件の順序が違うからじゃないか?

#2 Updated by Kousuke Ebihara over 8 years ago

  • Project changed from OpenPNE Security Issue to OpenPNE 3

#3 Updated by Kousuke Ebihara over 8 years ago

  • Priority changed from Normal(通常) to High(高め)

#4 Updated by Kousuke Ebihara over 8 years ago

  • Target version set to OpenPNE 3.7.0

#5 Updated by Kousuke Ebihara over 8 years ago

  • 3.6 で発生するか set to Yes

#6 Updated by Shingo Yamada over 8 years ago

  • Assignee set to Kousuke Ebihara

#7 Updated by Kousuke Ebihara about 8 years ago

  • コアと opAuthMobileUIDPlugin の両方の変更が必要
  • ゲートウェイからきた ID のみを取得するオプションと、両方取得するオプションの両方を追加する
    • 新規セットアップ時のデフォルトは前者で、アップデート時のデフォルトは後者

#8 Updated by Kousuke Ebihara about 8 years ago

opAuthMobileUIDPlugin 側にチケットを作成しました。 http://redmine.openpne.jp/issues/2220

#9 Updated by Kousuke Ebihara about 8 years ago

  • Status changed from New(新規) to Pending Review(レビュー待ち)
  • % Done changed from 0 to 50

更新履歴 ae8664d1d5568a4c22dbacc64e4318abbbed71e2 で適用されました。

#10 Updated by Rimpei Ogawa about 8 years ago

  • Status changed from Pending Review(レビュー待ち) to Rejected(差し戻し)

本チケットの対象範囲からは若干外れるかもしれませんが、コアの member/configUID アクション(「かんたんログイン設定」というページ)や opAuthRegisterForm での携帯電話個体識別番号の登録時に getMobileUID() を引数なしで呼び出すために端末付与型のIDを登録できてしまう状態になっています。

修正前のコードも端末付与型のIDを登録できていた状態でしたが、特に opAuthMobileUIDPlugin が #2220 の修正適用後のバージョンでインストールした環境では、登録時に端末付与型のIDのみを送信するとユーザー側には携帯電話個体識別番号の登録が正常に完了したように見えるにもかかわらず、かんたんログインはできない状態となってしまいます。

#2220 で opAuthMobileUIDPlugin に端末付与型の携帯電話個体識別番号を取得しないようにするオプションを追加していますが、携帯電話個体識別番号の登録処理がコアにある現状では、プラグイン側の設定に従ってコアの挙動を変えるのは不自然であるためコア側の設定項目として持つ方法も検討すべきかもしれません。

ただ、OpenPNE2からのアップグレード以前に携帯電話個体識別番号を登録していたユーザーの救済目的で端末付与型のIDを利用したいだけであれば、新規に登録する携帯電話個体識別番号で端末付与型のIDを登録できる必要はないため、認証時の取得設定によらず登録時には端末付与型のIDは取得しないようにする方法も考えられます。

#11 Updated by Shingo Yamada about 8 years ago

  • 360対象 set to beta13

#12 Updated by Kousuke Ebihara about 8 years ago

  • Status changed from Rejected(差し戻し) to Pending Review(レビュー待ち)

89da5b0c6632cfac9c668df9da331aca3a037332http://redmine.openpne.jp/issues/2087#note-10 の指摘事項に対応しました。

ただ、OpenPNE2からのアップグレード以前に携帯電話個体識別番号を登録していたユーザーの救済目的で端末付与型のIDを利用したいだけであれば、新規に登録する携帯電話個体識別番号で端末付与型のIDを登録できる必要はないため、認証時の取得設定によらず登録時には端末付与型のIDは取得しないようにする方法も考えられます。

コアに設定項目を持ってくるかどうかは悩みどころでしたが、後方互換性維持以外の目的で端末付与型の ID を使用する理由はないため、シンプルにこの方針を採用する方向で対応しました。

#13 Updated by Rimpei Ogawa about 8 years ago

  • Status changed from Pending Review(レビュー待ち) to Rejected(差し戻し)

note-10 のコメントで漏れていましたが、 member/registerMobileToRegisterEnd アクション内にも mobile_uid を登録している処理があり、ここでも端末付与型の ID を取得しない対応が必要です。

apps/mobile_frontend/modules/member/actions/actions.class.php

141         $member->setConfig('mobile_uid', $request->getMobileUID());

#14 Updated by Kousuke Ebihara about 8 years ago

  • Status changed from Rejected(差し戻し) to Pending Review(レビュー待ち)

更新履歴 05c7f459f684fbe3c3c9dbd43e8f8c2ce4a04784 で適用されました。

#15 Updated by Maki Takahashi about 8 years ago

  • Status changed from Pending Review(レビュー待ち) to Pending Testing(テスト待ち)
  • % Done changed from 50 to 70

note-13 での指摘が修正されていること、
および他にmobile_uidを登録しているが対応から漏れているものがないことを確認いたしました。

#16 Updated by Shingo Yamada about 8 years ago

  • Status changed from Pending Testing(テスト待ち) to Rejected(差し戻し)
  • % Done changed from 70 to 50

BPチケット側で「差し戻し」となています。
本チケットのステータスも変更します。

#17 Updated by Kousuke Ebihara about 8 years ago

http://redmine.openpne.jp/issues/2205#note-11 より指摘内容を転記します。

テスト実施しましたが、修正が必要な点がありましたので確認お願いします。

h3. 2.12→3.6アップグレード後、かんたんログイン確認

* *試験手順*
1.OpenPNE2.12で携帯端末を登録する
2. かんたんログインできるように個体識別番号を登録する
3.手順1で登録したSNSをOpenPNE3.6にアップグレードする
4.手順1で登録した携帯端末で、かんたんログインする

* *試験結果*
OpenPNE3.6にアップグレード後、docomo、SoftBank端末で、かんたんログインできない。

* *修正方針*
OpenPNE3.6にアップグレード後、docomo、SoftBank端末で、かんたんログインできるように修正お願いします。

h3. 2.14→3.6アップグレード後、かんたんログイン確認

* *試験手順*
1.OpenPNE2.14で携帯端末を登録する
2. かんたんログインできるように個体識別番号を登録する
3.手順1で登録したSNSをOpenPNE3.6にアップグレードする
4.手順1で登録した携帯端末で、かんたんログインする

* *試験結果*
OpenPNE3.6にアップグレード後、docomo、SoftBank端末で、かんたんログインできない。

* *修正方針*
OpenPNE3.6にアップグレード後、docomo、SoftBank端末で、かんたんログインできるように修正お願いします。

#18 Updated by Kousuke Ebihara about 8 years ago

  • Status changed from Rejected(差し戻し) to Pending Review(レビュー待ち)

0601f3e2 で、 OpenPNE 2 からアップグレードをおこなった際に互換性維持のための設定値を有効にしていなかったのを修正しました。

本件の対応中に、 OpenPNE 2 からのアップグレード時に「認証に使用する ID の設定」が「携帯電話個体識別番号のみによって認証をおこなう (非推奨)」に設定されていなかった問題を発見したため、併せて対処しました。

#19 Updated by Maki Takahashi about 8 years ago

  • Status changed from Pending Review(レビュー待ち) to Pending Testing(テスト待ち)
  • % Done changed from 50 to 70

修正確認いたしました。問題ないと思います

#20 Updated by Kousuke Ebihara about 8 years ago

  • Status changed from Pending Testing(テスト待ち) to Rejected(差し戻し)
  • % Done changed from 70 to 50

OpenPNE 2 と OpenPNE 3 とで端末付与型の ID としてみなす範囲が異なっており、 OpenPNE 2 からコンバートした環境でログインがおこなえない状態になっていました。

具体的には、まず、 docomo の端末付与型 ID(icc\w{20})の場合、 OpenPNE 2 では先頭の icc からを ID として扱っていたのに対し、 OpenPNE 3 では (PEAR::Net_UserAgentMobile では) icc に後続する文字列のみを ID として扱っていました。また、 SoftBank の端末付与型 ID (SN.+)の場合も、 OpenPNE 2 では先頭の SN を含んだ文字列を、 OpenPNE 3 では SN に後続する文字列のみを ID として取り扱っていました。

docomo と SoftBank の端末付与型の ID は、 icc や SN といったプレフィックスがついたものとそうでないものの 2 種類を取得、マッチングするように修正する必要があります。

#21 Updated by Kousuke Ebihara about 8 years ago

  • Status changed from Rejected(差し戻し) to Pending Review(レビュー待ち)

#22 Updated by Kousuke Ebihara about 8 years ago

https://github.com/ebihara/opAuthMobileUIDPlugin/commit/4c320320554171a96d13526c26a791591da72936 で opAuthMobileUIDPlugin 側の修正をおこないました(#2220)。

#23 Updated by Maki Takahashi about 8 years ago

  • Status changed from Pending Review(レビュー待ち) to Pending Testing(テスト待ち)
  • % Done changed from 50 to 70

修正確認いたしました。

#24 Updated by isao sano almost 8 years ago

  • Status changed from Pending Testing(テスト待ち) to Fixed(完了)
  • % Done changed from 70 to 100

テスト完了致しました。
問題ありませんでしたので、ステータスをFixedに致します。

#25 Updated by kaoru n almost 4 years ago

  • 3.8 で発生するか set to Unknown (未調査)

Also available in: Atom PDF