Creating an encrypted embedded assertion
Request an encrypted embedded assertion for login types that require password encryption.
Overview
During authentication, if the SSO extension requests password encryption by setting the loginRequestEncryptionPublicKey in the login configuration, the system doesn’t send the password in the login request. Instead, it creates an encrypted embedded assertion instead, that contains the password. The assertion is a JSON Web Encryption (JWE) object that’s encrypted according to RFC 7516 Section 5.1 with JWE Compact Serialization. The supported key agreement algorithm is ECDH-ES per RFC 7518 Section 4.6. This algorithm is ECIES, a proven-secure algorithm with the public keys included. See the Configure concatenation key derivation function (Concat KDF) section below for input values. Key agreement uses the public key for the loginRequestEncryptionPublicKey that’s supplied during registration. The supported encryption algorithm is A256GCM per RFC 7518 Section 5.3.
The following table specifies the header parameters that the system uses to create an encrypted embedded assertion:
Key | Value | Notes |
|---|---|---|
|
| Required. |
|
| Required. The supported encryption algorithm per RFC 7518 Section 4.6. |
|
| Required. The supported key agreement algorithm per RFC 7518 Section 5.3. |
| The ephemeral public key for the key exchange | Required. Per RFC 7518 Section 4.6.1.1, formatted per RFC 7517. |
| The | Optional. |
| The base-64 URL encoded | Required. Per RFC 7518 Section 4.6.1.2. |
| The base-64 URL encoded | Required. Per RFC 7518 Section 4.6.1.3, the client uses the value from the request. |
| Optional. If present, adds key value pairs to the assertion. |
The following table specifies the body parameters that the system uses to create an encrypted embedded assertion:
Key | Value | Notes |
|---|---|---|
| Required. The identity provider (IdP) needs to verify the value to ensure that the system created the assertion for them. | |
| The current time | Required. The IdP needs to verify the value. |
| 5 minutes from now | Required. The IdP needs to verify the 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: If included, the IdP needs to verify that this value matches the nonce in the login request. |
|
| Required. The requested scope for the assertion. The default value is |
| The password for authentication | Required. |
Servernonceclaimname or | The value returned from the nonce request | Required: The key name is either the Servernonceclaimname or the default value |
| Optional: If present, adds the key value pairs to the assertion. |
Configure concatenation key derivation function (Concat KDF)
Configuration of Concat KDF for Platform SSO is per RFC 7518 Section 4.6.2 and NIST.800-56A sections 5.8.1 and 6.2.2.2. See the input definitions in the table below. The system concatenates these values per NIST.800-56A sections 5.8.1 and then it computes a SHA-256 hash to create the key. Then, it sends the PartyUInfo and PartyVInfo values to the server in the header.
Key | Value | Notes |
|---|---|---|
| Set to the octets of the ASCII representation of the | Per RFC 7518 Section 4.6.2 when using direct key agreement |
| ` | |
| This needs to use the | |
| Set to the number of bits in the desired output key. | Per RFC 7518 Section 4.6.2 |
|
| Per RFC 7518 Section 4.6.2 |
The following code sample provides an example of an encrypted embedded assertion request:
{
"enc" : "A256GCM",
"apv" : "AAAADUFQUExFRU1CRURERUQAAABBBCX87eqonWyNUNz2JeH2wG68_WiPfQlJw6AiDvHSD08n5Hdn1oDUBxhL_TRarvhUUGDYsnBRk2HRH_ZoXGtpUncAAABuQXdBQkFBQUFBQUFEQU96X0JBRHZfeHRndV9TTTFNdm9xMDJQWXpfWWZYeHg1RkFnY0xITE5pa0g2Z2pyQld3Y3FuUldfaGF4cU85SkNpUGF0NUtma1RpbHkwNFM4RUgzQVF3VnNXQ3hIWVFnQUE",
"alg" : "ECDH-ES",
"epk" : {
"y" : "1wfUpcnhOq7SPl77UBfkanXdQObiBXDIDLx0n1_zlJI",
"x" : "NUnMKzz81Fl0SilEVYgWWjL_4lTAaXHeJ4uJGQ19AAk",
"kty" : "EC",
"crv" : "P-256"
},
"kid" : "7y1xXc4I6iAyldmVkIeGtQxo8NRq2FgKFb++Or13jxU=",
"apu" : "AAAABUFQUExFAAAAQQQ1ScwrPPzUWXRKKURViBZaMv_iVMBpcd4ni4kZDX0ACdcH1KXJ4Tqu0j5e-1AX5Gp13UDm4gVwyAy8dJ9f85SS",
"typ" : "platformsso-encrypted-login-assertion+jwt"
}.{
"iat" : 1685732130,
"password" : "bar",
"iss" : "foo",
"request_nonce" : "AwABAAAAAAADAOz_BADv_xtgu_SM1Mvoq02PYz_YfXxx5FAgcLHLNikH6gjrBWwcqnRW_haxqO9JCiPat5KfkTily04S8EH3AQwVsWCxHYQgAA",
"sub" : "foo",
"scope" : "openid offline_access urn:apple:platformsso",
"exp" : 1685732430,
"aud" : "060798FF-814E-4C38-97F8-28C954B7E058",
"nonce" : "D1DEE607-0F44-43F5-8B3E-042E91F425A7"
}.[Signature]
For more information, see Authentication process.