PayloadKit

Extensible Single Sign-On

com.apple.extensiblesso

The payload that configures an app extension that performs single sign-on (SSO).

iOSmacOS
macOS 10.15+iOS 13.0+combined

Configuration Keys (12)

KeyTypeTitle
ExtensionIdentifierrequired

The bundle identifier of the app extension that performs SSO for the specified URLs.

Range: com.apple.AppSSOKerberos.KerberosExtension, com.microsoft.azureauthenticator.ssoextension, com.microsoft.CompanyPortalMac.ssoextension

stringExtension Identifier
Typerequired

The type of SSO.

Range: Credential, Redirect

string
TeamIdentifier

The team identifier of the app extension. This key is required on macOS and ignored elsewhere.

Depends on: ExtensionIdentifier ∈ [com.apple.AppSSOKerberos.KerberosExtension];

stringTeam Identifier
Hosts

An array of host or domain names that apps can authenticate through the app extension. Required for 'Credential' payloads. Ignored for 'Redirect' payloads. The system: - Matches host or domain names case-insensitively - Requires that all the host and domain names of all installed Extensible SSO payloads are unique Note: Host names that begin with a "." are wildcard suffixes that match all subdomains; otherwise the host name needs be an exact match.

Depends on: Type ∈ [Credential]

array
Realm

The realm name for 'Credential' payloads. Use proper capitalization for this value. Ignored for 'Redirect' payloads.

Depends on: ExtensionIdentifier ∈ [com.apple.AppSSOKerberos.KerberosExtension]

string
URLs

An array of URL prefixes of identity providers where the app extension performs SSO. Required for 'Redirect' payloads. Ignored for 'Credential' payloads. The URLs need to begin with 'http://' or 'https://'. The system: - Matches scheme and host name case-insensitively - Doesn't allow query parameters and URL fragments - Requires that the URLs of all installed Extensible SSO payloads are unique

Depends on: Type ∈ [Redirect]

arrayURLs
DeniedBundleIdentifiers

An array of bundle identifiers of apps that don't use SSO provided by this extension. Available in iOS 15 and later, and macOS 12 and later.

arrayDenied Bundle Identifiers
ScreenLockedBehavior

If set to 'Cancel', the system cancels authentication requests when the screen is locked. If set to 'DoNotHandle', the request continues without SSO instead. This doesn't apply to requests where 'userInterfaceEnabled' is 'false', or for background 'URLSession' requests. Available in iOS 15 and later, and macOS 12 and later.

Default: "Cancel"

Range: Cancel (Cancel), Do Not Handle (DoNotHandle)

stringScreen Locked Behavior
ExtensionData

A dictionary of arbitrary data passed through to the app extension.

Depends on: ExtensionIdentifier ∈ [com.apple.AppSSOKerberos.KerberosExtension]

dictKerberos Extension Data
AuthenticationMethod

The Platform SSO authentication method the extension uses. Requires that the SSO Extension also supports the method. Available in macOS 13 and later, and deprecated in macOS 14.

Range: Password (Password), User Secure Enclave Key (UserSecureEnclaveKey)

stringAuthentication Method
PlatformSSO

The dictionary to configure Platform SSO. Requires 'Type' to be set to 'Redirect'.

dict
RegistrationToken

The token this device uses for registration with Platform SSO. Use it for silent registration with the Identity Provider. Requires that 'AuthenticationMethod' in 'PlatformSSO' isn't empty. Available in macOS 13 and later.

stringRegistration Token
hostnamerequired

A host or domain name, with or without a leading dot.

stringHostname / Domain name
URLrequired

An http or https URL prefix.

stringURL
bundleIdentifierrequired

The bundle identifier of the app.

stringBundle Identifier
allowAutomaticLogin

If 'false', the system doesn't allow saving passwords in the keychain.

Default: true

booleanAllow Automatic Login
allowPasswordChange

If 'false', the system disables password changes. Available in macOS 10.15 and later.

Default: true

booleanAllow Password Change
usePlatformSSOTGT

