SignalR connection tokens are not bound to the endpoint that negotiated them
- 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
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