Не запускается BasicAuthentication(OData) модуль в web.config

369
07 октября 2017, 18:02

Когда запускаю WCF Data Service получаю ошибку HTTP Error 500.19 - Internal Server Error

Web.config

 <modules runAllManagedModulesForAllRequests="true">   
<add name="BasicAuthenticationModule" 
     type="Service.BasicAuthenticationModule"/> 
  <remove name="ApplicationInsightsWebTracking" />
  <add name="ApplicationInsightsWebTracking"
  type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule,
Microsoft.AI.Web" preCondition="managedHandler" />
</modules>

Модуль и провайдер аутентификации.

  public class BasicAuthenticationModule : IHttpModule
{
    public void Init(HttpApplication context)
    {
       context.AuthenticateRequest += new EventHandler(context_AuthenticateRequest);
    }
void context_AuthenticateRequest(object sender, EventArgs e)
{
    //Unbox the application.
    HttpApplication application = (HttpApplication)sender;
    //Send to provider for authentication.
    if (!BasicAuthenticationProvider.Authenticate(application.Context))
    {
        application.Context.Response.Status = "401 Unauthorized";
        application.Context.Response.StatusCode = 401;
        application.Context.Response.AddHeader("WWW-Authenticate", "Basic");
        application.CompleteRequest();
    }
}
public void Dispose()
    {
    }
}

   public class BasicAuthenticationProvider
{
    public static bool Authenticate(HttpContext context)
    {
        //This needs to be uncommented for live site.
        //This will reject the login when not using SSL.
        //if (!HttpContext.Current.Request.IsSecureConnection
        //    return false;
        //I only want to execute code for authorization requests.
        //if (!HttpContext.Current.Request.Headers.AllKeys.Contains("Authorization"))
        //    return false;
        string authHeader = HttpContext.Current.Request.Headers["Authorization"];
        IPrincipal principal;
        if (TryGetPrincipal(authHeader, out principal))
        {
            HttpContext.Current.User = principal;
            return true;
        }
        return false;
    }
    private static string[] ParseAuthHeader(string authHeader)
    {
        // Check this is a Basic Auth header
        if (
            string.IsNullOrEmpty(authHeader) ||
            !authHeader.StartsWith("Basic")
            ) return null;
        // Pull out the Credentials with are separated by ':' and Base64 encoded
        string base64Credentials = authHeader.Substring(6);
        string[] credentials = Encoding.ASCII.GetString(
            Convert.FromBase64String(base64Credentials)
            ).Split(new char[] { ':' });
        if (credentials.Length != 2 ||
            string.IsNullOrEmpty(credentials[0]) ||
            string.IsNullOrEmpty(credentials[0])
            ) return null;
        // Okay this is the credentials
        return credentials;
    }
    private static bool TryGetPrincipal(string authHeader, out IPrincipal principal)
    {
        var creds = ParseAuthHeader(authHeader);
        if (creds != null && TryGetPrincipal(creds, out principal))
            return true;
        principal = null;
        return false;
    }
    private static bool TryGetPrincipal(string[] creds, out IPrincipal principal)
    {
        if (creds[0] == "Administrator" && creds[1] == "SecurePassword")
        {
            principal = new GenericPrincipal(
               new GenericIdentity("Administrator"),
               new string[] { "Administrator", "User" }
            );
            return true;
        }
        else if (creds[0] == "JoeBlogs" && creds[1] == "Password")
        {
            principal = new GenericPrincipal(
               new GenericIdentity("JoeBlogs"),
               new string[] { "User" }
            );
            return true;
        }
        else
        {
            principal = null;
            return false;
        }
    }
}
READ ALSO
xor над строками

xor над строками

Я реализую шифр ВернамаВот метод, который отвечает за процесс шифрования:

292
DataGrid кастомная сортировка

DataGrid кастомная сортировка

Необходимо решение данного вопроса :

265
Как открыть в visual studio решение для UWP?

Как открыть в visual studio решение для UWP?

Когда я открываю решение для UWP в visual studia то у меня выскакивает такой вот диалог:

223
&ldquo;Съедание&rdquo; части элементов формы

“Съедание” части элементов формы

Пишу программу с интерфейсом, сделал что-то подобноеВид из редактора Студии:

182