If 'true', the system requires this configuration uses a TGT from Platform SSO instead of requesting a new one. Available in macOS 13 and later.

Default: false

booleanUse Platform SSO TGT
allowPlatformSSOAuthFallback

If 'true' and 'usePlatformSSOTGT' is 'true', the system allows the user to manually sign in. Available in macOS 13 and later.

Default: true

booleanAllow Platform SSO Authentication Fallback
performKerberosOnly

If 'true', the Kerberos Extension handles Kerberos requests only. It doesn't check for password expiration, show the password expiration in the menu, check for external password changes, perform password sync, or retrieve the home directory. Available in macOS 13 and later.

Default: false

booleanPerform Kerberos Requests Only
cacheName

The GSS name of the Kerberos cache to use. Rarely set by an administrator.

stringCache Name
certificateUUID

The PayloadUUID of a PKINIT certificate.

stringCertificate UUID
credentialBundleIdACL

A list of bundle IDs allowed to access the ticket-granting ticket (TGT).

arrayCredential Bundle ID ACL
credentialUseMode

This setting affects how other processes use the Kerberos Extension credential. Allowed values: - 'always': The system always uses the credential if the SPN matches the Kerberos Extension 'Hosts' array and the caller hasn't specified another credential. However, the system won't use the credential if the calling app isn't in the 'credentialBundleIDACL'. - 'whenNotSpecified': The system only uses the extension credential if the SPN matches the Kerberos Extension 'Hosts' array. However, the system won't use the credential if the calling app isn't in the 'credentialBundleIDACL'. - 'kerberosDefault': The system uses the default Kerberos processes to select credentials, and normally uses the default Kerberos credential. This is the same as turning off this capability. Available in macOS 11 and later.

Default: "always"

Range: Always (always), When Not Specified (whenNotSpecified), Kerberos Default (kerberosDefault)

stringCredential Use Mode
customUsernameLabel

The custom user name label used in the Kerberos extension instead of "Username," such as "Company ID". Available in macOS 11 and later.

stringCustom Username Label
delayUserSetup

If 'true', the system doesn't prompt the user to setup the Kerberos extension until either the administrator enables it with the 'app-sso' tool or the system receives a Kerberos challenge. Available in macOS 11 and later.

Default: false

booleanDelay User Setup
helpText

The text to display to the user at the bottom of the Kerberos Login Window. You can also use this to display help information or disclaimer text. Available in iOS 14 and later, and macOS 11 and later.

stringHelp Text
isDefaultRealm

Specifies whether this is the default realm if there's more than one Kerberos extension configuration.

Default: false

booleanIs Default Realm
includeManagedAppsInBundleIdACL

If 'true', the Kerberos extension allows only managed apps to access and use the credential. This is in addition to the 'credentialBundleIDACL', if you specify that value. Available in iOS 14 and later, and macOS 12 and later.

Default: false

booleanInclude Managed Apps in Bundle ID ACL
includeKerberosAppsInBundleIdACL

If 'true', the Kerberos extension allows the standard Kerberos utilities including 'TicketViewer' and 'klist' to access and use the credential. This is in addition to 'includeManagedAppsInBundleIdACL' or the 'credentialBundleIdACL', if you specify those values. Available in macOS 12 and later.

Default: false

booleanInclude Kerberos Apps in Bundle ID ACL
monitorCredentialsCache

If 'false', the system requests the credential on the next matching Kerberos challenge or network state change. If the credential is expired or missing, the system creates a new one. Available in macOS 11 and later.

Default: true

booleanMonitor Credential Cache
principalName

The principal (username) to use. You don't need to include the realm.

stringPrincipal Name
preferredKDCs

The ordered list of preferred Key Distribution Centers (KDCs) to use for Kerberos traffic. Use this if the servers aren't discoverable through DNS. If the servers are specified, then the system uses them for both connectivity checks and attempts to use them first for Kerberos traffic. If the servers don't respond, the device falls back to DNS discovery. Format each entry the same as it would be in a 'krb5.conf' file, for example: - 'adserver1.example.com' - 'tcp/adserver1.example.com:88' - 'kkdcp://kerberosproxy.example.com:443/kkdcp'

