Merge pull request #189 from dxw/feature/actions-for-error-logging

Increase granularity of state token errors
isekai
Jonathan Daggerhart 5 years ago committed by GitHub
commit d39c0da990
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -83,14 +83,19 @@ class OpenID_Connect_Generic_Client {
return new WP_Error( 'no-code', 'No authentication code present in the request.', $request ); return new WP_Error( 'no-code', 'No authentication code present in the request.', $request );
} }
// check the client request state // check the client request state
if ( ! isset( $request['state'] ) || ! $this->check_state( $request['state'] ) ){ if( ! isset( $request['state']) ) {
do_action( 'openid-connect-generic-no-state-provided' );
return new WP_Error( 'missing-state', __( 'Missing state.' ), $request ); return new WP_Error( 'missing-state', __( 'Missing state.' ), $request );
} }
if ( ! $this->check_state( $request['state'] ) ) {
return new WP_Error( 'invalid-state', __( 'Invalid state.' ), $request );
}
return $request; return $request;
} }
/** /**
* Get the authorization code from the request * Get the authorization code from the request
* *
@ -257,18 +262,30 @@ class OpenID_Connect_Generic_Client {
* Check the existence of a given state transient. * Check the existence of a given state transient.
* *
* @param $state * @param $state
* *
* @return bool * @return bool
*/ */
function check_state( $state ) { function check_state( $state ) {
$state_found = true;
if ( ! get_option( '_transient_openid-connect-generic-state--' . $state ) ) {
do_action( 'openid-connect-generic-state-not-found', $state );
$state_found = false;
}
$valid = get_transient( 'openid-connect-generic-state--' . $state ); $valid = get_transient( 'openid-connect-generic-state--' . $state );
if ( ! $valid && $state_found ) {
do_action( 'openid-connect-generic-state-expired', $state );
}
return !!$valid; return !!$valid;
} }
/** /**
* Ensure that the token meets basic requirements * Ensure that the token meets basic requirements
* *
* @param $token_response * @param $token_response
* *
* @return bool|\WP_Error * @return bool|\WP_Error

Loading…
Cancel
Save