Hi Khushboo

Can you please review/test the patch?

On Fri, Aug 27, 2021 at 7:46 PM Nico Rikken <nico.rik...@alliander.com>
wrote:

> In certain cases like with OpenID Connect, a different scope is needed.
> This
> patch adds an additional variable `OAUTH2_SCOPE` that can be used to
> configure
> the appropriate scope for the deployment. Already there are runtime checks
> to
> ensure that the email claim is included in the user profile, so there is
> no need
> for similar checks on the configuration. This commit does introduce a
> check in
> the oauth2.py if a value for OAUTH2_SCOPE is set, to prevent a breaking
> change.
>
> Related issue: https://redmine.postgresql.org/issues/6627
> OIDC docs:
> https://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims
>
> I haven't yet tested this, as I'm still in the process of setting up a
> local
> development environment. I hope somebody else here can help me with the
> quality
> assurance.
>
> Signed-off-by: Nico Rikken <nico.rik...@alliander.com>
> ---
>  docs/en_US/oauth2.rst                                 | 1 +
>  web/config.py                                         | 3 +++
>  web/pgadmin/authenticate/oauth2.py                    | 6 +++++-
>  web/pgadmin/browser/tests/test_oauth2_with_mocking.py | 1 +
>  4 files changed, 10 insertions(+), 1 deletion(-)
>
> diff --git a/docs/en_US/oauth2.rst b/docs/en_US/oauth2.rst
> index 8947b509e..4cc2628f5 100644
> --- a/docs/en_US/oauth2.rst
> +++ b/docs/en_US/oauth2.rst
> @@ -30,6 +30,7 @@ and modify the values for the following parameters:
>      "OAUTH2_AUTHORIZATION_URL", "Endpoint for user authorization"
>      "OAUTH2_API_BASE_URL", "Oauth2 base URL endpoint to make requests
> simple, ex: *https://api.github.com/*";
>      "OAUTH2_USERINFO_ENDPOINT", "User Endpoint, ex: *user* (for github)
> and *useinfo* (for google)"
> +    "OAUTH2_SCOPE", "Oauth scope, ex: 'openid email profile'. Note that
> an 'email' claim is required in the resulting profile."
>      "OAUTH2_ICON", "The Font-awesome icon to be placed on the oauth2
> button,  ex: fa-github"
>      "OAUTH2_BUTTON_COLOR", "Oauth2 button color"
>      "OAUTH2_AUTO_CREATE_USER", "Set the value to *True* if you want to
> automatically
> diff --git a/web/config.py b/web/config.py
> index d797e26f7..e932d17fc 100644
> --- a/web/config.py
> +++ b/web/config.py
> @@ -711,6 +711,9 @@ OAUTH2_CONFIG = [
>          # Name of the Endpoint, ex: user
>          'OAUTH2_USERINFO_ENDPOINT': None,
>          # Font-awesome icon, ex: fa-github
> +        'OAUTH2_SCOPE': None,
> +        # Oauth scope, ex: 'openid email profile'
> +        # Note that an 'email' claim is required in the resulting profile
>          'OAUTH2_ICON': None,
>          # UI button colour, ex: #0000ff
>          'OAUTH2_BUTTON_COLOR': None,
> diff --git a/web/pgadmin/authenticate/oauth2.py
> b/web/pgadmin/authenticate/oauth2.py
> index 91903165a..5e60d35dd 100644
> --- a/web/pgadmin/authenticate/oauth2.py
> +++ b/web/pgadmin/authenticate/oauth2.py
> @@ -104,7 +104,11 @@ class OAuth2Authentication(BaseAuthentication):
>                  access_token_url=oauth2_config['OAUTH2_TOKEN_URL'],
>                  authorize_url=oauth2_config['OAUTH2_AUTHORIZATION_URL'],
>                  api_base_url=oauth2_config['OAUTH2_API_BASE_URL'],
> -                client_kwargs={'scope': 'email profile'}
> +                # Resort to previously hardcoded scope 'email profile' in
> case
> +                # no OAUTH2_SCOPE is provided. This prevents a breaking
> change.
> +                client_kwargs={'scope':
> +                               oauth2_config.get('OAUTH2_SCOPE',
> +                                                 'email profile')}
>              )
>
>      def get_source_name(self):
> diff --git a/web/pgadmin/browser/tests/test_oauth2_with_mocking.py
> b/web/pgadmin/browser/tests/test_oauth2_with_mocking.py
> index b170720a8..71706ebe6 100644
> --- a/web/pgadmin/browser/tests/test_oauth2_with_mocking.py
> +++ b/web/pgadmin/browser/tests/test_oauth2_with_mocking.py
> @@ -58,6 +58,7 @@ class Oauth2LoginMockTestCase(BaseTestGenerator):
>                      'https://github.com/login/oauth/authorize',
>                  'OAUTH2_API_BASE_URL': 'https://api.github.com/',
>                  'OAUTH2_USERINFO_ENDPOINT': 'user',
> +                'OAUTH2_SCOPE': 'email profile',
>                  'OAUTH2_ICON': 'fa-github',
>                  'OAUTH2_BUTTON_COLOR': '#3253a8',
>              }
> --
> 2.25.1
>
>
>
>

-- 
*Thanks & Regards*
*Akshay Joshi*
*pgAdmin Hacker | Principal Software Architect*
*EDB Postgres <http://edbpostgres.com>*

*Mobile: +91 976-788-8246*

Reply via email to