arrayPreferred KDCs
pwChangeURL

This URL will launch in the user's default web browser when they initiate a password change. Available in macOS 10.15 and later.

stringPassword Change URL
pwNotificationDays

The number of days prior to password expiration when the system sends a notification of password expiration to the user. Available in macOS 10.15 and later.

Default: 15

integerPassword Notification Days
pwExpireOverride

The number of days that the system allows using passwords on this domain. For most domains, this calculation is automatic. Available in macOS 10.15 and later.

integerPassword Expiration Override
pwReqComplexity

If 'true', the system requires passwords to meet Active Directory's definition of "complex". Available in macOS 10.15 and later.

Default: false

booleanPassword Requirement Complexity
pwReqHistory

The number of prior passwords that the system disallows reuse on this domain. Available in macOS 10.15 and later.

integerPassword Requirement History
pwReqLength

The minimum length of passwords on the domain.Available in macOS 10.15 and later.

integerPassword Requirement Length
pwReqMinAge

The minimum age of passwords before the system allows changing them on this domain. Available in macOS 10.15 and later.

integerPassword Requirement Minimum Age
pwReqText

The text version of the domain's password requirements. Only for use if 'pwReqComplexity' or 'pwReqLength' aren't specified. Available in macOS 10.15 and later.

stringPassword Requirement Text
pwReqRTFData

The RTF file formatted version of the domain's password requirements. Only for use if 'pwReqComplexity' or 'pwReqLength' aren't specified. Available in macOS 15 and later.

data
replicationTime

The time, in seconds, required to replicate changes in the Active Directory domain. The Kerberos extension uses this when checking password age after a change. Available in macOS 11 and later.

Default: 900

integerReplication Time
requireTLSForLDAP

Require that LDAP connections use TLS. Available in macOS 11 and later.

Default: false

booleanRequire TLS for LDAP
requireUserPresence

If 'true', the system requires the user to provide Touch ID, Face ID or their passcode to access the keychain entry.

Default: false

booleanRequire User Presence
siteCode

The name of the Active Directory site the Kerberos extension should use. Most administrators don't need to modify this value, as the Kerberos extension can normally find the site automatically.

stringSite Code
syncLocalPassword

If 'false', the system disables password sync. Note that this will not work if the user is logged in with a mobile account. Available in macOS 10.15 and later.

Default: false

booleanSync Local Password
useSiteAutoDiscovery

If 'false', the Kerberos extension doesn't automatically use LDAP and DNS to determine its AD site name.

Default: true

booleanUse Site Auto Discovery
domainRealmMapping

A custom domain-realm mapping for Kerberos. The system uses this when the DNS name of hosts doesn't match the realm name. Most administrators don't need to customize this.

dict
Enable_SSO_On_All_ManagedApps

Default: 0

Range: Disable (0), Enable (1)

integerEnable SSO on All Managed Apps
AppAllowList

Enable SSO for specific apps

stringApp Allow List
AppPrefixAllowList

Enable SSO for all apps with a specific bundle ID prefix

stringApp Prefix Allow List
AppBlockList

Disable SSO for specific apps

stringApp Block List
AppCookieSSOAllowList

Enable SSO through cookies for a specific application

stringApp Cookie SSO Allow List
browser_sso_interaction_enabled

Default: 0

Range: Disable (0), Enable (1)

integerAllow Users to Sign in from Unknown Applications using the Safari Browser
browser_sso_disable_mfa

Default: 0

Range: Enable (0), Disable (1)

integerDisable Asking for MFA During Initial Bootstrapping
disable_explicit_app_prompt

Default: 0

Range: Enable (0), Disable (1)

integerDisable OAuth2 Application Prompts
disable_explicit_app_prompt_and_autologin

Default: 0

Range: Enable (0), Disable (1)

integerDisable OAuth2 Application Prompts and Autologin
identityIssuerAutoSelectFilter

