Bug(バグ) #2087
完了
OpenPNE2系からコンバートした環境でかんたんログインできない携帯機種がある
Mutsumi Imamura さんが13年以上前に追加.
約9年前に更新.
説明
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
再現手順¶
- OpenPNE2.14で携帯(au、docomo、softbank)を登録する
- かんたんログインできるようにしておく(個体識別番号を登録しておく)
- 手順1で登録したSNSをOpenPNE3.6(または3.4)にコンバートする
- 手順1で登録した携帯でかんたんログインを試みる
- auはかんたんログインできる
- docomoとsoftbankはかんたんログイン出来ずにログイン失敗しましたのページに遷移する
Causes (原因)¶
OpenPNE 2 では端末付与型の携帯電話個体識別番号を優先して取得しているにも関わらず、 OpenPNE 3 ではゲートウェイ付与型の携帯電話個体識別番号を優先して取得し、かんたんログインに使用しているため。
Way to fix (修正内容)¶
ゲートウェイ付与型の携帯電話個体識別番号のみ取得や、端末付与型の携帯電話個体識別番号のみの取得がおこなえるようにし、かんたんログインなどそれらの区別が必要な場面において柔軟に対応できるようにした。
この変更を利用したかんたんログイン自体の実装の修正については、 opAuthMobileUIDPlugin 側で実施した。 http://redmine.openpne.jp/issues/2220
関連するチケット
3 (0件未完了 — 3件完了)
参考情報¶
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系で別のものを優先して取得しているのではないか?
- 個体識別番号の件、分岐条件の順序が違うからじゃないか?
- プロジェクト を 22 から OpenPNE 3 に変更
- 優先度 を Normal(通常) から High(高め) に変更
- 対象バージョン を OpenPNE 3.7.0 にセット
- 担当者 を Kousuke Ebihara にセット
- コアと opAuthMobileUIDPlugin の両方の変更が必要
- ゲートウェイからきた ID のみを取得するオプションと、両方取得するオプションの両方を追加する
- 新規セットアップ時のデフォルトは前者で、アップデート時のデフォルトは後者
- ステータス を New(新規) から Pending Review(レビュー待ち) に変更
- 進捗率 を 0 から 50 に変更
- ステータス を Pending Review(レビュー待ち) から Rejected(差し戻し) に変更
本チケットの対象範囲からは若干外れるかもしれませんが、コアの member/configUID アクション(「かんたんログイン設定」というページ)や opAuthRegisterForm での携帯電話個体識別番号の登録時に getMobileUID() を引数なしで呼び出すために端末付与型のIDを登録できてしまう状態になっています。
修正前のコードも端末付与型のIDを登録できていた状態でしたが、特に opAuthMobileUIDPlugin が #2220 の修正適用後のバージョンでインストールした環境では、登録時に端末付与型のIDのみを送信するとユーザー側には携帯電話個体識別番号の登録が正常に完了したように見えるにもかかわらず、かんたんログインはできない状態となってしまいます。
#2220 で opAuthMobileUIDPlugin に端末付与型の携帯電話個体識別番号を取得しないようにするオプションを追加していますが、携帯電話個体識別番号の登録処理がコアにある現状では、プラグイン側の設定に従ってコアの挙動を変えるのは不自然であるためコア側の設定項目として持つ方法も検討すべきかもしれません。
ただ、OpenPNE2からのアップグレード以前に携帯電話個体識別番号を登録していたユーザーの救済目的で端末付与型のIDを利用したいだけであれば、新規に登録する携帯電話個体識別番号で端末付与型のIDを登録できる必要はないため、認証時の取得設定によらず登録時には端末付与型のIDは取得しないようにする方法も考えられます。
- ステータス を Rejected(差し戻し) から Pending Review(レビュー待ち) に変更
- ステータス を Pending Review(レビュー待ち) から Rejected(差し戻し) に変更
note-10 のコメントで漏れていましたが、 member/registerMobileToRegisterEnd アクション内にも mobile_uid を登録している処理があり、ここでも端末付与型の ID を取得しない対応が必要です。
apps/mobile_frontend/modules/member/actions/actions.class.php
141 $member->setConfig('mobile_uid', $request->getMobileUID());
- ステータス を Rejected(差し戻し) から Pending Review(レビュー待ち) に変更
- ステータス を Pending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
- 進捗率 を 50 から 70 に変更
note-13 での指摘が修正されていること、
および他にmobile_uidを登録しているが対応から漏れているものがないことを確認いたしました。
- ステータス を Pending Testing(テスト待ち) から Rejected(差し戻し) に変更
- 進捗率 を 70 から 50 に変更
BPチケット側で「差し戻し」となています。
本チケットのステータスも変更します。
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端末で、かんたんログインできるように修正お願いします。
- ステータス を Rejected(差し戻し) から Pending Review(レビュー待ち) に変更
0601f3e2 で、 OpenPNE 2 からアップグレードをおこなった際に互換性維持のための設定値を有効にしていなかったのを修正しました。
本件の対応中に、 OpenPNE 2 からのアップグレード時に「認証に使用する ID の設定」が「携帯電話個体識別番号のみによって認証をおこなう (非推奨)」に設定されていなかった問題を発見したため、併せて対処しました。
- ステータス を Pending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
- 進捗率 を 50 から 70 に変更
- ステータス を Pending Testing(テスト待ち) から Rejected(差し戻し) に変更
- 進捗率 を 70 から 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 種類を取得、マッチングするように修正する必要があります。
- ステータス を Rejected(差し戻し) から Pending Review(レビュー待ち) に変更
- ステータス を Pending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
- 進捗率 を 50 から 70 に変更
- ステータス を Pending Testing(テスト待ち) から Fixed(完了) に変更
- 進捗率 を 70 から 100 に変更
テスト完了致しました。
問題ありませんでしたので、ステータスをFixedに致します。
- 3.8 で発生するか を Unknown (未調査) にセット
他の形式にエクスポート: Atom
PDF