使用django rest沿着django-oauth-toolkit生成访问令牌,无需代码质询和代码验证器,用于OAuth访问

lvmkulzt  于 2023-05-30  发布在  Go
关注(0)|答案(1)|浏览(173)

我正在尝试使用Django rest框架和django-oauth-toolkit lib为OAuth访问委派生成access_tokenrefresh_token。我试图委托访问第三方平台,其中第三方平台显示登录按钮,当用户点击按钮,它会打开我的网站与response_typeclient_idscope,和redirect_uri.(所有这些变量将在设置时在第三方平台上设置)。
根据django-oauth-toolkit文档,我们还需要在打开登录链接时在url中传递code_challengecode_challenge_method,但第三方平台不会在请求中传递这两个变量。
根据此文档,我尝试在项目的设置文件中设置PKCE_REQUIRED=False,但在响应中得到code_challenge的错误。
请求URL http://127.0.0.1:8000/o/authorize/?response_type=code&client_id=bG2Ju69XwS8jvnx3CWiobmWi1dj4kWsNYSiVsXEa&redirect_uri=http://127.0.0.1:8000/code/redirect/
响应http://127.0.0.1:8000/code/redirect/?error=invalid_request&error_description=Code+challenge+required.
身份验证功能使用URL中的code_challenge,并能够生成authorization_code
工作示例
请求URL http://127.0.0.1:8000/o/authorize/?response_type=code&client_id=bG2Ju69XwS8jvnx3CWiobmWi1dj4kWsNYSiVsXEa&redirect_uri=http://127.0.0.1:8000/code/redirect/&code_challenge=yCo4U9wZJPeYGyX3F6df_heuxG-6ZnvZfZB5KrCYpp4&code_challenge_method=S256
响应http://127.0.0.1:8000/code/redirect/?code=EAwEXghF807RTjxwyohky8psQKGohP
我也尝试了设置文件中的OAUTH2_USE_PKCE = False,但不起作用。
Thanks:)

9o685dep

9o685dep1#

我通过在OAUTH2_PROVIDER dict中设置变量而不是直接在设置文件中设置来解决这个问题。

...

OAUTH2_PROVIDER = {
    'ACCESS_TOKEN_EXPIRE_SECONDS': 3600,
    'REFRESH_TOKEN_EXPIRE_SECONDS': 3600 * 24 * 365,
    'PKCE_REQUIRED': False,
}

# PKCE_REQUIRED=False

...

相关问题