Test Name | oidcc-refresh-token-rp-key-rotation |
---|---|
Variant | client_auth_type=private_key_jwt, server_metadata=discovery, response_type=code id_token, client_registration=dynamic_client, response_mode=default |
Test ID | 9jOmVaRPYjb64me https://www.certification.openid.net/log-detail.html?public=true&log=9jOmVaRPYjb64me |
Created | 2021-08-18T12:39:11.734016Z |
Description | |
Test Version | 4.1.23 |
Test Owner | 105373019399374514246 https://accounts.google.com |
Plan ID | ZX0v1z2U70l9b https://www.certification.openid.net/plan-detail.html?public=true&plan=ZX0v1z2U70l9b |
Exported From | https://www.certification.openid.net |
Exported By | 105373019399374514246 https://accounts.google.com |
Suite Version | 4.1.24 |
Exported | 2021-08-19 11:22:34 (UTC) |
Status: FINISHED Result: PASSED |
SUCCESS 90 FAILURE 0 WARNING 0 REVIEW 0 INFO 1 |
2021-08-18 12:39:11 |
INFO
|
TEST-RUNNER
Test instance 9jOmVaRPYjb64me created
|
||||||||||||||
|
2021-08-18 12:39:11 |
SUCCESS
|
CreateRedirectUri
Created redirect URI
|
||
|
2021-08-18 12:39:11 |
|
GetDynamicServerConfiguration
HTTP request
|
||||||||
|
2021-08-18 12:39:11 |
RESPONSE
|
GetDynamicServerConfiguration
HTTP response
|
||||||||
|
2021-08-18 12:39:11 |
|
GetDynamicServerConfiguration
Downloaded server configuration
|
||
|
2021-08-18 12:39:11 |
SUCCESS
|
GetDynamicServerConfiguration
Successfully parsed server configuration
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
2021-08-18 12:39:11 |
SUCCESS
|
CheckServerConfiguration
Found required server configuration keys
|
||
|
2021-08-18 12:39:11 |
SUCCESS
|
ExtractTLSTestValuesFromServerConfiguration
Extracted TLS information from authorization server configuration
|
||||||||
|
2021-08-18 12:39:11 |
|
FetchServerKeys
Fetching server key
|
||
|
2021-08-18 12:39:11 |
|
FetchServerKeys
HTTP request
|
||||||||
|
2021-08-18 12:39:12 |
RESPONSE
|
FetchServerKeys
HTTP response
|
||||||||
|
2021-08-18 12:39:12 |
|
FetchServerKeys
Found JWK set string
|
||
|
2021-08-18 12:39:12 |
SUCCESS
|
FetchServerKeys
Found server JWK set
|
||
|
2021-08-18 12:39:12 |
SUCCESS
|
CheckServerKeysIsValid
Server JWKs is valid
|
||
|
2021-08-18 12:39:12 | SUCCESS |
ValidateServerJWKs
Valid server JWKs: keys are valid JSON, contain the required fields and are correctly encoded using unpadded base64url
|
|
2021-08-18 12:39:12 | SUCCESS |
CheckForKeyIdInServerJWKs
All keys contain kids
|
|
2021-08-18 12:39:12 | SUCCESS |
CheckDistinctKeyIdValueInServerJWKs
Distinct 'kid' value in all keys of server_jwks
|
||
|
2021-08-18 12:39:12 | SUCCESS |
EnsureServerJwksDoesNotContainPrivateOrSymmetricKeys
Jwks does not contain any private or symmetric keys
|
|
2021-08-18 12:39:12 |
|
StoreOriginalClientConfiguration
Created original_client_config object from the client configuration.
|
||||||||||||||||
|
2021-08-18 12:39:12 |
|
ExtractClientNameFromStoredConfig
Extracted client_name from stored client configuration.
|
||
|
2021-08-18 12:39:12 |
SUCCESS
|
CreateJwksUri
Created JWKs URI
|
||
|
2021-08-18 12:39:12 |
SUCCESS
|
GenerateRS256ClientJWKsWithKeyID
Generated client JWKs
|
||||
|
2021-08-18 12:39:12 | SUCCESS |
CheckDistinctKeyIdValueInClientJWKs
Distinct 'kid' value in all keys of client_jwks
|
||
|
2021-08-18 12:39:12 |
|
CreateEmptyDynamicRegistrationRequest
Created empty dynamic registration request
|
|
2021-08-18 12:39:12 |
|
AddClientNameToDynamicRegistrationRequest
Added client_name to registration request
|
||
|
2021-08-18 12:39:12 |
|
AddAuthorizationCodeGrantTypeToDynamicRegistrationRequest
Added 'authorization_code' to 'grant_types'
|
||
|
2021-08-18 12:39:12 |
|
AddImplicitGrantTypeToDynamicRegistrationRequest
Added 'implicit' to 'grant_types'
|
||
|
2021-08-18 12:39:12 |
|
AddJwksUriToDynamicRegistrationRequest
Added jwks_uri to dynamic registration request
|
||
|
2021-08-18 12:39:12 |
|
AddTokenEndpointAuthMethodToDynamicRegistrationRequestFromEnvironment
Added token endpoint auth method to dynamic registration request
|
||
|
2021-08-18 12:39:12 |
|
AddResponseTypesArrayToDynamicRegistrationRequestFromEnvironment
Added response_types array to dynamic registration request
|
||
|
2021-08-18 12:39:12 |
|
AddRedirectUriToDynamicRegistrationRequest
Added redirect_uris array to dynamic registration request
|
||
|
2021-08-18 12:39:12 |
|
AddContactsToDynamicRegistrationRequest
Added contacts array to dynamic registration request
|
||
|
2021-08-18 12:39:12 |
|
AddRefreshTokenGrantTypeToDynamicRegistrationRequest
Added 'refresh_token' to 'grant_types'
|
||
|
2021-08-18 12:39:12 |
|
CallDynamicRegistrationEndpoint
HTTP request
|
||||||||
|
2021-08-18 12:39:12 |
RESPONSE
|
CallDynamicRegistrationEndpoint
HTTP response
|
||||||||
|
2021-08-18 12:39:12 |
|
CallDynamicRegistrationEndpoint
Parsed registration endpoint response
|
||||||||||
|
2021-08-18 12:39:12 | SUCCESS |
EnsureContentTypeJson
endpoint_response Content-Type: header is application/json
|
|
2021-08-18 12:39:12 | SUCCESS |
EnsureHttpStatusCodeIs201
dynamic registration endpoint returned the expected http status
|
||
|
2021-08-18 12:39:12 | SUCCESS |
CheckNoErrorFromDynamicRegistrationEndpoint
Dynamic registration endpoint did not return an error.
|
|
2021-08-18 12:39:12 | SUCCESS |
ExtractDynamicRegistrationResponse
Extracted client from dynamic registration response
|
||
|
2021-08-18 12:39:12 | SUCCESS |
ExtractClientManagementCredentials
Extracted dynamic registration management credentials
|
||||
|
2021-08-18 12:39:12 |
|
SetScopeInClientConfigurationToOpenIdOfflineAccess
Set scope in client configuration to "openid offline_access" so that a refresh token is issued
|
||
|
2021-08-18 12:39:12 |
SUCCESS
|
EnsureServerConfigurationSupportsPrivateKeyJwt
Found supported private_key_jwt method
|
||
|
2021-08-18 12:39:12 |
SUCCESS
|
SetProtectedResourceUrlToUserInfoEndpoint
userinfo_endpoint will be used to test access token. The user info is not a mandatory to implement feature in the OpenID Connect specification, but is mandatory for certification.
|
||
|
2021-08-18 12:39:12 |
|
oidcc-refresh-token-rp-key-rotation
Setup Done
|
|
Make request to authorization endpoint |
2021-08-18 12:39:12 |
SUCCESS
|
CreateAuthorizationEndpointRequestFromClientInformation
Created authorization endpoint request
|
||||||
|
2021-08-18 12:39:12 |
|
CreateRandomStateValue
Created state value
|
||||
|
2021-08-18 12:39:12 |
SUCCESS
|
AddStateToAuthorizationEndpointRequest
Added state parameter to request
|
||||||||
|
2021-08-18 12:39:12 |
|
CreateRandomNonceValue
Created nonce value
|
||||
|
2021-08-18 12:39:12 |
SUCCESS
|
AddNonceToAuthorizationEndpointRequest
Added nonce parameter to request
|
||||||||||
|
2021-08-18 12:39:12 |
SUCCESS
|
SetAuthorizationEndpointRequestResponseTypeFromEnvironment
Added response_type parameter to request
|
||||||||||||
|
2021-08-18 12:39:12 | SUCCESS |
AddPromptConsentToAuthorizationEndpointRequestIfScopeContainsOfflineAccess
Added prompt=consent to authorization endpoint request
|
||||||||||||||
|
2021-08-18 12:39:12 |
SUCCESS
|
BuildPlainRedirectToAuthorizationEndpoint
Sending to authorization endpoint
|
||
|
2021-08-18 12:39:12 |
REDIRECT
|
oidcc-refresh-token-rp-key-rotation
Redirecting to authorization endpoint
|
||
|
2021-08-18 12:39:20 |
INCOMING
|
oidcc-refresh-token-rp-key-rotation
Incoming HTTP request to test instance 9jOmVaRPYjb64me
|
||||||||||||||
|
2021-08-18 12:39:20 |
SUCCESS
|
CreateRandomImplicitSubmitUrl
Created random implicit submission URL
|
||
|
2021-08-18 12:39:20 |
OUTGOING
|
oidcc-refresh-token-rp-key-rotation
Response to HTTP request to test instance 9jOmVaRPYjb64me
|
||||
|
2021-08-18 12:39:20 |
INCOMING
|
oidcc-refresh-token-rp-key-rotation
Incoming HTTP request to test instance 9jOmVaRPYjb64me
|
||||||||||||||
|
2021-08-18 12:39:20 |
OUTGOING
|
oidcc-refresh-token-rp-key-rotation
Response to HTTP request to test instance 9jOmVaRPYjb64me
|
||||||||
|
2021-08-18 12:39:20 |
|
ExtractImplicitHashToCallbackResponse
Extracted response from URL fragment
|
||
|
2021-08-18 12:39:20 |
SUCCESS
|
ExtractImplicitHashToCallbackResponse
Extracted the hash values
|
||||||
|
2021-08-18 12:39:20 |
REDIRECT-IN
|
oidcc-refresh-token-rp-key-rotation
Authorization endpoint response captured
|
||||||||||
|
Verify authorization endpoint response |
2021-08-18 12:39:20 | SUCCESS |
RejectAuthCodeInUrlQuery
Authorization code is not present in URL query returned from authorization endpoint
|
|
2021-08-18 12:39:20 | SUCCESS |
RejectErrorInUrlQuery
'error' is not present in URL query returned from authorization endpoint
|
|
2021-08-18 12:39:20 |
SUCCESS
|
CheckMatchingCallbackParameters
Callback parameters successfully verified
|
|
2021-08-18 12:39:20 |
|
ValidateIssInAuthorizationResponse
No 'iss' value in authorization response.
|
|
2021-08-18 12:39:20 |
SUCCESS
|
CheckIfAuthorizationEndpointError
No error from authorization endpoint
|
|
2021-08-18 12:39:20 |
SUCCESS
|
CheckStateInAuthorizationResponse
State in response correctly returned
|
||
|
2021-08-18 12:39:20 |
SUCCESS
|
ExtractAuthorizationCodeFromAuthorizationResponse
Found authorization code
|
||
|
2021-08-18 12:39:20 |
SUCCESS
|
ExtractIdTokenFromAuthorizationResponse
Found and parsed the id_token from authorization_endpoint_response
|
||||||
|
2021-08-18 12:39:20 |
SUCCESS
|
ValidateIdToken
ID token iss, aud, exp, iat, auth_time, acr & nbf claims passed validation checks
|
|
2021-08-18 12:39:20 | SUCCESS |
ValidateIdTokenNonce
Nonce values match
|
||
|
2021-08-18 12:39:20 | SUCCESS |
ValidateIdTokenACRClaimAgainstRequest
Nothing to check; the conformance suite did not request an acr claim in request object
|
|
2021-08-18 12:39:20 |
SUCCESS
|
ValidateIdTokenSignature
id_token signature validated
|
||
|
2021-08-18 12:39:20 |
SUCCESS
|
ValidateIdTokenSignatureUsingKid
id_token signature validated
|
||
|
2021-08-18 12:39:20 | SUCCESS |
CheckForSubjectInIdToken
Found 'sub' in id_token
|
||
|
2021-08-18 12:39:20 |
SUCCESS
|
CreateTokenEndpointRequestForAuthorizationCodeGrant
|
||||||
|
2021-08-18 12:39:20 |
SUCCESS
|
CreateClientAuthenticationAssertionClaims
Created client assertion claims
|
||||||||||||
|
2021-08-18 12:39:20 |
SUCCESS
|
SignClientAuthenticationAssertion
Signed the client assertion
|
||
|
2021-08-18 12:39:20 |
|
AddClientAssertionToTokenEndpointRequest
Added client assertion
|
||||||||||
|
2021-08-18 12:39:20 |
|
CallTokenEndpoint
HTTP request
|
||||||||
|
2021-08-18 12:39:20 |
INCOMING
|
oidcc-refresh-token-rp-key-rotation
Incoming HTTP request to test instance 9jOmVaRPYjb64me
|
||||||||||||||
|
2021-08-18 12:39:20 |
OUTGOING
|
oidcc-refresh-token-rp-key-rotation
Response to HTTP request to test instance 9jOmVaRPYjb64me
|
||||||||
|
2021-08-18 12:39:20 |
RESPONSE
|
CallTokenEndpoint
HTTP response
|
||||||||
|
2021-08-18 12:39:20 |
|
CallTokenEndpoint
Token endpoint response
|
||
|
2021-08-18 12:39:20 |
SUCCESS
|
CallTokenEndpoint
Parsed token endpoint response
|
||||||||||||
|
2021-08-18 12:39:20 |
SUCCESS
|
CheckIfTokenEndpointResponseError
No error from token endpoint
|
|
2021-08-18 12:39:20 |
SUCCESS
|
CheckForAccessTokenValue
Found an access token
|
||
|
2021-08-18 12:39:20 |
SUCCESS
|
ExtractAccessTokenFromTokenResponse
Extracted the access token
|
||||
|
2021-08-18 12:39:20 | SUCCESS |
ExtractExpiresInFromTokenEndpointResponse
Extracted 'expires_in'
|
||
|
2021-08-18 12:39:20 | SUCCESS |
ValidateExpiresIn
expires_in passed all validation checks
|
||
|
2021-08-18 12:39:20 |
SUCCESS
|
CheckForRefreshTokenValue
Found a refresh token
|
||
|
2021-08-18 12:39:20 | SUCCESS |
ExtractIdTokenFromTokenResponse
Found and parsed the id_token from token_endpoint_response
|
||||||
|
2021-08-18 12:39:20 |
SUCCESS
|
ValidateIdToken
ID token iss, aud, exp, iat, auth_time, acr & nbf claims passed validation checks
|
|
2021-08-18 12:39:20 | SUCCESS |
ValidateIdTokenNonce
Nonce values match
|
||
|
2021-08-18 12:39:20 | SUCCESS |
ValidateIdTokenACRClaimAgainstRequest
Nothing to check; the conformance suite did not request an acr claim in request object
|
|
2021-08-18 12:39:20 |
SUCCESS
|
ValidateIdTokenSignature
id_token signature validated
|
||
|
2021-08-18 12:39:20 |
SUCCESS
|
ValidateIdTokenSignatureUsingKid
id_token signature validated
|
||
|
2021-08-18 12:39:20 | SUCCESS |
CheckForSubjectInIdToken
Found 'sub' in id_token
|
||
|
2021-08-18 12:39:20 | SUCCESS |
VerifyIdTokenSubConsistentHybridFlow
authorization endpoint and token endpoint id_token have same sub
|
||||
|
Cycling keys in RP jwks_uri |
2021-08-18 12:39:21 |
SUCCESS
|
GenerateRS256ClientJWKsWithKeyID
Generated client JWKs
|
||||
|
Waiting, so that any DoS limits on retrieving the jwks_uri too often are not triggered |
2021-08-18 12:39:21 |
SUCCESS
|
WaitFor60Seconds
Pausing for 60 seconds
|
|
2021-08-18 12:40:21 |
SUCCESS
|
WaitFor60Seconds
Woke up after 60 seconds sleep
|
|
2021-08-18 12:40:21 |
SUCCESS
|
ExtractRefreshTokenFromTokenResponse
Extracted refresh token from response
|
||
|
2021-08-18 12:40:21 | SUCCESS |
EnsureServerConfigurationSupportsRefreshToken
The server configuration indicates support for refresh tokens
|
||
|
2021-08-18 12:40:21 | SUCCESS |
EnsureRefreshTokenContainsAllowedCharactersOnly
Refresh token does not contain any illegal characters
|
|
Refresh Token Request |
2021-08-18 12:40:21 |
SUCCESS
|
CreateRefreshTokenRequest
Created token endpoint request parameters
|
||||
|
2021-08-18 12:40:21 | SUCCESS |
AddScopeToTokenEndpointRequest
Added scope of 'openid offline_access' to token endpoint request
|
||||||
|
2021-08-18 12:40:21 |
SUCCESS
|
CreateClientAuthenticationAssertionClaims
Created client assertion claims
|
||||||||||||
|
2021-08-18 12:40:21 |
SUCCESS
|
SignClientAuthenticationAssertion
Signed the client assertion
|
||
|
2021-08-18 12:40:21 |
|
AddClientAssertionToTokenEndpointRequest
Added client assertion
|
||||||||||
|
2021-08-18 12:40:21 |
SUCCESS
|
WaitForOneSecond
Pausing for 1 seconds
|
|
2021-08-18 12:40:22 |
SUCCESS
|
WaitForOneSecond
Woke up after 1 seconds sleep
|
|
2021-08-18 12:40:22 |
|
CallTokenEndpointAndReturnFullResponse
HTTP request
|
||||||||
|
2021-08-18 12:40:22 |
INCOMING
|
oidcc-refresh-token-rp-key-rotation
Incoming HTTP request to test instance 9jOmVaRPYjb64me
|
||||||||||||||
|
2021-08-18 12:40:22 |
OUTGOING
|
oidcc-refresh-token-rp-key-rotation
Response to HTTP request to test instance 9jOmVaRPYjb64me
|
||||||||
|
2021-08-18 12:40:22 |
RESPONSE
|
CallTokenEndpointAndReturnFullResponse
HTTP response
|
||||||||
|
2021-08-18 12:40:22 |
SUCCESS
|
CallTokenEndpointAndReturnFullResponse
Parsed token endpoint response
|
||||||||||||
|
2021-08-18 12:40:22 | SUCCESS |
CheckTokenEndpointHttpStatus200
Token endpoint http status code was 200
|
|
2021-08-18 12:40:22 | SUCCESS |
CheckTokenEndpointReturnedJsonContentType
token_endpoint_response_headers Content-Type: header is application/json
|
|
2021-08-18 12:40:22 | SUCCESS |
CheckTokenEndpointCacheHeaders
'pragma' and 'cache-control' headers in token endpoint response contain expected values.
|
||||
|
2021-08-18 12:40:22 |
SUCCESS
|
CheckIfTokenEndpointResponseError
No error from token endpoint
|
|
2021-08-18 12:40:22 |
SUCCESS
|
ExtractAccessTokenFromTokenResponse
Extracted the access token
|
||||
|
2021-08-18 12:40:22 | SUCCESS |
CheckTokenTypeIsBearer
Token type is bearer
|
|
2021-08-18 12:40:22 | SUCCESS |
EnsureMinimumAccessTokenEntropy
Calculated shannon entropy seems sufficient
|
||||
|
2021-08-18 12:40:22 | SUCCESS |
EnsureAccessTokenContainsAllowedCharactersOnly
Access token does not contain any illegal characters
|
|
2021-08-18 12:40:22 | SUCCESS |
ExtractExpiresInFromTokenEndpointResponse
Extracted 'expires_in'
|
||
|
2021-08-18 12:40:22 | SUCCESS |
ValidateExpiresIn
expires_in passed all validation checks
|
||
|
2021-08-18 12:40:22 |
SUCCESS
|
EnsureAccessTokenValuesAreDifferent
Access token values are not the same
|
||||
|
2021-08-18 12:40:22 |
SUCCESS
|
ExtractIdTokenFromTokenResponse
Found and parsed the id_token from token_endpoint_response
|
||||||
|
2021-08-18 12:40:22 |
SUCCESS
|
ExtractRefreshTokenFromTokenResponse
Extracted refresh token from response
|
||
|
2021-08-18 12:40:22 | SUCCESS |
EnsureMinimumRefreshTokenLength
Refresh token is of sufficient length
|
||||
|
2021-08-18 12:40:22 | SUCCESS |
EnsureMinimumRefreshTokenEntropy
Calculated shannon entropy seems sufficient
|
||||
|
2021-08-18 12:40:22 | SUCCESS |
CompareIdTokenClaims
Validated id token claims successfully
|
||||||||||||
|
Userinfo endpoint tests |
2021-08-18 12:40:22 |
|
CallProtectedResourceWithBearerToken
HTTP request
|
||||||||
|
2021-08-18 12:40:22 |
RESPONSE
|
CallProtectedResourceWithBearerToken
HTTP response
|
||||||||
|
2021-08-18 12:40:22 |
SUCCESS
|
CallProtectedResourceWithBearerToken
Got a response from the resource endpoint
|
||||||
|
2021-08-18 12:40:22 |
FINISHED
|
oidcc-refresh-token-rp-key-rotation
Test has run to completion
|
||
|
Unregister dynamically registered client |
2021-08-18 12:40:22 |
|
UnregisterDynamicallyRegisteredClient
HTTP request
|
||||||||
|
2021-08-18 12:40:22 |
RESPONSE
|
UnregisterDynamicallyRegisteredClient
HTTP response
|
||||||||
|
2021-08-18 12:40:22 |
SUCCESS
|
UnregisterDynamicallyRegisteredClient
Client successfully unregistered
|
|
2021-08-18 12:40:27 |
|
TEST-RUNNER
Alias has now been claimed by another test
|
||||
|