HTTPリスナー:httpユーザーとパスワードを取得するにはどうすればよいですか?
-
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);
}
所属していません StackOverflow