44 Commits
Author SHA1 Message Date
3e09466c18 bump golangci-lint to 2.13.1 (#6129)
* bump golangci-lint to 2.13.1

* additional changes

---------

Co-authored-by: aler9 <46489434+aler9@users.noreply.github.com>
2026-08-22 16:57:28 +00:00
Alessandro RosandGitHub a4ad182e4e format imports (#6041) 2026-08-04 22:13:15 +00:00
Alessandro RosandGitHub 58c6099e50 ask for credentials only in case of protocols that support it (#5966)
When clients connect with some protocols (SRT, RTMP), they are unable
to provide credentials even if they are asked to. In this case, it's
useless to wait for credentials, and it's better to immediately log
authentication errors and apply the anti-brute force algorithm.
2026-07-19 16:52:14 +02:00
Alessandro RosandGitHub e14ada6f4b normalize authentication error messages (#5421) (#5959)
Log authentication errors as soon as possible, use the "warn" level,
use the same message whatever the author or protocol.
2026-07-19 10:04:17 +02:00
Alessandro RosandGitHub f5d7ed3138 improve anti-brute force mechanism (#5835)
delay authentication failure responses by a random amount of time, use
the same anti-brute force mechanism with all users.
2026-06-05 17:01:36 +02:00
Alessandro RosandGitHub b5b63d02fc support reading and publishing with Media-over-QUIC (#5815)
Media-over-QUIC is a streaming protocol built upon cutting edge
protocols (QUIC, HTTP3) and browser APIs (WebTransport, WebCodecs).
It's slightly faster than WebRTC, has an advanced data recovery
mechanism (placed at the frame level and not at the packet level), it
supports additional codecs (FLAC) and is less complicated to route.
2026-06-02 23:04:24 +02:00
5decbb4a3d Add user agent field to RTMP, RTSP, WebRTC, and HLS (#5753)
Surface user agent in the auth HTTP webhook payload as "userAgent"
and in the API structs for RTMP, RTSP, WebRTC and HLS connections.

---------

Co-authored-by: aler9 <46489434+aler9@users.noreply.github.com>
2026-06-02 20:29:07 +02:00
Alessandro RosandGitHub f87d9e659e hls: track sessions (#962) (#5683)
sessions are now tracked through cookies or query parameters.

This provides the ability to inspect sessions through logs, metrics and
API, allows more precise tracking of outbound bytes, decreases load on
external HTTP authentication URLs since they are now called once per
session and not once per request.
2026-04-25 21:10:34 +02:00
Alessandro RosandGitHub 2589c99639 return a custom error when body size limit is exceeded (#5675) 2026-04-21 19:00:30 +02:00
Alessandro RosandGitHub caeccdceff prevent out-of-memory errors (#5674)
impose a maximum size on body of incoming HTTP requests and responses.
2026-04-19 21:39:08 +02:00
Alessandro RosandGitHub 14e0a8f55b expose token passed as query parameter to HTTP authentication too (#5649)
this allows to parse tokens coming from RTSP and RTMP without additional effort.
2026-04-06 18:10:29 +02:00
Alessandro RosandGitHub 6d6ebee80d deprecate authJWTInHTTPQuery and disable JWTs in query parameters (#5648)
This fixes a long standing security flaw. Even though it's a breaking
change, few users should be impacted since this feature has been discouraged
for some time.
2026-04-06 18:03:22 +02:00
Alessandro RosandGitHub 4472bcfc4b use "token" as query parameter key to pass tokens (#5647)
the legacy "jwt" query parameter key is still supported.
2026-04-06 17:51:59 +02:00
Alessandro RosandGitHub d4c6f95291 dump unencrypted TLS sessions (#5624)
when dumpPackets is true, embed TLS master keys into the dump, in a
format which is natively compatible with Wireshark.
2026-04-04 14:46:43 +02:00
Alessandro RosandGitHub d1fd3df27c api: add user field to RTSP, RTMP, SRT, WebRTC conns and sessions (#5104) (#5565) 2026-03-14 00:03:58 +01:00
Roman SirokovandGitHub 9b36d50b8d optionally validate JWT iss and aud claims (#5569) 2026-03-13 22:38:40 +01:00
Alessandro RosandGitHub 28b0e21910 suggest using JWTs in query parameters for RTSP and RTMP (#5267) (#5493)
In case of RTSP and RTMP, JWTs cannot be used as passwords since
there's a size limit. Therefore, documentation is updated to suggest
passing JWT through query parameters, and authJWTInHTTPQuery is updated
to act on HTTP requests only.
2026-02-20 22:16:56 +01:00
Alessandro RosandGitHub 4f859fb40b add authHTTPFingerprint (#5413) (#5422) 2026-02-05 16:51:29 +01:00
Alessandro RosandGitHub 8a4f2f5f3f simplify configuration definitions (#5376) 2026-01-25 20:24:41 +01:00
Alessandro RosandGitHub ff187b6d8a update golangci-lint configuration (#5182) 2025-11-11 23:57:52 +01:00
Alessandro RosandGitHub 85f57b90db stop accepting JWTs from query parameters unless allowed in conf (#5010)
This is the first step into removing support for JWTs in
query parameters, which is a security flaw.
2025-09-22 10:04:51 +02:00
Alessandro RosandGitHub 68b4c20627 fix reading JWT when it is passed through the password field (#5009)
Usernames and passwords must be requested explicitly to clients, but
they were not requested when JWT is meant to be passed as password.
This fixes the issue.
2025-09-22 10:00:33 +02:00
Alessandro RosandGitHub b517631b8f fix authentication failure reason not being displayed (#5007) 2025-09-22 09:48:51 +02:00
Alessandro RosandGitHub 35aceaa4a9 send server name (SNI) when opening TLS connections (#4973) 2025-09-15 19:38:36 +02:00
Alessandro RosandGitHub d423a71aaa update linter settings (#4790) 2025-07-26 16:44:32 +02:00
Alessandro RosandGitHub 74bfb988d7 allow disabling JWT in HTTP query parameters (#4518) 2025-05-11 10:21:08 +02:00
Alessandro RosandGitHub f97213ae6e support passing JWTs through the password field (#4516)
This is safer than passing JWTs through query parameters, unfortunately support is limited.
2025-05-10 22:54:24 +02:00
Alessandro RosandGitHub c8348db52d rename jwtRefresh into jwksRefresh (#4515) 2025-05-10 21:14:20 +02:00
Alessandro RosandGitHub d3976fbc15 do not ask for credentials when authentication method is JWT (#4450) (#4513) 2025-05-10 16:20:22 +02:00
Alessandro RosandGitHub db3c2f8cae add authJWTJWKSFingerprint (#4409) (#4514) 2025-05-10 16:12:35 +02:00
7360981aa7 Feat: Add JWKS rotation API endpoint (#4463)
Co-authored-by: aler9 <46489434+aler9@users.noreply.github.com>
2025-05-10 13:44:02 +02:00
Alessandro RosandGitHub a348007607 support parsing JWT claims encoded as strings (#3696) (#4465) 2025-04-28 22:22:42 +02:00
1827e062bd add authJWTExclude to exclude actions when using JWT (#3431)
* Added authJWTExclude to allow exclusion of actions while using the JWT authentication method

* add test

---------

Co-authored-by: aler9 <46489434+aler9@users.noreply.github.com>
2025-04-25 19:55:11 +02:00
Alessandro RosandGitHub 386be42784 rtsp: rewrite authentication around ServerConn.VerifyCredentials (#4267) 2025-02-18 17:54:13 +01:00
Alessandro RosandGitHub 7ade2896e5 warn users when non-existent fields are used in conf (#4261) 2025-02-18 15:23:44 +01:00
Alessandro RosandGitHub 244da930a1 switch to mediacommon/v2 (#4259) 2025-02-17 14:54:58 +01:00
Alessandro RosandGitHub 8f04264fe5 webrtxc: fix MTX_QUERY not set when reading or publishing (#4138) (#3937) (#4141) 2025-01-11 17:29:48 +01:00
Alessandro RosandGitHub 534b637bc7 support using JWT in Authorization header with API, Metrics, PProf (#3630) (#3795) 2024-10-05 21:15:21 +02:00
Alessandro RosandGitHub 0d1da6bd5b allow to set the JWT claim key that contains permissions (#3560) (#3692) 2024-08-26 12:43:28 +02:00
Alessandro RosandGitHub f3ed659fab rtsp: fix authentication when algorithm field is not supported (#3116) (#3314) 2024-05-15 10:28:12 +02:00
Alessandro RosandGitHub dcb5b45e84 update dependencies (#3325) 2024-05-05 19:06:47 +02:00
Alessandro RosandGitHub 1204f76eb7 update golangci-lint (#3300) 2024-04-28 18:20:08 +02:00
Alessandro RosandGitHub b84f0b90d0 add JWT authentication tests (#3272) 2024-04-18 22:58:37 +02:00
Alessandro RosandGitHub 9c6ba7e2c7 New authentication system (#1341) (#1992) (#2205) (#3081)
This is a new authentication system that covers all the features exposed by the server, including playback, API, metrics and PPROF, improves internal authentication by adding permissions, improves HTTP-based authentication by adding the ability to exclude certain actions from being authenticated, adds an additional method (JWT-based authentication).
2024-03-04 14:20:34 +01:00