Make WordPress Core


Ignore:
Timestamp:
01/29/2021 12:05:20 AM (6 years ago)
Author:
TimothyBlynJacobs
Message:

App Passwords: Introduce introspection endpoint.

This introduces a new endpoint, wp/v2/users/me/application-passwords/introspect, that will return details about the App Password being used to authenticate the current request. This allows for an application to disambiguate between multiple installations of their application which would all share the same app_id.

Props xkon, peterwilsoncc, TimothyBlynJacobs.
Fixes #52275.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/phpunit/tests/auth.php

    r49919 r50065  
    3939                wp_set_current_user( self::$user_id );
    4040                update_site_option( 'using_application_passwords', 1 );
     41
     42                unset( $_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW'], $GLOBALS['wp_rest_application_password_status'], $GLOBALS['wp_rest_application_password_uuid'] );
    4143        }
    4244
     
    4547
    4648                // Cleanup all the global state.
    47                 unset( $_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW'], $GLOBALS['wp_rest_application_password_status'] );
     49                unset( $_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW'], $GLOBALS['wp_rest_application_password_status'], $GLOBALS['wp_rest_application_password_uuid'] );
    4850        }
    4951
     
    443445
    444446                // Create a new app-only password.
    445                 list( $user_app_password ) = WP_Application_Passwords::create_new_application_password( $user_id, array( 'name' => 'phpunit' ) );
     447                list( $user_app_password, $item ) = WP_Application_Passwords::create_new_application_password( $user_id, array( 'name' => 'phpunit' ) );
    446448
    447449                // Fake a REST API request.
     
    453455                $_SERVER['PHP_AUTH_PW']   = 'http_auth_pass';
    454456
    455                 $this->assertSame(
    456                         null,
     457                $this->assertNull(
    457458                        wp_validate_application_password( null ),
    458459                        'Regular user account password should not be allowed for API authentication'
    459460                );
     461                $this->assertNull( rest_get_authenticated_app_password() );
    460462
    461463                // Not try with an App password instead.
     
    467469                        'Application passwords should be allowed for API authentication'
    468470                );
     471                $this->assertEquals( $item['uuid'], rest_get_authenticated_app_password() );
    469472        }
    470473
Note: See TracChangeset for help on using the changeset viewer.