Airsonic: RESTAPIを介してLDAP認証を許可する

作成日 2017年02月26日  ·  22コメント  ·  ソース: airsonic/airsonic

muff1nmanによる
_ 2017年2月25日土曜日23:47GMT_
_元々はhttps://github.com/Libresonic/libresonic/issues/258_として開かれていました


ldap authを1週間ほど前に修正していたとき、REST apiのものが異なる認証メカニズムを使用していることに気付きました。これにより、ldap認証がRESTapi経由で拡張してAndroidアプリで機能しなくなります。 アプリの他の部分と同じ認証を使用するように、RESTエンドポイントの認証メカニズムを実際に変更する必要があります。 これは#69と一緒に行われるべき作業かもしれません。

external cooperation stale waiting-for-feedback bug

最も参考になるコメント

@ PoGo606問題はここで見つけることができます: https

修正方法がわかりませんが、nginxサブフィルターを使用して応答を変更し、機能させました。

        sub_filter_types text/xml application/json;
        sub_filter_once off;
        sub_filter 'subsonic' 'madsonic';

全てのコメント22件

EugeneKayによるコメント
_ 2017年2月28日火曜日23:41GMT_


よくわかりません; LDAP認証を問題なく使用していますか?

muff1nmanによるコメント
_ 2017年3月1日水曜日01:07GMT_


Androidアプリ経由? それは驚くべきことです。

これがdsubアプリの今日の問題であることを確認しました

何らかの理由で、F-DroidのDSubバリアントはLDAP認証で機能します。 ただし、他のアプリはありません。

この問題は、最近のアクティビティがないため、自動的に古いものとしてマークされています。 それ以上のアクティビティが発生しない場合は閉じられます。 貢献していただきありがとうございます。

不思議なことに、 @ thallianステートメントを確認できます

fdroidのDsubは、バージョン5.0.3で停止しています。 現在のバージョンは彼のgithubリリースページで5.4.2であり、Playストアでも同じである必要があります。

うん、それが理由だ。 ソースから5.4.2フロスバージョンをコンパイルしましたが、機能しません。 十分な時間がある場合は、これが機能しなくなったときにD-Subの正確なバージョンを特定し、差分を確認して、問題に関する洞察を得ることができます。

原因をDSubのv5.2.2とv5.3の間の変更に絞り込みました。 お役に立てば幸いです...
https://github.com/daneren2005/Subsonic/compare/5.2.2...5.3

cc @ daneren2005

この問題は、最近のアクティビティがないため、自動的に古いものとしてマークされています。 貢献していただきありがとうございます。

ここでも同じ問題があり、PlayストアからDsubに接続できず、LDAP認証が構成されています...

これについて@ daneren2005にメールを送ったところです。 すぐにパッチが適用されることを願っています!

@ PoGo606問題はここで見つけることができます: https

修正方法がわかりませんが、nginxサブフィルターを使用して応答を変更し、機能させました。

        sub_filter_types text/xml application/json;
        sub_filter_once off;
        sub_filter 'subsonic' 'madsonic';

回答ありがとうございます@ hjone72

実際、私はここで別の問題を抱えていると思います。
ローカルアカウントとLDAPアカウントはDsubではKOですが、Subsonic公式アプリを使用する場合は問題ありません。
HTTPリクエスト/レスポンスを見ると、問題はDsubで使用されているAPI認証メカニズムにあるようです。

これがDSUBアプリからのリクエストです:
GET /airsonic/rest/ping.view?u=pogo&s=xxxxxxxxxxx&t=xxxxxxxxxxx&v=1.2.0&c=DSub HTTP/1.1

応答:
<?xml version="1.0" encoding="UTF-8"?> <subsonic-response xmlns="http://subsonic.org/restapi" status="failed" version="1.15.0"> <error code="40" message="Wrong username or password."/> </subsonic-response>

