diff --git a/composer.json b/composer.json
index b1dbd85..99c56bf 100644
--- a/composer.json
+++ b/composer.json
@@ -19,6 +19,6 @@
   "minimum-stability": "dev",
   "require": {},
   "suggest": {
-    "sainsburys/guzzle-oauth2-plugin": "3.0 required for the OAuth2 authentication plugin"
+    "league/oauth2-client": "2.2"
   }
 }
diff --git a/src/Plugin/migrate_plus/authentication/OAuth2.php b/src/Plugin/migrate_plus/authentication/OAuth2.php
index 7415e72..b77be43 100755
--- a/src/Plugin/migrate_plus/authentication/OAuth2.php
+++ b/src/Plugin/migrate_plus/authentication/OAuth2.php
@@ -3,21 +3,13 @@
 namespace Drupal\migrate_plus\Plugin\migrate_plus\authentication;
 
 use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
-use Drupal\migrate\MigrateException;
 use Drupal\migrate_plus\AuthenticationPluginBase;
-use GuzzleHttp\Client;
-use GuzzleHttp\HandlerStack;
-use Sainsburys\Guzzle\Oauth2\GrantType\AuthorizationCode;
-use Sainsburys\Guzzle\Oauth2\GrantType\ClientCredentials;
-use Sainsburys\Guzzle\Oauth2\GrantType\JwtBearer;
-use Sainsburys\Guzzle\Oauth2\GrantType\PasswordCredentials;
-use Sainsburys\Guzzle\Oauth2\GrantType\RefreshToken;
-use Sainsburys\Guzzle\Oauth2\Middleware\OAuthMiddleware;
+use League\OAuth2\Client\Provider\GenericProvider;
 
 /**
  * Provides OAuth2 authentication for the HTTP resource.
- * 
- * @link https://packagist.org/packages/sainsburys/guzzle-oauth2-plugin
+ *
+ * @link https://github.com/thephpleague/oauth2-client
  *
  * @Authentication(
  *   id = "oauth2",
@@ -30,38 +22,13 @@ class OAuth2 extends AuthenticationPluginBase implements ContainerFactoryPluginI
    * {@inheritdoc}
    */
   public function getAuthenticationOptions() {
-    $handlerStack = HandlerStack::create();
-    $client = new Client([
-      'handler'=> $handlerStack,
-      'base_uri' => $this->configuration['base_uri'],
-      'auth' => 'oauth2',
-    ]);
-
-    switch ($this->configuration['grant_type']) {
-      case 'authorization_code':
-        $grant_type = new AuthorizationCode($client, $this->configuration);
-        break;
-      case 'client_credentials':
-        $grant_type = new ClientCredentials($client, $this->configuration);
-        break;
-      case 'urn:ietf:params:oauth:grant-type:jwt-bearer':
-        $grant_type = new JwtBearer($client, $this->configuration);
-        break;
-      case 'password':
-        $grant_type = new PasswordCredentials($client, $this->configuration);
-        break;
-      case 'refresh_token':
-        $grant_type = new RefreshToken($client, $this->configuration);
-        break;
-      default:
-        throw new MigrateException("Unrecognized grant_type {$this->configuration['grant_type']}.");
-        break;
-    }
-    $middleware = new OAuthMiddleware($client, $grant_type);
+    $provider = new GenericProvider($this->configuration['provider_options']);
+    $grant_options = $this->configuration['grant_options'] ? : [];
 
     return [
       'headers' => [
-        'Authorization' => 'Bearer ' . $middleware->getAccessToken()->getToken(),
+        'Authorization' => 'Bearer ' . $provider->getAccessToken($this->configuration['grant_type'], $grant_options),
+        'Cookie' => 'upstream=backend;'
       ],
     ];
   }
