Creating an embedded assertion
Request an embedded assertion for login types that require a digital signature for authentication.
Overview
During authentication, the system uses the embedded assertion when the login type requires a digital signature for authentication. The system uses this assertion for authentication with a secure enclave key, SmartCard, and encrypted password. The embedded assertion is a Javascript Object Signing and Encryption (JOSE) object that’s formatted per RFC 7523 and signed with the authenticator per RFC 7515. However, the assertion differs from RFC 7523 when using secure enclave key authentication, which is signed using the ES256 algorithm instead of the RS256 algorithm in the RFC. This algorithm difference is because secure enclave key supports ellyptic curve keys, not RSA keys.
The following table specifies the header parameters that the system uses to create an embedded assertion:
Key | Value | Notes |
|---|---|---|
|
| Required if the extension SDK is macOS 13.x. |
| Required if the extension SDK is macOS 14.x or later. | |
|
| Required. The signing algorithm. If secure enclave key, the system only supports |
| Required. If SmartCard, it depends on the key type and key length on the SmartCard. | |
| The base-64 encoded SHA256 hash of the ANSI X9.63-formatted public key for the signing key | Required. |
| The base-64 encoded signing certificate from the SmartCard | Optional. The value is base-64 encoded per RFC 7517. |
| Optional. If present, adds key value pairs to the assertion. |
The following table specifies the body parameters that the system uses to create an embedded assertion:
Key | Value | Notes |
|---|---|---|
| Required. The identity provider (IdP) needs to verify this value to ensure that the assertion was created for them. | |
| The current time | Required. The IdP needs to verify this value. |
| 5 minutes from now | Required. The IdP needs to verify this value. |
| Required. If not set, the system uses the local account name. | |
| Required. If not set, the system uses the local account name. | |
| A nonce value | Required. The IdP needs to verify that this value matches the nonce in the login request. |
Servernonceclaimname or | The value returned from the nonce request | Required. The key name is either the Servernonceclaimname or the default value |
|
| Required. The requested scope for the assertion. The default value is |
| Optional. If present, adds key value pairs to the assertion. | |
Servernonceclaimname or | The value returned from the nonce request | Required. The key name is either the Servernonceclaimname or the default value |
The following code provides an example of an embedded assertion request:
{
"typ" : "JWT",
"alg" : "ES256",
"kid" : "pmQkkBPmTgijIX00/SpKUjzvm3k2MZAZRiVR3iEv8l0="
}.{
"nonce" : "7DE40CF9-C885-4397-B48E-E95EDD22038A",
"request_nonce" : "AwABAAAAAAADAOz_BADv_xtgu_SM1Mvoq02PYz_YfXxx5FAgcLHLNikH6gjrBWwcqnRW_haxqO9JCiPat5KfkTily04S8EH3AQwVsWCxHYQgAA",
"iat" : "1655416300",
"sub" : "foo",
"scope" : "openid offline_access urn:apple:platformsso",
"exp" : "1655416600",
"aud" : "060798FF-814E-4C38-97F8-28C954B7E058",
"iss" : "foo"
}.[Signature]
For more information, see Authentication process.