Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Wie kann ich den Basic-Http-Auth-Header bei WebSockets und ASP.NET WebAPI mitsenden?
Wax
myCSharp.de - Member

Avatar #avatar-2276.jpg


Dabei seit:
Beiträge: 745
Herkunft: Dortmund

Themenstarter:

Wie kann ich den Basic-Http-Auth-Header bei WebSockets und ASP.NET WebAPI mitsenden?

beantworten | zitieren | melden

Guten Tag,

ich schreibe zur Zeit an einem WebSocket und würde diesen aus Gründen der Einfachheit gerne durch meinen bereits existierenden WebApi Service hosten lassen.

Webserver ist der IIS ab Version 8.
Der "Handshake" funktioniert soweit auch gut mittels:


[HttpGet]
public HttpResponseMessage Connect()
{
   if (HttpContext.Current.IsWebSocketRequest)
   {
       HttpContext.Current.AcceptWebSocketRequest(ProcessRequestInternal);
   }

   return new HttpResponseMessage(HttpStatusCode.SwitchingProtocols);
}

Ich bin diesen Weg gegangen, da mein Service sich bereits um die Authentifizierung meiner User kümmert. Dies wurde bisher per Basic-Http Authentication gemacht. Nun habe ich das Problem, dass ich den "Authorization: Basic blabla" Header nicht mehr mitsenden kann und somit sich der WebSocketController nicht mehr in meine Umgebung "passt".

Weiß jemand wie man das normalerweise macht? Per JavaScript WebSocket Objekt kann man z.B. keine Http-Header setzen. ;-(


MfG
wax
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Wax am .
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16098

beantworten | zitieren | melden

Schau Dir mal die Dokumentation der WebSocket-Klasse in JavaScript an

Der Aufruf
var ws = new WebSocket("ws://username:[email protected]")
macht automatisch ein Basic Auth Header.

Ebenso funktioniert
ws = new WebSocket 'ws://localhost:8000',{
        headers : {
          Basic: <token hier>
        }
      }
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
Wax
myCSharp.de - Member

Avatar #avatar-2276.jpg


Dabei seit:
Beiträge: 745
Herkunft: Dortmund

Themenstarter:

beantworten | zitieren | melden

Moin,

das klappt anscheinend nur unter Node.js. Im Browser sieht die WebSocket Klasse leider anders aus und nimmt dieses Options Objekt nicht entgegen.

MfG
wax
private Nachricht | Beiträge des Benutzers