Bug(バグ) #2087
完了OpenPNE2系からコンバートした環境でかんたんログインできない携帯機種がある
100%
説明
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
isao sano さんが13年以上前に更新
参考情報¶
概要¶
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系で別のものを優先して取得しているのではないか?
- 個体識別番号の件、分岐条件の順序が違うからじゃないか?
Kousuke Ebihara さんが13年以上前に更新
- コアと opAuthMobileUIDPlugin の両方の変更が必要
- ゲートウェイからきた ID のみを取得するオプションと、両方取得するオプションの両方を追加する
- 新規セットアップ時のデフォルトは前者で、アップデート時のデフォルトは後者
Kousuke Ebihara さんが13年以上前に更新
opAuthMobileUIDPlugin 側にチケットを作成しました。 http://redmine.openpne.jp/issues/2220
Kousuke Ebihara さんが13年以上前に更新
- ステータス を New(新規) から Pending Review(レビュー待ち) に変更
- 進捗率 を 0 から 50 に変更
更新履歴 ae8664d1d5568a4c22dbacc64e4318abbbed71e2 で適用されました。
Rimpei Ogawa さんが13年以上前に更新
- ステータス を Pending Review(レビュー待ち) から Rejected(差し戻し) に変更
本チケットの対象範囲からは若干外れるかもしれませんが、コアの member/configUID アクション(「かんたんログイン設定」というページ)や opAuthRegisterForm での携帯電話個体識別番号の登録時に getMobileUID() を引数なしで呼び出すために端末付与型のIDを登録できてしまう状態になっています。
修正前のコードも端末付与型のIDを登録できていた状態でしたが、特に opAuthMobileUIDPlugin が #2220 の修正適用後のバージョンでインストールした環境では、登録時に端末付与型のIDのみを送信するとユーザー側には携帯電話個体識別番号の登録が正常に完了したように見えるにもかかわらず、かんたんログインはできない状態となってしまいます。
#2220 で opAuthMobileUIDPlugin に端末付与型の携帯電話個体識別番号を取得しないようにするオプションを追加していますが、携帯電話個体識別番号の登録処理がコアにある現状では、プラグイン側の設定に従ってコアの挙動を変えるのは不自然であるためコア側の設定項目として持つ方法も検討すべきかもしれません。
ただ、OpenPNE2からのアップグレード以前に携帯電話個体識別番号を登録していたユーザーの救済目的で端末付与型のIDを利用したいだけであれば、新規に登録する携帯電話個体識別番号で端末付与型のIDを登録できる必要はないため、認証時の取得設定によらず登録時には端末付与型のIDは取得しないようにする方法も考えられます。
Kousuke Ebihara さんが13年以上前に更新
- ステータス を Rejected(差し戻し) から Pending Review(レビュー待ち) に変更
89da5b0c6632cfac9c668df9da331aca3a037332 で http://redmine.openpne.jp/issues/2087#note-10 の指摘事項に対応しました。
ただ、OpenPNE2からのアップグレード以前に携帯電話個体識別番号を登録していたユーザーの救済目的で端末付与型のIDを利用したいだけであれば、新規に登録する携帯電話個体識別番号で端末付与型のIDを登録できる必要はないため、認証時の取得設定によらず登録時には端末付与型のIDは取得しないようにする方法も考えられます。
コアに設定項目を持ってくるかどうかは悩みどころでしたが、後方互換性維持以外の目的で端末付与型の ID を使用する理由はないため、シンプルにこの方針を採用する方向で対応しました。
Rimpei Ogawa さんが13年以上前に更新
- ステータス を 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());
Kousuke Ebihara さんが13年以上前に更新
- ステータス を Rejected(差し戻し) から Pending Review(レビュー待ち) に変更
更新履歴 05c7f459f684fbe3c3c9dbd43e8f8c2ce4a04784 で適用されました。
Maki Takahashi さんが13年以上前に更新
- ステータス を Pending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
- 進捗率 を 50 から 70 に変更
note-13 での指摘が修正されていること、
および他にmobile_uidを登録しているが対応から漏れているものがないことを確認いたしました。
Shingo Yamada さんが13年以上前に更新
- ステータス を Pending Testing(テスト待ち) から Rejected(差し戻し) に変更
- 進捗率 を 70 から 50 に変更
BPチケット側で「差し戻し」となています。
本チケットのステータスも変更します。
Kousuke Ebihara さんが13年以上前に更新
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端末で、かんたんログインできるように修正お願いします。
Kousuke Ebihara さんが13年以上前に更新
- ステータス を Rejected(差し戻し) から Pending Review(レビュー待ち) に変更
0601f3e2 で、 OpenPNE 2 からアップグレードをおこなった際に互換性維持のための設定値を有効にしていなかったのを修正しました。
本件の対応中に、 OpenPNE 2 からのアップグレード時に「認証に使用する ID の設定」が「携帯電話個体識別番号のみによって認証をおこなう (非推奨)」に設定されていなかった問題を発見したため、併せて対処しました。
Maki Takahashi さんが13年以上前に更新
- ステータス を Pending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
- 進捗率 を 50 から 70 に変更
修正確認いたしました。問題ないと思います
Kousuke Ebihara さんが13年以上前に更新
- ステータス を 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 種類を取得、マッチングするように修正する必要があります。
Kousuke Ebihara さんが13年以上前に更新
- ステータス を Rejected(差し戻し) から Pending Review(レビュー待ち) に変更
Kousuke Ebihara さんが13年以上前に更新
https://github.com/ebihara/opAuthMobileUIDPlugin/commit/4c320320554171a96d13526c26a791591da72936 で opAuthMobileUIDPlugin 側の修正をおこないました(#2220)。
Maki Takahashi さんが13年以上前に更新
- ステータス を Pending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
- 進捗率 を 50 から 70 に変更
修正確認いたしました。