[Mono-list] Basic authentication with HttpListener
Pedro Santos Gomez
pedrosantosgomezlists at yahoo.es
Wed Jan 24 10:13:23 EST 2007
Hi again!
I have finally tried it under Microsoft .NET and the same code seems to be run correctly. I guess authentication is not implemented in System.Net.HttpListener.
Pedro Santos Gomez <pedrosantosgomezlists at yahoo.es> escribió: Hi!
I'm having problems with enabling Basic authentication in System.Net.HttpListener. I am trying code from a lot of forums and so on, with no result.
This code, for example:
"""
using System.IO;
using System.Web;
using System.Net;
using System;
public class A { static void Main(){
HttpListener listener = new HttpListener();
/* Here is the important code */
listener.AuthenticationSchemeSelectorDelegate += delegate{
Console.WriteLine("Asking for authentication scheme");
return AuthenticationSchemes.Basic;
};
/* end of important code */
listener.Prefixes.Add("http://*:1234/");
listener.Start();
HttpListenerContext context = listener.GetContext();
HttpListenerRequest request = context.Request;
Console.WriteLine("Received: {0} {1} from {2}",request.HttpMethod,request.Url,request.RemoteEndPoint);
if(context.User == null){
Console.WriteLine("No user!");
}else{
Console.WriteLine(context.User.Identity == null);
HttpListenerBasicIdentity identity = (HttpListenerBasicIdentity)context.User.Identity;
Console.WriteLine("Name = {0}; password = {1}",identity.Name,identity.Password);
}
HttpListenerResponse response = context.Response;
string responseString = "<HTML><BODY> Hello world!</BODY></HTML>";
byte[] buffer = System.Text.Encoding.UTF8.GetBytes(responseString);
response.ContentLength64 = buffer.Length;
System.IO.Stream output = response.OutputStream;
output.Write(buffer,0,buffer.Length);
output.Close();
listener.Stop();
} }
"""
and entering in http://localhost:1234/ returns the Hello World... but it never says "Asking for authentication scheme" and context.User is null. And I don't find any way to force the browser to ask for authentication. Neither even entering in http://user:sample@localhost:1234/ helps.
Replacing the "important code" by:
"""
listener.AuthenticationSchemes = AuthenticationSchemes.Basic;
"""
does have the same effect.
Did anybody manage to make this work under Mono? Thank you very much.
By the way, I'm running:
"""
$ mcs --version
Mono C# compiler version 1.2.2.1
$ mono --version
Mono JIT compiler version 1.2.2.1, (C) 2002-2006 Novell, Inc and Contributors. www.mono-project.com
TLS: normal
GC: Included Boehm (with typed GC)
SIGSEGV: normal
Disabled: none
"""
from the Mono 1.2.2.1 generic Linux on x86 installer.
---------------------------------
LLama Gratis a cualquier PC del Mundo.
Llamadas a fijos y móviles desde 1 céntimo por minuto.
http://es.voice.yahoo.com_______________________________________________
Mono-list maillist - Mono-list at lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-list
---------------------------------
LLama Gratis a cualquier PC del Mundo.
Llamadas a fijos y móviles desde 1 céntimo por minuto.
http://es.voice.yahoo.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.ximian.com/pipermail/mono-list/attachments/20070124/c26f009c/attachment.html
More information about the Mono-list
mailing list