SSSD-IDP(5)

๐Ÿ’– sssd-idp ๐Ÿ’–

okay so bestie, this is sssd-idp(5) โ€” a page from the File Formats and Conventions section of the manual (section 5, iykyk), and it's literally all about the SSSD IdP provider. grab a strawberry drink ๐Ÿ“ and let's get into it.


โœจ NAME โœจ

sssd-idp โ€” the SSSD IdP provider, no cap ๐Ÿ’…


๐Ÿฆ‹ DESCRIPTION ๐Ÿฆ‹

This manual page describes the configuration of the IdP provider for sssd(8). If you want the full detailed syntax reference, go read the โ€œFILE FORMATโ€ section of the sssd.conf(5) manual page โ€” it's the main character of syntax docs, fr fr.

The IdP provider is a back end used to connect to an OAuth 2.0 and REST based identity provider (IdP). Here's the tea though: since different products might have their own individual implementation of the REST API for looking up user and group attributes, dedicated code might be required โ€” check the โ€œidp_typeโ€ option for the details, okay? ๐Ÿ‘€

Also, IdPs typically do not provide POSIX attributes like, say, user Id (UID) or home directory. So SSSD's IdP provider will just autogenerate the needed attributes for you โ€” iconic, honestly. The default algorithm to generate user IDs (UIDs) and group IDs (GIDs) aims to create reproducible IDs on different systems. The drawback? ๐Ÿ˜ญ It might happen that the algorithm assigns the same ID to different objects, and then only the first one requested via SSSD will be available. So like... first come, first served, basically.


๐ŸŽ€ CONFIGURATION OPTIONS ๐ŸŽ€

Refer to the section โ€œDOMAIN SECTIONSโ€ of the sssd.conf(5) manual page for the details on configuring an SSSD domain โ€” that's your homework, bestie ๐Ÿ“š.

  • idp_type (string) โ€” Required option that specifies the IdP product. Currently Entra ID (entra_id) and Keycloak (keycloak) are supported.

Depending on the IdP product, additional platform specific options might follow the name separated by a colon (:). E.g. for Keycloak the base URI for the user and group REST API must be given. For Entra ID the base URI for the Microsoft Graph API can be given to use sovereign or government cloud endpoints instead of the default (https://graph.microsoft.com/v1.0). E.g. โ€œentra_id:https://graph.microsoft.us/v1.0โ€ for the US government cloud (GCC High) ๐Ÿ‡บ๐Ÿ‡ธ.

Default: Not set (Required)

  • idp_client_id (string) โ€” ID of the IdP client used by SSSD to authenticate users and as a client to lookup user and group attributes. This client must offer device authorization according to RFC-8628 and must have permissions to search and read user and group attributes. like, it needs the permissions, no shortcuts ๐Ÿ’…

Default: Not set (Required)

  • idp_client_secret (string) โ€” Password of the IdP client. The password is required for the id_provider. If it's only used as auth_provider it depends on the server side configuration if it is required or not. shrug ๐Ÿซถ

Default: Not set

  • idp_token_endpoint (string) โ€” IdP endpoint for requesting access tokens. ๐Ÿ”‘

Default: Not set (Required)

  • idp_device_auth_endpoint (string) โ€” IdP endpoint for device authorization according to RFC-8628. This is required for user authentication.

Default: Not set

  • idp_userinfo_endpoint (string) โ€” IdP userinfo endpoint to request user attributes after a successful authentication of the user. Required for authentication. ๐Ÿ’–

Default: Not set

  • idp_id_scope (string) โ€” Scope required for looking up user and group attributes with the REST API. The scopes are used by the server to determine which attributes/claims are returned to the caller.
Note: In previous versions of SSSD, this option was expected to already be URL-encoded. โš ๏ธ so if you're carrying old configs around, heads up!

Default: Not set

  • idp_auth_scope (string) โ€” Scope required during authentication. The scopes are used by the server to determine which attributes/claims are returned to the caller.

Currently the tokens returned during user authentication are not used for other purposes, hence the only important claim is the subject identifier 'sub' which is used to check if the authenticated user is the one trying to log in. This might change in future, so don't get too comfy ๐Ÿ‘‘

Default: Not set

  • idp_request_timeout (integer) โ€” Timeout in seconds for an individual request to the IdP. โฑ๏ธ

Default: 10

  • idp_auto_refresh (boolean) โ€” Refresh tokens automatically, after they have reached about half their lifetime. cute little self-care routine for your tokens ๐ŸŒธ
Note: Scheduled token refreshes are not preserved across restarts of SSSD. โš ๏ธ

Default: false

  • idmap_range_min (integer) โ€” Specifies the lower (inclusive) bound of the range of POSIX IDs to use for mapping IdP users and group to POSIX IDs. It is the first POSIX ID which can be used for the mapping.

The interval between โ€œidmap_range_minโ€ and โ€œidmap_range_maxโ€ will be split into smaller ranges of size โ€œidmap_range_sizeโ€ which will be used by an individual IdP domain. math! we love her ๐Ÿ”ข

Default: 200000

  • idmap_range_max (integer) โ€” Specifies the upper (exclusive) bound of the range of POSIX IDs to use for mapping IdP users and groups to POSIX IDs. It is the first POSIX ID which will not be used for POSIX ID-mapping anymore. ๐Ÿšซ

Default: 2000200000

  • idmap_range_size (integer) โ€” Specifies the number of POSIX IDs available for a single IdP domain.

Default: 200000


๐ŸŒˆ EXAMPLE ๐ŸŒˆ

here's the whole thing in action โ€” copy-paste energy, but read it first bestie ๐Ÿซถ

[domain/entra_id]
id_provider = idp
idp_type = entra_id
idp_client_id = 12345678-abcd-0101-efef-ba9876543210
idp_client_secret = YOUR-CLIENT-SCERET
idp_token_endpoint = https://login.microsoftonline.com/TENNANT-ID/oauth2/v2.0/token
idp_userinfo_endpoint = https://graph.microsoft.com/v1.0/me
idp_device_auth_endpoint = https://login.microsoftonline.com/TENNANT-ID/oauth2/v2.0/devicecode
idp_id_scope = https://graph.microsoft.com/.default
idp_auth_scope = openid profile email

[domain/keycloak]
idp_type = keycloak:https://master.keycloak.test:8443/auth/admin/realms/master/
id_provider = idp
idp_client_id = myclient
idp_client_secret = YOUR-CLIENT-SCERET
idp_token_endpoint = https://master.keycloak.test:8443/auth/realms/master/protocol/openid-connect/token
idp_userinfo_endpoint = https://master.keycloak.test:8443/auth/realms/master/protocol/openid-connect/userinfo
idp_device_auth_endpoint = https://master.keycloak.test:8443/auth/realms/master/protocol/openid-connect/auth/device
idp_id_scope = profile
idp_auth_scope = openid profile email

๐Ÿงš SEE ALSO ๐Ÿงš

the whole friend group, omg ๐Ÿ’œ

sssd(8), sssd.conf(5), sssd-ldap(5), sssd-ldap-attributes(5), sssd-krb5(5), sssd-simple(5), sssd-ipa(5), sssd-ad(5), sssd-idp(5), sssd-sudo(5), sssd-session-recording(5), sss_cache(8), sss_debuglevel(8), sss_obfuscate(8), sss_seed(8), sssd_krb5_locator_plugin(8), sss_ssh_authorizedkeys(1), sss_ssh_knownhosts(1), sssd-ifp(5), pam_sss(8). sss_rpcidmapd(5) sssd-systemtap(5)


๐Ÿ‘‘ AUTHORS ๐Ÿ‘‘

The SSSD upstream โ€” https://github.com/SSSD/sssd/ โœจ


and that's the page!! ๐ŸŽ€ brought to you by SSSD, dated 09/08/2026 โ€” mwah, go configure something iconic ๐Ÿ’…๐Ÿฆ‹

๐Ÿ“ฆ where this page comes from