I have a http listener app that is getting requests from a client app. Im trying to use AD user names and groups to control access to the app. When I originally built this proof of concept it worked like I had intended but now its busted and I can't figure out why.
What is supposed to happen is the server will run and when a client connects it prints out if they have access to a group that I'm testing. I remember seeing this work in the past but since then I modified the code for another test and now its kaput.
Any ideas?
Server Code:
Code:
static void Main(string[] args)
{
HttpListener listener = new HttpListener();
listener.Prefixes.Add("http://myhost/");
listener.AuthenticationSchemes = AuthenticationSchemes.Negotiate;
listener.Start();
bool validUser;
while (true)
{
HttpListenerContext ctx = listener.GetContext();
HttpListenerBasicIdentity identity = ctx.User.Identity as HttpListenerBasicIdentity;
if (identity != null)
{
Console.WriteLine(identity.Name);
Console.WriteLine(identity.Password);
}
string[] groups = new string[] {"Group1", "Group2", "Group3", "Group4" };
Console.WriteLine("Checking user {0}", ctx.User.Identity.Name);
foreach (string group in groups)
{
Console.Write("Group {0}:{1}", group, ctx.User.IsInRole(group)?"True":"False");
}
}
}
Client Code:
Code:
static void Main(string[] args)
{
string userId, password;
for (int i = 1; i < 5; ++i)
{
userId = string.Format("domin\User{0}", i);
password = "pasword";
HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://myhost/");
req.UseDefaultCredentials = false;
req.Credentials = new NetworkCredential(userId, password);
req.GetResponse();
}
}