アクセスしようとしています。httpbin.org基本認証があります。ユーザー名とパスワードを入力する必要があります。コマンドターミナル(Linux)でTelnetを使用して、少なくとも以下を実行します。
telnet httpbin.org 80
HEAD /basic-auth/user/passwd HTTP/1.1
401ステータスコード(承認されていません)を提供します。
これで、ユーザー名とパスワードを使用して何らかの方法でアクセスしたいと思います(Base64では、ユーザー名:パスワードを入力してください)。どうすればいいですか?私はこれを試しました(401ステータスコード以降)
HEAD /username:password HTTP/1.1
(しかし、これは404ステータスコードを提供します)
答え1
HTTP基本認証では、ユーザー名とパスワードの両方にBase-64エンコーディングを使用します。ユーザー名testuser
とパスワードの場合は、hunter2
文字列を取得してtestuser:hunter2
base64でエンコードします。これはあなたに文字列を与えるでしょうdGVzdHVzZXI6aHVudGVyMg==
そのエンコーディングをどのように取得しますか?ほとんどのPOSIXシステムはopenssl
インストールされており、この場合非常に重要ですecho -n "testuser:hunter2" | openssl base64 -base64
。それ以外の場合、エンコードにはaも含まれ、誤ってエンコードされた文字列が提供されます(パスワードは通常文字の終わりで終わらないため)。-n
newline
その後、以下で取引できますtelnet
。
telnet hostname.example.com 80
GET / HTTP/1.1
Authorization: Basic dGVzdHVzZXI6aHVudGVyMg==