python-social-auth / social-core

Python Social Auth - Core
BSD 3-Clause "New" or "Revised" License
851 stars 545 forks source link

Fix failing Elixir AAI token refresh #927

Closed kysrpex closed 4 months ago

kysrpex commented 4 months ago

Proposed changes

Refreshing Elixir AAI tokens fails with error An error occurred when refreshing user token: 401 Client Error: 401 for url: https://login.elixir-czech.org/oidc/token. The source of the HTTP 401 error is a malformed request. Closes #826, read the issue for details.

Types of changes

Please check the type of change your PR introduces:

Checklist

Put an x in the boxes that apply. You can also fill these out after creating the PR. If you're unsure about any of them, don't hesitate to ask. We're here to help! This is simply a reminder of what we are going to look for before merging your code.

Other information

At the moment I just want to highlight the source of the problem and the solution, the patch is not properly integrated within the codebase, that's why the PR is a draft. For example, it is probably better to patch social_core.backends.oauth:BaseOAuth2.refresh_token.

dBucik commented 4 months ago

From the OP point of view, the authentication method for the token endpoint should be configurable and the refresh token grant should respect that setting. Specifically for the LS AAI (previously known as ELIXIR AAI), there are three types of authentication for the token endpoint:

This method of authentication is specified in the metadata when registering the service.

So now to some more details. I think base classes support this already, it just needs some tweaks: