Moved the authenticate method to the HttpListener class, as Authenticate (HttpListenerContext) method

This commit is contained in:
sta 2015-03-17 14:48:51 +09:00
parent 913c47b70c
commit 39636b4b30
2 changed files with 33 additions and 33 deletions

View File

@ -505,6 +505,38 @@ namespace WebSocketSharp.Net
_connections[connection] = connection;
}
internal bool Authenticate (HttpListenerContext context)
{
var schm = SelectAuthenticationScheme (context);
if (schm == AuthenticationSchemes.Anonymous)
return true;
if (schm != AuthenticationSchemes.Basic && schm != AuthenticationSchemes.Digest) {
context.Response.Close (HttpStatusCode.Forbidden);
return false;
}
var realm = Realm;
var req = context.Request;
var user = HttpUtility.CreateUser (
req.Headers["Authorization"], schm, realm, req.HttpMethod, UserCredentialsFinder);
if (user != null && user.Identity.IsAuthenticated) {
context.User = user;
return true;
}
if (schm == AuthenticationSchemes.Basic)
context.Response.CloseWithAuthChallenge (
AuthenticationChallenge.CreateBasicChallenge (realm).ToBasicString ());
if (schm == AuthenticationSchemes.Digest)
context.Response.CloseWithAuthChallenge (
AuthenticationChallenge.CreateDigestChallenge (realm).ToDigestString ());
return false;
}
internal HttpListenerAsyncResult BeginGetContext (HttpListenerAsyncResult asyncResult)
{
CheckDisposed ();

View File

@ -108,38 +108,6 @@ namespace WebSocketSharp.Net
#region Private Methods
private static bool authenticate (HttpListenerContext context, HttpListener listener)
{
var schm = listener.SelectAuthenticationScheme (context);
if (schm == AuthenticationSchemes.Anonymous)
return true;
if (schm != AuthenticationSchemes.Basic && schm != AuthenticationSchemes.Digest) {
context.Response.Close (HttpStatusCode.Forbidden);
return false;
}
var req = context.Request;
var realm = listener.Realm;
var user = HttpUtility.CreateUser (
req.Headers["Authorization"], schm, realm, req.HttpMethod, listener.UserCredentialsFinder);
if (user != null && user.Identity.IsAuthenticated) {
context.User = user;
return true;
}
if (schm == AuthenticationSchemes.Basic)
context.Response.CloseWithAuthChallenge (
AuthenticationChallenge.CreateBasicChallenge (realm).ToBasicString ());
if (schm == AuthenticationSchemes.Digest)
context.Response.CloseWithAuthChallenge (
AuthenticationChallenge.CreateDigestChallenge (realm).ToDigestString ());
return false;
}
private static void complete (HttpListenerAsyncResult asyncResult)
{
asyncResult._completed = true;
@ -183,7 +151,7 @@ namespace WebSocketSharp.Net
internal void Complete (HttpListenerContext context, bool syncCompleted)
{
var lsnr = context.Listener;
if (!authenticate (context, lsnr)) {
if (!lsnr.Authenticate (context)) {
lsnr.BeginGetContext (this);
return;
}