HTTPリスナー:httpユーザーとパスワードを取得するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/1147308

  •  18-09-2019
  •  | 
  •  

質問

ここで、HttpListener で問題に直面しています。

フォームからのご依頼の場合

http://user:password@example.com/

が作成されましたが、ユーザーとパスワードを取得するにはどうすればよいですか?HttpWebRequest には Credentials プロパティがありますが、HttpListenerRequest にはそれがなく、どのプロパティにもユーザー名が見つかりませんでした。

助けてくれてありがとう。

役に立ちましたか?

解決

あなたがしようとしているのは、HTTP 基本認証を介して資格情報を渡すことです。ユーザー名:パスワード構文が HttpListener でサポートされているかどうかはわかりませんが、サポートされている場合は、最初に基本認証を受け入れるように指定する必要があります。

HttpListener listener = new HttpListener();
listener.Prefixes.Add(uriPrefix);
listener.AuthenticationSchemes = AuthenticationSchemes.Basic;
listener.Start();

リクエストを受信したら、次のコマンドを使用してユーザー名とパスワードを抽出できます。

HttpListenerBasicIdentity identity = (HttpListenerBasicIdentity)context.User.Identity;
Console.WriteLine(identity.Name);
Console.WriteLine(identity.Password);

詳しい説明はこちら HttpListener で使用できる、サポートされているすべての認証方法のリスト。

他のヒント

を入手 Authorization ヘッダ。その形式は次のとおりです

Authorization: <Type> <Base64-encoded-Username/Password-Pair>

例:

Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

ユーザー名とパスワードはコロンで区切られています (この例では、 Aladdin:open sesame)、B64 でエンコードされます。

まず基本認証を有効にする必要があります。

listener.AuthenticationSchemes = AuthenticationSchemes.Basic;

次に、ProcessRequest メソッドでユーザー名とパスワードを取得できます。

if (context.User.Identity.IsAuthenticated)
{
    var identity = (HttpListenerBasicIdentity)context.User.Identity;
    Console.WriteLine(identity.Name);
    Console.WriteLine(identity.Password);
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top