Commit Graph

21495 Commits

Author SHA1 Message Date
akallabeth
d7de808063 [client,common] move SSO_MIB detection to client/common 2025-05-22 10:28:05 +02:00
akallabeth
62d86d0779 [core,timer] fix timer termination 2025-05-22 10:26:23 +02:00
akallabeth
017a4ca0e0 Merge pull request #11613 from akallabeth/sdl-render-fix
Sdl render fix
2025-05-22 09:35:48 +02:00
akallabeth
635d6319c6 [common,settings] fix freerdp_device_clone
automount property of RDPDR_DTYP_FILESYSTEM was not copied, fix that.
2025-05-22 09:35:03 +02:00
akallabeth
6bb28ebea4 [packaging,flatpak] disable cJSON tests and utils 2025-05-22 09:10:28 +02:00
akallabeth
4b86e4bdd0 [client,sdl] fix hidden dialog update 2025-05-22 09:10:21 +02:00
akallabeth
6eafefea64 Merge pull request #11610 from akallabeth/flatpak-update
Flatpak update
2025-05-21 20:22:34 +02:00
akallabeth
ba25d8470d [packaging,flatpak] add sso-mib support 2025-05-21 19:48:06 +02:00
akallabeth
71cd76132a Merge pull request #11609 from akallabeth/flatpak-update
[packaging,flatpak] update build scripts
2025-05-21 18:44:13 +02:00
akallabeth
ae246cae33 [packaging,flatpak] update build scripts 2025-05-21 18:25:48 +02:00
akallabeth
851db3e4d1 Merge pull request #11608 from akallabeth/sso-mib
Sso mib deferred callback
2025-05-21 17:54:14 +02:00
Armin Novak
46b5f890b6 [client,common] make sso-mib opaque
Contain details of implementation in sso_mib_new and sso_mib_free
2025-05-21 14:52:06 +02:00
Armin Novak
66a69a26e2 [client,common] initialize sso-mib late
Only initialize the sso-mib library when a token is requested for the
first time. This allows proper rdpSettings initialization in PreConnect.
2025-05-21 14:31:34 +02:00
Armin Novak
39f7972b28 [client,common] add common GetCommonAccessToken
If client-common is build with WITH_SSO_MIB inject a callback that first
tries to retrieve a token from sso-mib library and only if that fails
falls back to a client provided callback.
2025-05-21 14:00:10 +02:00
akallabeth
55d34fdb0e Merge pull request #11600 from rupran/andreas/sso-mib-squash
feat: add login through MS identity broker via sso-mib interface
2025-05-21 13:48:25 +02:00
akallabeth
8c6dffa5e0 Merge pull request #11607 from akallabeth/getaccesstoken-fix
[core,rdp] Use a single GetCommonAccessToken variable
2025-05-21 13:25:25 +02:00
Armin Novak
91d919c780 [core,rdp] Use a single GetCommonAccessToken variable
Only store the callback in rdpRdp and access it only via getter.
2025-05-21 13:09:14 +02:00
Andreas Ziegler
d3ba03bba4 refactor: move sso-mib token fetching into separate compilation unit 2025-05-21 11:44:16 +02:00
Andreas Ziegler
d6d6909d66 chore: allow fetching sso-mib as ExternalProject 2025-05-21 11:44:16 +02:00
Andreas Ziegler
8714019703 refactor: move MIBClientApp into struct rdp_client_context 2025-05-21 11:44:16 +02:00
Andreas Ziegler
5e76909881 feat: add login through MS identity broker via sso-mib interface
This change enables an alternative way of acquiring the necessary
access tokens through a local identity broker. In the current
implementation, we need to visit URLs twice and paste back the
URLs we are redirected to in order to extract authorization codes
and ultimately fetch the correct access tokens for RDP (described
here: <0>).

As an alternative, MS also provides the Microsoft Authentication
Library (MSAL) through which authentication can be handled more
or less in the background when we're using a trusted device. In
particular, we can request access tokens with the same
parameters as we're currently doing through the URL-based scheme.

As the MSAL bindings are not available for C, we implemented a
small wrapper library called sso-mib which is available at
https://github.com/siemens/sso-mib. This library translates the
high-level requests (such as acquire_token_interactive) to
respective messages on the D-Bus messaging bus which is used to
communicate with the identity broker service on Linux. The
library can be built as a .deb package and subsequently be
found through PkgConfig mechanisms in CMake.

When sso-mib is not available through pkg-config, it can also
be placed in external/, with the directory structure looking
like the following. include/ is copied from the root of the
sso-mib directory and lib/ populated with the built shared
library files and symlinks.

    external/
    ├── README
    └── sso-mib
        ├── include
        │   └── sso-mib
        │       ├── mib-account.h
        │       ├── mib-client-app.h
        │       ├── mib-exports.h
        │       ├── mib-pop-params.h
        │       ├── mib-prt.h
        │       ├── mib-prt-sso-cookie.h
        │       └── sso-mib.h
        └── lib
            ├── libsso-mib.so -> libsso-mib.so.0
            ├── libsso-mib.so.0 -> libsso-mib.so.0.4.0
            └── libsso-mib.so.0.4.0

This feature is currently hidden behind a configuration switch
and must be enabled via `-DWITH_SSO_MIB=ON`. If the connection
to the broker fails (for example, if no identity broker is
installed or running on the system), we automatically fall back
to the current scheme of copy-pasting URLs.

