Loginzaを使用してphpBB 3.0.Xフォーラムの認証問題を解決する

画像 友人、最近、ソーシャルネットワークを介してフォーラムに認証をインストールする必要がありました。 要件に従って見つかったすべてのプラグインのうち、 Loginzaプラグインのみが適切でした。 知らない人のために:



Loginzaは、一般的なWEBサービスへの統合アクセスを提供する認証システムです。 Loginzaアカウントを使用すると、OpenIDとLoginzaウィジェットをサポートする多数のブログサイトやフォーラムにアクセスできます。つまり、各リソースで同じ登録を行ったり、各サイトの連絡先やその他のプロファイル情報の関連性を監視したりする必要はありません。



彼について少し読んだ後、私はとても幸せでした-私が必要なもの。 ローカルマシンへのインストールは1クリックでほぼ完了し、すべてが完璧に機能しました。 しかし、実際に機能するサーバーに転送した後、何らかの理由で認証と登録が行われました。 システムにログインしようとすると、フォーラムでユーザーが特定されたと言われましたが、次回フォーラムに切り替えたときに承認が切れました。 数時間座ってコードを調べた後、問題の原因を見つけました。



ちなみに、このソリューションはトークン検証モードを無効にしているため、セキュリティ上の影響が少しあります。 一般に、私はこれに到達した方法についての私の理論を説明しません。すぐにAPIに注意を引きます。 この点に興味があります(Loginza.APIを使用してトークンキーを確認します)。



承認が成功したことを確認するには、URLにリクエストを行う必要があります:

loginza.ru/api/authinfo?token=[TOKEN_KEY_VALUE]&id=[WIDGET_ID]&sig=[API_SIGNATURE]





ここで、[TOKEN_KEY_VALUE]-トークンの値を確認しました。

[WIDGET_ID]-ウィジェットID。

[API_SIGNATURE]-APIへのリクエストの署名。 トークン値とウィジェットの秘密鍵の追加からMD5として計算されます。 例:md5(token + skey)。



一般に、このアドレスは、行113の\ include \ loginza \ libs \ LoginzaAPI.class.phpクラスで生成されます。



$url = str_replace('%method%', $method, self::API_URL).'?'.http_build_query($params);







いくつかの実験の結果、このアドレスは正しく生成されないことがわかりました。 パラメーター[WIDGET_ID]および[API_SIGNATURE]は追加されません。 これらのパラメータを手動で追加しても何も起こりませんでしたが、Loginzaはsigが間違っていると答えました。 セキュリティを無視することが決定されました。



そのため、Loginzaを介したフォーラムでの認証が機能しない場合は、次の手順を実行します。



1)ウィジェットのプロファイル設定(作成した、サイトへの権利を確認しましたか?)サイト設定で、「安全なトークン検証モード」チェックボックスをオフにします。



2)ファイル\ include \ loginza \ libs \ LoginzaAPI.class.php、38行目。次の行を置き換えます。

return $this->apiRequert('authinfo', array('token' => $token));







return $this->apiRequert('authinfo', $token);







3)同じファイルの113行を

$url = str_replace('%method%', $method, self::API_URL).'?'.http_build_query($params);







$url .= 'http://loginza.ru/api/authinfo?token='.$params;







問題は解決しました! :)



All Articles