A string with wildcards that can use used to filter the list of available SmartCards by issuer. e.g "\*My CA2\*". If there is one remaining, it will be auto-selected. If there more than one remaining, then the list is shorter. Available in macOS 15 and later.

string
allowSmartCard

If 'true', allow the user to switch the user interface to SmartCard mode. Available in macOS 15 and later.

Default: true

boolean
allowPassword

If 'true', allow the user to switch the user interface to Password mode. Available in macOS 15 and later.

Default: true

boolean
startInSmartCardMode

If 'true', the user interface will start in SmartCard mode. Available in macOS 15 and later.

Default: false

boolean
credentialBundleIdACLItem

Bundle IDs allowed to access the TGT. These values are case sensitive.

stringBundle ID
preferredKDCrequired

A host or domain name in the format of [protocol/]hostname[:port][/path]

stringKey Distribution Center
Realm

The key should be the name of the realm, and the value is an array of DNS suffixes that map to the realm.

array
RealmItem

Domains to map to the realm

string
AuthenticationMethod

The Platform SSO authentication method to use with the extension. Requires that the SSO Extension also support the method.

Range: Password, UserSecureEnclaveKey, SmartCard

string
UseSharedDeviceKeys

If 'true', the system uses the same signing and encryption keys for all users. Only supported on the device channel.

Default: false

boolean
AccountDisplayName

The display name for the account in notifications and authentication requests.

string
LoginFrequency

The duration, in seconds, until the system requires a full login instead of a refresh. The default value is 64,800 (18 hours). The minimum value is 3600 (1 hour).

Default: 64800

Range: 3600 – —

integer
EnableCreateUserAtLogin

Enables creating users at the Login Window with an 'AuthenticationMethod' of either 'Password' or 'SmartCard'. Requires that 'UseSharedDeviceKeys' is 'true'.

Default: false

boolean
EnableAuthorization

Enables using identity provider accounts at authorization prompts. Requires that 'UseSharedDeviceKeys' is 'true'. The system assigns groups using 'AdministratorGroups', 'AdditionalGroups', or 'AuthorizationGroups'.

Default: false

boolean
TokenToUserMapping

The attribute mapping to use when creating users, or for authorization.

dict
NewUserAuthorizationMode

The permission to apply to newly created accounts at login. Allowed values: - 'Standard': The account is a standard user. - 'Admin': The system adds the account to the local administrators group. - 'Groups': The system assigns groups to the account using 'AdministratorGroups', 'AdditionalGroups', or 'AuthorizationGroups'. - 'Temporary': The system uses a temporary session configuration for newly created accounts at login.

Range: Standard, Admin, Groups, Temporary

string
UserAuthorizationMode

The permission to apply to an account each time the user authenticates. Allowed values: - 'Standard': The account is a standard user. - 'Admin': The system adds the account to the local administrators group. - 'Groups': The system assigns group to the account using 'AdministratorGroups', 'AdditionalGroups', or 'AuthorizationGroups'.

Range: Standard, Admin, Groups

string
AdministratorGroups

The list of groups to use for administrator access. The system requests membership during authentication.

array
AdditionalGroups

The list of created groups that don't have administrator access.

array
AuthorizationGroups

The pairing of Authorization Rights to group names. When using this, the system updates the Authorization Right to use the group.

dict
FileVaultPolicy

The policy to apply when using Platform SSO at FileVault unlock on a Mac with Apple silicon. Applies when 'AuthenticationMethod' is 'Password'. Available in macOS 15 and later.

array
LoginPolicy

The policy to apply when using Platform SSO at the Login Window. Applies when 'AuthenticationMethod' is 'Password'. Available in macOS 15 and later.

array
UnlockPolicy

The policy to apply when using Platform SSO at screensaver unlock. Applies when 'AuthenticationMethod' is 'Password'. Available in macOS 15 and later.

array
OfflineGracePeriod

The amount of time after the last successful Platform SSO login for using a local account password offline. Required when setting 'AllowOfflineGracePeriod'. Available in macOS 15 and later.

