The Himmelblau SSO broker enables browsers and desktop applications to acquire Microsoft Entra ID tokens silently — without prompting the user to log in again. Once a device is enrolled and the user is authenticated through the PAM stack, the broker makes the session’s Primary Refresh Token (PRT) available to other applications on the same desktop session.
Architecture
The broker consists of two components:
himmelblaud-broker — a per-session userspace daemon that holds the device’s Entra ID credentials and serves token requests. It communicates with himmelblaud to acquire and refresh tokens.
linux-entra-sso (in the himmelblau-sso package) — a native messaging host that browsers call to reach the broker. It implements the browser native messaging protocol and forwards requests to the broker over the broker socket.
Authentication flow:
Browser / app → linux-entra-sso (native messaging) → broker socket → himmelblaud → Entra ID
The broker exposes the following operations over D-Bus / the broker socket:
getAccounts — list enrolled Entra ID accounts on this device
acquireTokenSilently — acquire a token for a given account and scope without user interaction
acquirePrtSsoCookie — acquire a PRT-based SSO cookie for a given URL
getLinuxBrokerVersion — return the broker version
Browser support
Both Firefox and Chrome/Chromium are supported. The himmelblau-sso package installs the native messaging manifests and, for Chrome, the required enterprise policy to force-install the MSAL browser extension.
| Browser | How it works |
|---|
| Firefox | Native messaging manifest is installed at the system level. Firefox calls linux-entra-sso automatically when it needs an Entra ID token. |
| Chrome / Chromium | The MSAL browser extension (jlnfnnolkbjieggibinobhkjdfbpcohn) is force-installed via enterprise policy. The extension calls linux-entra-sso via native messaging. |
Firefox and Chrome pick up the native messaging configuration automatically once himmelblau-sso is installed — no per-user configuration is needed. Other Chromium-based browsers may need manual native messaging configuration if they do not read system-level Chrome policies.
Installation
Install both the broker and the SSO package. Package names vary by distribution — check the platform guides for your distro.
On distributions using RPM (Fedora, openSUSE, SUSE):
sudo zypper install himmelblau-broker himmelblau-sso
# or, on Fedora/RHEL:
sudo dnf install himmelblau-broker himmelblau-sso
On distributions using DEB (Debian, Ubuntu):
sudo apt install himmelblau-broker himmelblau-sso
The broker daemon is started automatically as part of the user session. No additional configuration is required for most setups.
Configuration
The broker listens on a Unix socket. The path can be customized if needed:
[global]
# Default: /var/run/himmelblaud/broker_sock
broker_socket_path = /var/run/himmelblaud/broker_sock
| Option | Default | Description |
|---|
broker_socket_path | /var/run/himmelblaud/broker_sock | Path to the Unix socket used for communication with the broker D-Bus service. |
O365 desktop integration
Himmelblau includes an optional o365 package that installs Teams for Linux together with O365 desktop shortcuts and URL handlers. These desktop entries are pre-configured to take advantage of the SSO broker, so Teams can acquire tokens silently without prompting for credentials after the initial login.
On NixOS, add it to your system packages:
environment.systemPackages = [
himmelblau.packages."x86_64-linux".o365
];
For other distributions, check the Downloads page for the package name and availability on your distro.
Diagnosing broker issues
To check whether the broker is running and responding:
linux-entra-sso --interactive getAccounts
This prints the list of accounts the broker knows about. If the command fails, check that himmelblaud-broker is running in your session:
systemctl --user status himmelblaud-broker
Broker logs are written to the journal:
journalctl --user -u himmelblaud-broker