From 07dd41cfaf8acfcb9e97844087c11ad0864cd42f Mon Sep 17 00:00:00 2001
From: Ricardo Assing <ricardo@tsiana.ca>
Date: Mon, 2 Aug 2021 06:31:32 -0400
Subject: [PATCH 1/2] Changed signature of methods in AbstractProvider.php

- Abstract methods in AbstractProvider.php should use
AccessTokenInterface instead of the concrete AccessToken class provided
by League.
---
 src/Provider/AbstractProvider.php | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/Provider/AbstractProvider.php b/src/Provider/AbstractProvider.php
index d1679998..e175d157 100644
--- a/src/Provider/AbstractProvider.php
+++ b/src/Provider/AbstractProvider.php
@@ -289,7 +289,7 @@ abstract public function getBaseAccessTokenUrl(array $params);
      * @param AccessToken $token
      * @return string
      */
-    abstract public function getResourceOwnerDetailsUrl(AccessToken $token);
+    abstract public function getResourceOwnerDetailsUrl(AccessTokenInterface $token);
 
     /**
      * Returns a new random string to use as the state parameter in an
@@ -754,7 +754,7 @@ protected function createAccessToken(array $response, AbstractGrant $grant)
      * @param  AccessToken $token
      * @return ResourceOwnerInterface
      */
-    abstract protected function createResourceOwner(array $response, AccessToken $token);
+    abstract protected function createResourceOwner(array $response, AccessTokenInterface $token);
 
     /**
      * Requests and returns the resource owner of given access token.
@@ -762,7 +762,7 @@ abstract protected function createResourceOwner(array $response, AccessToken $to
      * @param  AccessToken $token
      * @return ResourceOwnerInterface
      */
-    public function getResourceOwner(AccessToken $token)
+    public function getResourceOwner(AccessTokenInterface $token)
     {
         $response = $this->fetchResourceOwnerDetails($token);
 
@@ -775,7 +775,7 @@ public function getResourceOwner(AccessToken $token)
      * @param  AccessToken $token
      * @return mixed
      */
-    protected function fetchResourceOwnerDetails(AccessToken $token)
+    protected function fetchResourceOwnerDetails(AccessTokenInterface $token)
     {
         $url = $this->getResourceOwnerDetailsUrl($token);
 

From b449c12b24270c6b5636c738e14bbc659b21b96c Mon Sep 17 00:00:00 2001
From: Ricardo Assing <ricardo@tsiana.ca>
Date: Tue, 3 Aug 2021 02:28:16 -0400
Subject: [PATCH 2/2] Addition of new Keycloak client

- Keycloak client that uses OpenID Connect Discovery for endpoints
- Uses discovered Keycloak public keys for local token introspection
---
 docs/providers/thirdparty.md | 1 +
 1 file changed, 1 insertion(+)

diff --git a/docs/providers/thirdparty.md b/docs/providers/thirdparty.md
index 4394b39e..af575486 100755
--- a/docs/providers/thirdparty.md
+++ b/docs/providers/thirdparty.md
@@ -72,6 +72,7 @@ Gateway | Composer Package | Maintainer
 [Imgur](https://github.com/adam-paterson/oauth2-imgur) | adam-paterson/oauth2-imgur | [Adam Paterson](https://github.com/adam-paterson)
 [Jira](https://packagist.org/packages/mrjoops/oauth2-jira) | mrjoops/oauth2-jira | [Alexandre Lahure](https://github.com/mrjoops)
 [Keycloak](https://github.com/stevenmaguire/oauth2-keycloak) | stevenmaguire/oauth2-keycloak | [Steven Maguire](https://github.com/stevenmaguire)
+[Keycloak](https://github.com/cloudcogsio/oauth2-keycloak) | cloudcogsio/oauth2-keycloak | [Cloudcogs.io](https://github.com/cloudcogsio)
 [Linode](https://packagist.org/packages/webinarium/oauth2-linode) | webinarium/oauth2-linode | [Artem Rodygin](https://github.com/webinarium)
 [Mailchimp](https://github.com/chadhutchins/oauth2-mailchimp) | chadhutchins/oauth2-mailchimp | [Chad Hutchins](https://github.com/chadhutchins)
 [Mail.ru](https://packagist.org/packages/aego/oauth2-mailru) | aego/oauth2-mailru | [Alexey](https://github.com/rakeev)