web-dev-qa-db-ja.com

URLパラメータでHTTP基本認証のユーザー/パスを渡すことはできますか?

これは不可能だと思いますが、私が知っている誰かがそれはうまくいくと主張しました。どのパラメータを試すかさえわからないし、これがどこにも文書化されていません。

http://myserver.com/~user=username&password=mypassword を試しましたが、うまくいきません。

HTTPパラメータ(GETまたはPOST)を介してユーザー/パスを渡すことが実際には不可能であることを確認できますか?

175
ripper234

実際、標準のHTTP認証のクエリパラメータを介してユーザー名とパスワードを渡すことはできません。代わりに、次のような特別なURL形式を使用します:http://username:[email protected]/-標準のHTTP "Authorization"ヘッダーで資格情報を送信します。

話している相手が、クエリパラメータを調べて資格情報を確認するカスタムモジュールまたはコードを考えていた可能性があります。これは標準のHTTP認証ではありませんが、アプリケーション固有のものです。

234
womble

http:// username:[email protected] は、FireFox、Chrome、Safariで機能しますが、IEでは機能しません。

Microsoftナレッジベース

20
Girish Kumar

基本認証パラメータをURLに渡すことは推奨されません

この目的のためのAuthorizationヘッダーフィールドがあります。ここで確認してください。 http header list

使い方はここに書かれています Basic access authentication

また、一部のブラウザーではまだサポートされていますが、URLに基​​本認証の資格情報を追加することをお勧めするソリューションは推奨されていません。

基本認証を使用しない理由の詳細については、 RFC 2617の4.1章-HTTP認証 も参照してください。


クエリ文字列に認証パラメータを渡す

OAuthまたはその他の認証サービスを使用する場合、多くの場合、認証ヘッダーではなくクエリ文字列でアクセストークンを送信できます。そのため、次のようになります。

GET https://www.example.com/api/v1/users/1?access_token=1234567890abcdefghijklmnopqrstuvwxyzABCD
18
Wilt

(明らかに)GETパラメータで任意の文字列を送信することは可能ですが、特にAJAXリクエスト内にない場合は、ログイン名とパスワードを送信することはお勧めしません。

ただし、サーバーページをコーディングしてログインとパスワードを抽出し、必要に応じて検証および使用する必要があります。

0
Steve Smith

あなたの例では、URL http://myserver.com/ は次のようになります:

http:// username:[email protected]/myserver.com/

2019年12月19日現在、これをテストしましたが、Chrome Firefox Safariで機能します

ただし、基本認証をサポートしなくなったIEは対象外です。ユーザー名とパスワードを非表示にするSSRS 2017を使用してこれを実装しました。これをシークレットブラウザでテストすることをお勧めします。さまざまなシークレットブラウザでパスワードを使用して、または使用せずにテストします。パスワードのない方はパスワードを聞いてきます。

0
Clark Vera