Closed1

PythonのrequestsモジュールでBasic認証する際には気を付ける

koheiyamayamakoheiyamayama

よくある https://username:password@example.com/path/to/endpoint みたいにBasic認証できるところは多いと思う。
また、もう一つ(こっちが正当なやり方)のやり方としてAuthorization HeaderにBasic xxxxとするやり方がある。まぁ詳しくはRFCでもmozillaでも読んで欲しい。

今回、Pythonのrequestsモジュール(モジュールやパッケージ、ライブラリの意味合いがよくわかってない、そのくらいPython初心者です)で一つ目の方法でBasic認証をしようとした。
また、諸事情でAuthorization Headerでは他の認証方法を指定していた。

すると、なんかサーバ側からエラーが返ってきた。このサーバの管理は他のチームがしており、ログをみることが出来なかった。よって、調査はだいぶ遅れてしまった。

しばらく調査したところ、Authorizatin HeaderがBasic xxxxになっていることが分かった。
そう、PythonのrequestsモジュールはURLに含んだusernameとpasswordを勝手に?Authorization Headerとしてセットするらしい。

これによって元々別の認証方法を埋め込んでいたはずが、上書きされてしまい認証が通っていなかった。

どうもこれを回避する方法はない(というより、そういう状況はあまりない?)みたいだったので、他の手段を検討 / 実装した。

Python、仲良くなれませんでした。

このスクラップは2022/11/01にクローズされました