SignalR cross-domain connections with self-hosting and authentication

后端 未结 2 1396
旧时难觅i
旧时难觅i 2021-02-05 14:58

I have a CORS problem when self-hosting SignalR with OWIN, which only happens when I try to enable authentication.

The error I get in my web browser is:

2条回答
  •  刺人心
    刺人心 (楼主)
    2021-02-05 15:23

    I have gotten NTLM authentication to work with cross domain signalR self-hosted in OWIN by allowing the preflight requests anonymous access.

    What one needs to do is create a delegate for choosing the authentication scheme which looks for the preflight request headers, and allows these through anonymously. All other requests will use NTLM.

    public void Configuration(IAppBuilder appBuilder)
    {
        var listener = (HttpListener)appBuilder.Properties[typeof(HttpListener).FullName];
        listener.AuthenticationSchemeSelectorDelegate += AuthenticationSchemeSelectorDelegate;
    }
    
    private AuthenticationSchemes AuthenticationSchemeSelectorDelegate(HttpListenerRequest httpRequest)
    {
        if (httpRequest.Headers.Get("Access-Control-Request-Method")!=null) 
            return AuthenticationSchemes.Anonymous;
        else 
            return AuthenticationSchemes.Ntlm;
    }
    

提交回复
热议问题