Authlib 1.5.1对接Azure OAuth2时提示‘请求体必须包含client_id参数’的问题排查求助
Authlib 1.5.1对接Azure OAuth2时提示‘请求体必须包含client_id参数’的问题排查求助
大家好,我正在尝试用Authlib 1.5.1对接Azure作为认证提供商完成后端认证,照着官方文档配置但遇到了问题,想请各位帮忙看看哪里出错了。
我的Authlib注册配置是这样的:
oauth.register( 'azure', server_metadata_url=app.config['AZURE_METADATA_URL'], client_id=app.config['AZURE_CLIENT_ID'], client_secret=app.config['AZURE_CLIENT_SECRET'], client_kwargs={ 'scope': 'api://XXXXX0-YYYYY-ZZZZZZZZZZZZZ/api.access', } )
Flask应用的配置文件也很简单:
import os from config_reader import config TENANT_ID = 'XXXXX0-YYYYY-ZZZZZZZZZZZZZ' AZURE_CLIENT_ID = os.getenv("AZ_CLIENT_ID") AZURE_CLIENT_SECRET = os.getenv("AZ_CLIENT_SECRET") AZURE_AUTHORITY = f'https://login.microsoftonline.com/{TENANT_ID}' AZURE_REDIRECT_URI = config['callback_url'] AZURE_ACCESS_TOKEN_URL = f'https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0/token' AZURE_AUTHORIZE_URL = f'https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0/authorize' AZURE_API_BASE_URL = config['api']['url'] AZURE_METADATA_URL = f'https://login.microsoftonline.com/{TENANT_ID}/v2.0/.well-known/openid-configuration'
调用oauth.azure.authorize_access_token()的时候抛出了错误,完整的Traceback如下:
File "C:\projects\myprojectpath\venv\Lib\site-packages\flask\app.py", line 1536, in __call__ return self.wsgi_app(environ, start_response) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\projects\myprojectpath\venv\Lib\site-packages\flask\app.py", line 1514, in wsgi_app response = self.handle_exception(e) ^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\projects\myprojectpath\venv\Lib\site-packages\flask\app.py", line 1511, in wsgi_app response = self.full_dispatch_request() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\projects\myprojectpath\venv\Lib\site-packages\flask\app.py", line 919, in full_dispatch_request rv = self.handle_user_exception(e) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\projects\myprojectpath\venv\Lib\site-packages\flask\app.py", line 917, in full_dispatch_request rv = self.dispatch_request() ^^^^^^^^^^^^^^^^^^^^^^^ File "C:\projects\myprojectpath\venv\Lib\site-packages\flask\app.py", line 902, in dispatch_request return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) # type: ignore[no-any-return] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\projects\myprojectpath\scomat-frontend\ui.py", line 52, in authorize token = oauth.azure.authorize_access_token() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\projects\myprojectpath\venv\Lib\site-packages\authlib\integrations\flask_client\apps.py", line 107, in authorize_access_token token = self.fetch_access_token(**params, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\projects\myprojectpath\venv\Lib\site-packages\authlib\integrations\base_client\sync_app.py", line 376, in fetch_access_token token = client.fetch_token(token_endpoint, **params) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\projects\myprojectpath\venv\Lib\site-packages\authlib\oauth2\client.py", line 245, in fetch_token return self._fetch_token( File "C:\projects\myprojectpath\venv\Lib\site-packages\authlib\oauth2\client.py", line 444, in _fetch_token return self.parse_response_token(resp) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\projects\myprojectpath\venv\Lib\site-packages\authlib\oauth2\client.py", line 419, in parse_response_token raise self.oauth_error_class( ^ authlib.integrations.base_client.errors.OAuthError: invalid_request: AADSTS900144: The request body must contain the following parameter: 'client_id'. Trace ID: XXXXXXXXX Correlation ID: XXXXXXXX Timestamp: 2025-03-13 14:43:59Z
核心错误就是:
authlib.integrations.base_client.errors.OAuthError: invalid_request: AADSTS900144: The request body must contain the following parameter: 'client_id'.
我检查过变量都正确传递了,但就是触发这个错误,有没有朋友知道我哪里漏配置了?
备注:内容来源于stack exchange,提问作者Smok
相关产品推荐
相关产品推荐