<0>: https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpbcgr/e967ebeb-9e9f-443e-857a-5208802943c2
2025-05-21 11:44:16 +02:00
akallabeth
7c98c5f89b Merge pull request #11606 from akallabeth/GetAccessToken-split
[core,aad] Split GetAccessToken callback
2025-05-21 11:13:30 +02:00
Armin Novak
24ea6414bc [warnings] fix various compile warnings 2025-05-21 11:05:10 +02:00
Armin Novak
1882cebbce [core,aad] Split GetAccessToken callback
To allow client-common library to override the GetAccessToken callback
introduce a new GetCommonAccessToken callback.
This callback defaults to call the existing GetAccessToken callback, but
client-common library can override if desired, so that a common token
retrieval method is executed before a client UI is invoked.
2025-05-21 10:20:21 +02:00
akallabeth
8fe6450eef Merge pull request #11599 from akallabeth/reconnect-strict
Reconnect strict
2025-05-20 14:59:46 +02:00
akallabeth
9da4f9da6e Merge pull request #11601 from ljaeh0121/fix/drive_process_irp_set_information
[channel,drive]  Fix failure when renaming non-empty directories
2025-05-20 14:58:57 +02:00
ljh0121
0d1b044436 fix: [channel,drive] Fix failure when renaming non-empty directories 2025-05-20 16:56:02 +09:00
akallabeth
aed5bb0c4b Merge pull request #11603 from akallabeth/deactivate-all
[core,activation] skip sending PDU_TYPE_DEACTIVATE_ALL
2025-05-19 18:03:15 +02:00
akallabeth
3a6ce63126 [core,activation] skip sending PDU_TYPE_DEACTIVATE_ALL
If the channel was not initialized/joinded do not send a
PDU_TYPE_DEACTIVATE_ALL PDU and only log a message.
2025-05-19 17:08:33 +02:00
akallabeth
6fc02b4c14 [core,license] set an error code on client failure 2025-05-19 12:14:33 +02:00
akallabeth
3d57474136 Merge pull request #11597 from akallabeth/timer-fix
[channels,video] fix NULL dereference
2025-05-19 09:03:44 +02:00
akallabeth
2a020b8a5f [channels,video] fix NULL dereference 2025-05-19 08:17:43 +02:00
akallabeth
b595a6cba8 Merge pull request #11592 from akallabeth/timer-fix
[core,timer] start timterID with 1
2025-05-16 21:14:20 +02:00
akallabeth
e9ae320c7f [core,timer] start timterID with 1
0 is invalid for timerID (or marks a failure state)
2025-05-16 21:03:17 +02:00
akallabeth
eaee267206 Merge pull request #11578 from akallabeth/timer
Timer implementation
2025-05-16 13:00:21 +02:00
Armin Novak
c27433cc28 [client,wayland] use freerdp_timer_add API 2025-05-16 12:11:43 +02:00
Armin Novak
9bb7e5dfaa [client,xfreerdp] use FreeRDP timer API for updates
Use the freerdp_timer_add API to delay a display update
2025-05-16 12:11:40 +02:00
Armin Novak
8e3e163fd4 [client,xfreerdp] remove SetWaitableTimer use 2025-05-16 12:11:37 +02:00
Armin Novak
06e9ceff4c [channels,video] use new timer implementation
Use the new timer API to push frames in a defined interval
2025-05-16 12:11:35 +02:00
Armin Novak
72a09b1675 [core,timer] Add a timer implementation
Adds a timer implementation (bound to a RDP context) that is capable of
handling multiple timers simultaneously.
2025-05-16 12:11:32 +02:00
akallabeth
374707d4fa Merge pull request #11591 from akallabeth/krb
[winpr,sspi] assert kerberos principal
2025-05-16 11:21:33 +02:00
akallabeth
135fdb0b9c [winpr,sspi] fix realm usage for Heimdal
Fix retrieval of realm name from krb5_principal::realm
* MIT krb5 uses type krb5_data
* Heimdal krb5 uses type Realm
2025-05-16 11:06:17 +02:00
akallabeth
abbc6ba37f [cmake,krb5] fix redetection of kerberos 2025-05-16 11:04:17 +02:00
akallabeth
8c2be5fd53 Merge pull request #11590 from akallabeth/krb-strlen-check
[winpr,sspi] add kerberos string len checks
2025-05-16 09:04:50 +02:00
akallabeth
c1be9cb001 [winpr,sspi] add kerberos string len checks 2025-05-15 21:39:30 +02:00
akallabeth
426fea290c Merge pull request #11587 from akallabeth/rpm-dep-fix
[client,sdl] build webview without docs/tests/examples
2025-05-15 10:08:16 +02:00
akallabeth
80a499a4db [client,sdl] build webview without docs/tests/examples 2025-05-15 10:03:37 +02:00
akallabeth
f28712a3e4 Merge pull request #11586 from akallabeth/rpm-dep-fix
[ci,rpm] fix missing dependencies
2025-05-15 09:39:29 +02:00
akallabeth
a716c6b07a [ci,rpm] fix missing dependencies 2025-05-15 09:38:36 +02:00
akallabeth
8ec8169f40 Merge pull request #11585 from akallabeth/rpm-verbose
[ci,rpm] build verbose
2025-05-14 21:49:56 +02:00