[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[upki-fed:00914] Re: embedded-wayf.jsのバグ修正



NII 西村さま

豊橋技術科学大学 中村です。
お世話になっております。

> https://test-sp1.gakunin.nii.ac.jp/secure2/mostusedidps.html


こちらのURLにて、正しく動作していることを確認いたしました。
お忙しい中ご対応いただき、ありがとうございました。

運用フェデレーションの方についても対応いただければ幸いです。
今後ともよろしくお願いいたします。

> On 2015/02/26, at 14:08, Takeshi NISHIMURA <xxxxxxx@xxxxxxxxx> wrote:
> 
> 中村様
> NIIの西村です。
> 
> 新バージョンの検証および問題のご指摘ありがとうございます。返答遅くなりまして申し訳ございません。
> 
> 問題を認識し、テストフェデレーションのDSを更新してみました。
> 以下でテストできます。
> https://test-sp1.gakunin.nii.ac.jp/secure2/mostusedidps.html
> 
> 以前のバージョンでの結果を添付しますが、まだ修正不足の部分があるようなので、
> 引き続き調査します。
> 
>> 2015/02/20 9:38、Junya Nakamura <xxxxx@xxxxxxxxxxxxx> のメール:
>> 
>> 豊橋技術科学大学 中村純哉と申します。
>> お世話になっております。
>> 
>> Embedded DS - GakuNinShibInstall - meatwiki:
>> https://meatwiki.nii.ac.jp/confluence/display/GakuNinShibInstall/Embedded+DS
>> 
>> こちらの記述を参考に Embedded DS を設定していたところ、
>> https://ds.gakunin.nii.ac.jp/WAYF2/embedded-wayf.js
>> のバグに遭遇しましたので、相談させていただきたく、投稿させて頂きました。
>> 
>> バグは、特定のIdPをリストの先頭に表示するためのパラメータ
>> wayf_most_used_idps を設定すると、TypeErrorによってJavaScriptの実
>> 行が失敗する、というものです。そのため、IdPを選択するためのプルダウンメ
>> ニューが表示されず、認証を行うことができません。
>> このとき、FireFox 31.3のコンソールには、
>> 
>>  TypeError: json_idp_favoritelist[(json_idp_favoritelist.length - 1)]
>> is undefined
>> 
>> というエラーが出力されます。
>> 
>> embedded-wayf.jsのコードを見たところ wayf_most_used_idps に設定された値
>> を処理している箇所(3724行〜3737行)に問題があることわかりました。具体的
>> には、
>> 
>>  問題1: json_idp_listに要素が挿入される前にjson_idp_listを参照している
>>  問題2: json_idp_listの要素を参照するのに整数でなく文字列を使っている
>> 
>> という2つが原因で、TypeErrorが発生していました。
>> 
>> このバグを修正するパッチを作成しましたので、
>> https://ds.gakunin.nii.ac.jp/WAYF2/embedded-wayf.js
>> で配布しているコードを修正していただけないでしょうか。
>> (パッチは本メール末尾に載せております)
>> 
>> 特に複雑な修正は行なっておらず、
>> ・問題1の解決のためにコードの位置を移動
>> ・問題2の解決のためにjson_idp_listの参照方法を変更
>> しただけのものです。
>> 
>> 不躾なお願いで申し訳ありませんが、ご検討よろしくお願いいたします。
>> 
>> ----
>> 中村 純哉 xxxxx@xxxxxxxxxxxxx
>> 豊橋技術科学大学 情報メディア基盤センター 特任助教
>> 
>> --- embedded-wayf.js.orig       2015-02-19 20:22:18.575681660 +0900
>> +++ embedded-wayf.js    2015-02-19 20:23:18.976223437 +0900
>> @@ -3721,20 +3721,6 @@
>>                writeHTML('<input name="request_type" type="hidden"
>> value="embedded">');
>>                writeHTML('<input id="user_idp" name="user_idp"
>> type="hidden" value="">');
>> 
>> -               // Favourites
>> -               if (wayf_most_used_idps.length > 0){
>> -                       if(typeof(wayf_overwrite_most_used_idps_text) !=
>> "undefined"){
>> -                               favorite_idp_group =
>> wayf_overwrite_most_used_idps_text;
>> -                       }
>> -
>> -                       // Show additional IdPs in the order they are
>> defined
>> -                       for ( var i=0; i < wayf_most_used_idps.length; i++){
>> -                               if (wayf_idps[wayf_most_used_idps[i]]){
>> -
>> json_idp_favoritelist.push(json_idp_list[wayf_most_used_idps[i]]);
>> -
>> json_idp_favoritelist[json_idp_favoritelist.length - 1].categoryName =
>> favorite_idp_group;
>> -                               }
>> -                       }
>> -               }
>>                if (last_idp ==
>> 'https://shib-idp01.iic.hokudai.ac.jp/idp/shibboleth'){
>>                        dispDefault = '北海道大学';
>>                }               if
>> (isAllowedType('https://shib-idp01.iic.hokudai.ac.jp/idp/shibboleth','hokkaido')
>> && isAllowedIdP('h
>> ttps://shib-idp01.iic.hokudai.ac.jp/idp/shibboleth')){
>> @@ -5539,6 +5525,28 @@
>>                        }
>> 
>>                }
>> +
>> +               // Favourites
>> +               if (wayf_most_used_idps.length > 0){
>> +                       if(typeof(wayf_overwrite_most_used_idps_text) !=
>> "undefined"){
>> +                               favorite_idp_group =
>> wayf_overwrite_most_used_idps_text;
>> +                       }
>> +
>> +                       // Show additional IdPs in the order they are
>> defined
>> +                       for ( var i=0; i < wayf_most_used_idps.length; i++){
>> +                               if (wayf_idps[wayf_most_used_idps[i]]){
>> +
>> +                                       for (var j=0;
>> j<json_idp_list.length; j++) {
>> +                                               if
>> (json_idp_list[j].entityid == wayf_most_used_idps[i]) {
>> +
>> json_idp_favoritelist.push(json_idp_list[j]);
>> +                                                       break;
>> +                                               }
>> +                                       }
>> +
>> json_idp_favoritelist[json_idp_favoritelist.length - 1].categoryName =
>> favorite_idp_group;
>> +                               }
>> +                       }
>> +               }
>> +
>>                writeHTML('<div style="clear:both;"></div>');
>>                writeHTML('<table border="0" cellpadding="0"
>> cellspacing="0" style="width: 100%;">');
>>                writeHTML('<tr>');
> 
> -- 
> 西村健
> 国立情報学研究所 TEL:03-4212-2890
> <gakuninds-13.png>