<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Identity on Le Site de François</title><link>https://lesitedefrancois.be/en/tags/identity/</link><description>Recent content in Identity on Le Site de François</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>© 2026 François</copyright><atom:link href="https://lesitedefrancois.be/en/tags/identity/index.xml" rel="self" type="application/rss+xml"/><item><title>AD (Active Directory)</title><link>https://lesitedefrancois.be/en/security/ad/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lesitedefrancois.be/en/security/ad/</guid><description>&lt;p&gt;&lt;strong&gt;Active Directory (AD)&lt;/strong&gt; is Microsoft&amp;rsquo;s enterprise directory and identity platform, first released with Windows 2000 and now the dominant identity provider in enterprise environments worldwide. It combines four technologies into a single integrated system: &lt;strong&gt;LDAP&lt;/strong&gt; as the directory access protocol for querying and modifying identity data; &lt;strong&gt;Kerberos 5&lt;/strong&gt; as the authentication protocol for issuing tickets that prove identity without transmitting passwords; &lt;strong&gt;DNS&lt;/strong&gt; as the service location mechanism that clients use to discover domain controllers, Kerberos KDCs, and LDAP servers; and &lt;strong&gt;Group Policy&lt;/strong&gt; as the configuration management system that pushes security settings, software installation, and policy enforcement to every joined machine. These four components are inseparable in practice: a Linux host joining an AD domain receives a Kerberos principal in AD&amp;rsquo;s KDC, a machine account object in the AD LDAP directory, a DNS record for its hostname, and (optionally) Group Policy Objects applied to it. The AD forest is the trust boundary: multiple domains can exist within a forest and all share a common schema, configuration, and Global Catalog, with transitive Kerberos trust between them.&lt;/p&gt;</description></item><item><title>JWT (JSON Web Token)</title><link>https://lesitedefrancois.be/en/security/jwt/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lesitedefrancois.be/en/security/jwt/</guid><description>&lt;p&gt;&lt;strong&gt;JWT (JSON Web Token)&lt;/strong&gt;, standardised in RFC 7519, is a compact, self-contained token format that encodes a set of &lt;strong&gt;claims&lt;/strong&gt; — assertions about a subject, an issuer, an audience, and arbitrary application-defined attributes — as a JSON object, signs or encrypts it, and serialises the result as three base64url-encoded segments separated by dots: &lt;code&gt;header.payload.signature&lt;/code&gt;. The header is a JSON object specifying the algorithm (&lt;code&gt;alg&lt;/code&gt;) and optionally a key ID (&lt;code&gt;kid&lt;/code&gt;) used to produce the signature. The payload is a JSON object containing the claims. The signature is computed over &lt;code&gt;base64url(header) + &amp;quot;.&amp;quot; + base64url(payload)&lt;/code&gt; using the algorithm declared in the header. The entire token is URL-safe, fits in an HTTP header or query parameter, and is self-describing — a verifier can locate the signing key, check the algorithm, verify the signature, and read the claims without any external lookup beyond fetching the issuer&amp;rsquo;s public key. This self-contained nature is what makes JWTs efficient at scale: unlike opaque tokens, which require a network call to the issuer&amp;rsquo;s introspection endpoint per verification, a JWT can be verified locally with a cached public key, making it suitable for high-throughput API gateways and distributed systems.&lt;/p&gt;</description></item><item><title>LDAP (Lightweight Directory Access Protocol)</title><link>https://lesitedefrancois.be/en/security/ldap/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lesitedefrancois.be/en/security/ldap/</guid><description>&lt;p&gt;&lt;strong&gt;LDAP (Lightweight Directory Access Protocol)&lt;/strong&gt; is a client-server protocol for accessing and modifying a &lt;strong&gt;directory service&lt;/strong&gt;: a specialised database optimised for read-heavy, hierarchically-organised identity data. It was derived from the X.500 directory standard in the early 1990s, stripping out OSI transport dependencies to run over TCP/IP, and standardised in its current form in RFC 4511 (LDAPv3, 2006). A directory in the LDAP sense is not a general-purpose database — it is a tree of &lt;strong&gt;entries&lt;/strong&gt; (also called objects), each identified by a &lt;strong&gt;Distinguished Name (DN)&lt;/strong&gt; that encodes its position in the hierarchy: &lt;code&gt;cn=alice,ou=users,dc=example,dc=com&lt;/code&gt;. Each entry is an instance of one or more &lt;strong&gt;object classes&lt;/strong&gt; (defined in a &lt;strong&gt;schema&lt;/strong&gt;), and each object class defines a set of mandatory and optional &lt;strong&gt;attributes&lt;/strong&gt; — typed, multi-valued fields such as &lt;code&gt;uid&lt;/code&gt;, &lt;code&gt;cn&lt;/code&gt; (common name), &lt;code&gt;mail&lt;/code&gt;, &lt;code&gt;userPassword&lt;/code&gt;, &lt;code&gt;memberOf&lt;/code&gt;, &lt;code&gt;sshPublicKey&lt;/code&gt;, &lt;code&gt;objectClass&lt;/code&gt;, and &lt;code&gt;userCertificate&lt;/code&gt;. The schema is extensible: LDAP servers ship with standard schema files (RFC 2307 for POSIX users and groups, RFC 4519 for person entries) and organisations add custom schema for application-specific attributes. The tree structure makes hierarchical policy delegation natural — all objects under &lt;code&gt;ou=engineering,dc=example,dc=com&lt;/code&gt; can be administered by a different set of ACL rules than objects under &lt;code&gt;ou=ops&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>mTLS (Mutual TLS)</title><link>https://lesitedefrancois.be/en/security/mtls/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lesitedefrancois.be/en/security/mtls/</guid><description>&lt;p&gt;&lt;strong&gt;mTLS (Mutual TLS)&lt;/strong&gt; is the configuration of &lt;strong&gt;TLS&lt;/strong&gt; in which certificate-based authentication is required from both sides of the connection, not just the server. In standard TLS, only the server presents an &lt;strong&gt;X.509&lt;/strong&gt; certificate, which the client verifies to confirm it is talking to the intended host; the client is typically anonymous to the server, or authenticates separately via a password or session token at the application layer. In mTLS, the client also presents a certificate during the TLS handshake; the server verifies it against a trusted CA before completing the connection. The result is cryptographic proof of identity in both directions: the client knows it is talking to the legitimate server (as in standard TLS), and the server knows the exact identity of the connecting client — without any password, API key, or token exchanged in the application layer.&lt;/p&gt;</description></item><item><title>OAuth 2.0</title><link>https://lesitedefrancois.be/en/security/oauth2/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lesitedefrancois.be/en/security/oauth2/</guid><description>&lt;p&gt;&lt;strong&gt;OAuth 2.0&lt;/strong&gt; (RFC 6749, 2012) is an authorisation delegation framework — not an authentication protocol — that solves a specific problem: how does a user grant a third-party application access to their resources on a server, without giving that application their password? The canonical example is a user granting a calendar app access to their Google Drive files: OAuth 2.0 lets Google issue the calendar app a scoped, time-limited &lt;strong&gt;access token&lt;/strong&gt; that permits it to read Drive files, without the app ever seeing the user&amp;rsquo;s Google password. The distinction between authorisation and authentication is fundamental: OAuth 2.0 proves that a token was issued by an authorisation server for a specific scope — it says nothing about who the user is. Attempting to use OAuth 2.0 for authentication (treating token possession as proof of identity) is a well-documented anti-pattern with concrete exploits; &lt;strong&gt;OIDC&lt;/strong&gt; (OpenID Connect) is the authentication layer built on top of OAuth 2.0 that addresses this correctly.&lt;/p&gt;</description></item><item><title>OIDC (OpenID Connect)</title><link>https://lesitedefrancois.be/en/security/oidc/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lesitedefrancois.be/en/security/oidc/</guid><description>&lt;p&gt;&lt;strong&gt;OpenID Connect (OIDC)&lt;/strong&gt; is an authentication protocol built as a thin layer on top of &lt;strong&gt;OAuth 2.0&lt;/strong&gt;, published by the OpenID Foundation in 2014. Where OAuth 2.0 defines how to delegate authorisation (granting access to resources), OIDC adds the missing authentication semantics: a standard &lt;strong&gt;ID token&lt;/strong&gt; that proves who the user is, a &lt;strong&gt;UserInfo endpoint&lt;/strong&gt; that returns standardised identity claims, and a &lt;strong&gt;discovery document&lt;/strong&gt; that allows clients to configure themselves automatically from a single well-known URL. The separation is precise: OAuth 2.0 access tokens prove that a client is authorised to call an API; OIDC ID tokens prove that a specific user authenticated with a specific identity provider at a specific time. OIDC is the protocol behind virtually every &amp;ldquo;Sign in with Google / GitHub / Microsoft&amp;rdquo; flow, every SAML-to-modern-stack migration, and every Kubernetes service account token issued today — making it the dominant authentication federation standard in cloud-native infrastructure.&lt;/p&gt;</description></item><item><title>PAM (Privileged Access Management)</title><link>https://lesitedefrancois.be/en/security/pam/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lesitedefrancois.be/en/security/pam/</guid><description>&lt;p&gt;&lt;strong&gt;Privileged Access Management (PAM)&lt;/strong&gt; is the security discipline concerned with controlling, auditing, and minimising the use of privileged accounts: root access, domain administrator rights, cloud IAM roles with wide permissions, database superuser credentials, service account tokens, and any other identity that can cause systemic damage if misused. The threat PAM addresses is specific: an attacker who obtains a regular user credential can typically access that user&amp;rsquo;s data; an attacker who obtains a privileged credential can move laterally, disable security controls, exfiltrate everything, and deploy ransomware. PAM is therefore not a generalisation of identity and access management (IAM) but a specialisation of it — the same concepts of authentication and authorisation, applied with far higher friction to the accounts that most need it.&lt;/p&gt;</description></item><item><title>PKI (Public Key Infrastructure)</title><link>https://lesitedefrancois.be/en/security/pki/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lesitedefrancois.be/en/security/pki/</guid><description>&lt;p&gt;&lt;strong&gt;Public Key Infrastructure (PKI)&lt;/strong&gt; is the framework that makes asymmetric cryptography operationally useful at scale. Asymmetric cryptography provides a mathematical relationship between a public key and a private key, but by itself it cannot answer the question a relying party cares about: &lt;em&gt;whose&lt;/em&gt; public key is this? PKI answers that question by introducing a trusted third party — the &lt;strong&gt;Certificate Authority (CA)&lt;/strong&gt; — that cryptographically binds a public key to an identity (a hostname, an organisation name, an email address, a SPIFFE ID) by signing a certificate. A relying party that trusts the CA can therefore trust any certificate the CA signs, without needing to know the subject directly. The chain of trust extends recursively: a &lt;strong&gt;Root CA&lt;/strong&gt; signs &lt;strong&gt;Intermediate CA&lt;/strong&gt; certificates, which sign &lt;strong&gt;end-entity certificates&lt;/strong&gt; (also called leaf certificates). Root CA private keys are kept offline in &lt;strong&gt;HSMs&lt;/strong&gt; and used rarely; intermediate CAs handle day-to-day issuance and can be revoked without rotating the root. The set of root CA certificates a system trusts is its &lt;strong&gt;trust store&lt;/strong&gt; — browsers and operating systems ship with a pre-populated trust store of publicly-trusted roots, while private PKIs use custom roots distributed by administrators.&lt;/p&gt;</description></item><item><title>SPIFFE / SPIRE</title><link>https://lesitedefrancois.be/en/security/spiffe-spire/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lesitedefrancois.be/en/security/spiffe-spire/</guid><description>&lt;p&gt;&lt;strong&gt;SPIFFE (Secure Production Identity Framework for Everyone)&lt;/strong&gt; is a CNCF graduated specification that defines a standard for workload identity: a universal answer to the question &amp;ldquo;how does a service prove who it is to another service, without a human provisioning a secret?&amp;rdquo; The core primitives are simple. A &lt;strong&gt;SPIFFE ID&lt;/strong&gt; is a URI of the form &lt;code&gt;spiffe://trust-domain/path&lt;/code&gt; that unambiguously names a workload within a trust domain — for example &lt;code&gt;spiffe://prod.example.com/payments/api&lt;/code&gt;. A &lt;strong&gt;SVID (SPIFFE Verifiable Identity Document)&lt;/strong&gt; is a cryptographically signed document asserting that SPIFFE ID, in one of two forms: an &lt;strong&gt;X.509-SVID&lt;/strong&gt;, which is a standard X.509 certificate with the SPIFFE ID encoded in the Subject Alternative Name field (used for mTLS), or a &lt;strong&gt;JWT-SVID&lt;/strong&gt;, which is a short-lived JWT bearing the SPIFFE ID as the &lt;code&gt;sub&lt;/code&gt; claim (used for service-to-service authentication where TLS termination is handled elsewhere). A &lt;strong&gt;trust bundle&lt;/strong&gt; is the set of CA certificates for a trust domain that relying parties use to validate SVIDs — analogous to a root CA store, but scoped to a SPIFFE trust domain. The &lt;strong&gt;Workload API&lt;/strong&gt; is the local gRPC API through which a workload retrieves its SVID and the trust bundles of domains it needs to communicate with, with automatic rotation before expiry.&lt;/p&gt;</description></item><item><title>SSSD (System Security Services Daemon)</title><link>https://lesitedefrancois.be/en/security/sssd/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://lesitedefrancois.be/en/security/sssd/</guid><description>&lt;p&gt;&lt;strong&gt;SSSD (System Security Services Daemon)&lt;/strong&gt; is a multi-daemon suite that connects Linux systems to remote identity and authentication providers, presenting their data through the standard Linux identity interfaces — &lt;strong&gt;NSS (Name Service Switch)&lt;/strong&gt; for identity lookups (user names, UIDs, GIDs, group membership) and &lt;strong&gt;PAM (Pluggable Authentication Modules)&lt;/strong&gt; for authentication and session management — without creating local user accounts. It was originally developed as a component of the FreeIPA project at Red Hat, introduced in Fedora 11 (2009), and quickly became the standard identity integration layer across RHEL, Fedora, Ubuntu, Debian, and most enterprise Linux distributions. Before SSSD, integrating a Linux host with &lt;strong&gt;LDAP&lt;/strong&gt; or &lt;strong&gt;AD&lt;/strong&gt; required configuring &lt;code&gt;nss_ldap&lt;/code&gt;, &lt;code&gt;pam_ldap&lt;/code&gt;, &lt;code&gt;pam_krb5&lt;/code&gt;, and &lt;code&gt;pam_winbind&lt;/code&gt; independently — each with its own caching (or lack thereof), its own reconnection logic, and its own configuration syntax. SSSD replaced this collection with a single, unified daemon providing caching, offline authentication, multi-domain support, and access control in one place.&lt;/p&gt;</description></item></channel></rss>