公式の亜音速アプリと同じ:
POST /airsonic/rest/ping.view?u=pogo&p=enc:xxxxxxxxxxxxxxxxxx&v=1.2.0&c=android HTTP/1.1

応答:
<?xml version="1.0" encoding="UTF-8"?> <subsonic-response xmlns="http://subsonic.org/restapi" status="ok" version="1.15.0"/>

どちらのアプリも公式のSubsonicサーバーでうまく機能しています。
したがって、Airsonicは最初の認証メカニズム(GET +暗号化+ソルト?)をうまく処理できないようです。

サーバーの機能を確認するためにアプリが実行するGETリクエストがあります。 サーバーが「亜音速」を返す場合、アプリはサーバーがサポートしていると見なします(GET + Encrypted + Salted)。 サーバーが「madsonic」で応答する場合、古い方法を使用します。

これらの断片を見つけたのは少し前のことなので、ここではメモリから作業しています。 アプリ側かサーバー側のどちらかで修正できると思います。 私はそれを理解する時間がなかったので、ただ汚いハックを配置してください。 :)

md5(password + nonce)を送信するチャレンジ/レスポンスメカニズムでは、サーバー上のプレーンテキストのパスワードを知っている必要があります。 ただし、AirsonicのLDAP認証は、ユーザーからプレーンテキストのパスワードを取得し、それを使用してLDAPサーバーへの認証(「バインド」)を試みることで機能するため、このチャレンジレスポンススキームは、それまたは適切な外部認証では機能しません。機構。

これはそれほど悲劇的ではありません。 HTTPS経由でプレーンテキストのパスワードを送信することは、データベースに保存するよりも間違いなくはるかに安全であり、今では誰もがHTTPSを使用しているはずなので、この認証メカニズムを廃止することをお勧めします。 うまくいけば、少なくとも一部のクライアントが他の、皮肉なことに、より現代的な方法に切り替えるようになるでしょう。

編集:ちなみに、MD5ベースの認証は、まずまずのチャレンジ/レスポンス方式ではありません。 このようなスキームの主な目的は、パケットスニッフィングによるパスワードの取得を困難にすることです。 ただし、Subsonicの認証メカニズムには「チャレンジ」フェーズがないことに気付くかもしれません。 ナンスはクライアントによって選択されるため、キャプチャされたままst両方を送信するだけでは、リプレイ攻撃を防ぐことはできません。 もちろん、HTTPSが使用されているかどうかは関係ありません。

非推奨にすることを提案しているのは何ですか? LDAP認証またはmd5(パスワード+ノンス)?

申し訳ありませんが、 md5(password + nonce)がわかりません

@ PoGo606問題はここで見つけることができます: popeen / Popeens-DSub#68(コメント)

修正方法がわかりませんが、nginxサブフィルターを使用して応答を変更し、機能させました。

        sub_filter_types text/xml application/json;
        sub_filter_once off;
        sub_filter 'subsonic' 'madsonic';

Nginxをビルドする場合は、 --with-http_sub_module \追加するだけです。

この問題は、最近のアクティビティがないため、自動的に古いものとしてマークされています。 貢献していただきありがとうございます。

この問題は、最近のアクティビティがないため、自動的に古いものとしてマークされています。 貢献していただきありがとうございます。

@ PoGo606問題はここで見つけることができます: popeen / Popeens-DSub#68(コメント)
修正方法がわかりませんが、nginxサブフィルターを使用して応答を変更し、機能させました。

        sub_filter_types text/xml application/json;
        sub_filter_once off;
        sub_filter 'subsonic' 'madsonic';

Nginxをビルドする場合は、 --with-http_sub_module \追加するだけです。

古い問題だと私は知っています。 LDAPS認証ですべてを稼働させましたが、DSub認証を取得できません。 あなたや他の誰かがこれをNginx構成のどこに置くかを明確にできますか?

実際には、これはDSubコード自体の内部を調べる必要がある問題だと思いますか?

このページは役に立ちましたか?
0 / 5 - 0 評価