integer
AuthenticationGracePeriod

The amount of time after receiving or updating a 'FileVaultPolicy', 'LoginPolicy', or 'UnlockPolicy' that the system can use unregistered local accounts. Required when 'AllowAuthenticationGracePeriod' is set. Available in macOS 15 and later.

integer
NonPlatformSSOAccounts

The list of local accounts that aren't subject to the 'FileVaultPolicy', 'LoginPolicy', or 'UnlockPolicy'. The accounts don't receive a prompt to register for Platform SSO. Available in macOS 15 and later.

array
AllowDeviceIdentifiersInAttestation

If 'true', the system includes the device UDID and serial number in Platform SSO attestations.

Default: false

boolean
EnableCreateFirstUserDuringSetup

If 'true', the device uses Platform SSO to create the first user account on the Mac during 'Setup Assistant'.

Default: true

boolean
NewUserAuthenticationMethods

The set of authentication methods to use for newly created accounts at login or during 'Setup Assistant'. The system uses 'Password' and 'SmartCard' if this key isn't present.

array
AccessKeyReaderGroupIdentifier

The reader group identifier for use with the 'AccessKey'. The value needs to match the configured access key. Required if 'NewUserAuthenticationMethods' contains 'AccessKey'.

data
AccessKeyTerminalIdentityUUID

The 'PayloadUUID' of an identity payload to use as the 'Terminal' identity of the access key. The identity needs to be trusted by the access key. Required if 'NewUserAuthenticationMethods' includes 'AccessKey'. Allowed identity payload types: - 'com.apple.security.pkcs12' - 'com.apple.security.acme' - 'com.apple.security.scep'

string
AccessKeyReaderIssuerCertificateUUID

The 'PayloadUUID' of a certificate payload for the issuer certificate of the `Terminal` identity of the access key. Other specifications refer to the key as the "Reader CA Public Key". The key must be an elliptic curve key. Required if `NewUserAuthenticationMethods` includes `AccessKey`. The issuer of the Terminal identity of the access key needs to match this certificate, otherwise the device fails the authentication.

stringAccess Key Reader Issuer Certificate UUID
AllowAccessKeyExpressMode

If 'true', the system uses the access key in express mode, and doesn't require authentication before use.

Default: false

boolean
SynchronizeProfilePicture

If 'true', the system requests the user's profile picture from the SSO extension.

Default: false

boolean
TemporarySessionQuickLogin

If 'true', the system uses a quicker Authenticated Guest Mode login to Mac behavior. The system erases user data from only select locations in the user home directory after each session completes. Once every eight hours the system erases the full user home directory after a session completes. Turn this on for shared environments that have a high frequency of short sessions.

Default: false

boolean
EnableRegistrationDuringSetup

If 'true', the system enables the PlatformSSO registration process during Setup Assistant on devices running macOS 26 and later. Set this key to 'true' when configuring PlatformSSO before enrollment using the 'com.apple.psso.required' error response.

Default: false

boolean
AccountName

The claim name to use for the user's account name.

string
FullName

The claim name to use for the user's full name.

string
Group

The group name.

string
Group

The group name.

string
{{key}}required
string
{{value}}required

The key is an access right value, the value is the group to be associated with that access right.

string
policyrequired

* AttemptAuthentication Platform SSO authentication is attempted before proceeding. If offline, unlock will continue if the local account password matches. If online and the credential is incorrect, then a successful Platform SSO authentication is required to proceed, even if taken offline. * RequireAuthentication Platform SSO authentication is required before proceeding. If the device is offline and 'AllowOfflineGracePeriod' is enabled, then the offline 'OfflineGracePeriod' is used to determine if the user can proceed or not. If online and the credential is incorrect, then a valid Platform SSO authentication is required to proceed regardless of the 'OfflineGracePeriod'. If the account is not registered for Platform SSO and 'AllowAuthenticationGracePeriod' is enabled, then the 'AuthenticationGracePeriod' is used to determine if the user can proceed or not. * AllowOfflineGracePeriod Allow the use of the 'OfflineGracePeriod' when 'RequireAuthentication' is enabled. If 'AllowOfflineGracePeriod' is not set, then offline access is denied. * AllowAuthenticationGracePeriod Allow the use of the 'AuthenticationGracePeriod' for other local accounts when 'RequireAuthentication' is enabled. The 'AuthenticationGracePeriod' starts when any of the policies have been updated. If 'AllowAuthenticationGracePeriod' is not set, then unregistered account access is denied.

