dotnet / dotnet/aspnetcore

SignalR connection tokens are not bound to the endpoint that negotiated them

Open
#69,090 0 comments 0 reactions 0 assignees View on GitHub
area-signalr
Dominant language
C#
Stars
38.4k
Forks
10.9k
Avg merge
2d 10h
Merged PRs (30d)
281

Description

SignalR stores negotiated connections in an application-wide `HttpConnectionManager` keyed only by connection token, so an authorized client can negotiate on one endpoint with `CloseOnAuthenticationExpiration=false` and use that token to connect to another endpoint where it is `true`. The target endpoint’s authorization and hub still apply, but the connection retains the first endpoint’s options and is not closed when authentication expires. We should bind connections to their originating endpoint mapping and reject tokens presented to a different endpoint.

Contributor guide

Open the contributing guide

Research direction

Start by tracing SignalR negotiation and connection lookup through the application-wide HttpConnectionManager, then inspect how endpoint mappings are represented at those entry points. Done means a token negotiated for one endpoint is rejected at another while the originating endpoint’s options remain effective; add regression coverage for the cross-endpoint case.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp
Domain
authentication, backend-api-design
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.