Range: AttemptAuthentication, RequireAuthentication, AllowOfflineGracePeriod, AllowAuthenticationGracePeriod

string
policyrequired

* AttemptAuthentication Platform SSO authentication is attempted before proceeding. If offline, unlock will continue if the local account password matches. If online and the credential is incorrect, then a successful Platform SSO authentication is required to proceed, even if taken offline. * RequireAuthentication Platform SSO authentication is required before proceeding. If the device is offline and 'AllowOfflineGracePeriod' is enabled, then the offline 'OfflineGracePeriod' is used to determine if the user can proceed or not. If online and the credential is incorrect, then a valid Platform SSO authentication is required to proceed regardless of the 'OfflineGracePeriod'. If the account is not registered for Platform SSO and 'AllowAuthenticationGracePeriod' is enabled, then the 'AuthenticationGracePeriod' is used to determine if the user can proceed or not. * AllowOfflineGracePeriod Allow the use of the 'OfflineGracePeriod' when 'RequireAuthentication' is enabled. If 'AllowOfflineGracePeriod' is not set, then offline access is denied. * AllowAuthenticationGracePeriod Allow the use of the 'AuthenticationGracePeriod' for other local accounts when 'RequireAuthentication' is enabled. The 'AuthenticationGracePeriod' starts when any of the policies have been updated. If 'AllowAuthenticationGracePeriod' is not set, then unregistered account access is denied.

Range: AttemptAuthentication, RequireAuthentication, AllowOfflineGracePeriod, AllowAuthenticationGracePeriod

string
policyrequired

* AttemptAuthentication Platform SSO authentication is attempted before proceeding. If offline, unlock will continue if the local account password matches. If online and the credential is incorrect, then a successful Platform SSO authentication is required to proceed, even if taken offline. * RequireAuthentication Platform SSO authentication is required before proceeding. If the device is offline and 'AllowOfflineGracePeriod' is enabled, then the offline 'OfflineGracePeriod' is used to determine if the user can proceed or not. If online and the credential is incorrect, then a valid Platform SSO authentication is required to proceed regardless of the 'OfflineGracePeriod'. If the account is not registered for Platform SSO and 'AllowAuthenticationGracePeriod' is enabled, then the 'AuthenticationGracePeriod' is used to determine if the user can proceed or not. * AllowOfflineGracePeriod Allow the use of the 'OfflineGracePeriod' when 'RequireAuthentication' is enabled. If 'AllowOfflineGracePeriod' is not set, then offline access is denied. * AllowAuthenticationGracePeriod Allow the use of the 'AuthenticationGracePeriod' for other local accounts when 'RequireAuthentication' is enabled. The 'AuthenticationGracePeriod' starts when any of the policies have been updated. If 'AllowAuthenticationGracePeriod' is not set, then unregistered account access is denied. * AllowTouchIDOrWatchForUnlock Allow TouchID or Watch to unlock the screensaver instead of Platform SSO authentication when 'RequireAuthentication' is enabled.

Range: AttemptAuthentication, RequireAuthentication, AllowOfflineGracePeriod, AllowAuthenticationGracePeriod, AllowTouchIDOrWatchForUnlock

string
usernamerequired

A local account username.

string
NewUserAuthenticationMethod

An authentication method to use for newly created accounts at login or during 'Setup Assistant'. Allowed values: - 'Password': The account uses a password for authentication. - 'SmartCard': The account uses a smart card for authentication. - 'AccessKey': The account uses an access key for authentication.

Range: Password, SmartCard, AccessKey

string