最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

Authlib - Client Credentials Flow - Stack Overflow

programmeradmin3浏览0评论

I'm starting with Authlib for a client credentials flow in an application I'm working on. The client only needs to:

  • Authenticate with a service for write access to a protected resource using client credentials
  • Submit a POST request to the protected resource.

However, I find that I'm having to do a lot of manual stepping through the authentication flow including:

  • fetch_token
  • Store the resulting token
  • On each POST request check if the token is expired
  • If expired, call refresh_token
  • Revoke the current token on session close

I thought all of this was done automatically by using a authlib.integrations.requests_client.OAuth2Session so I feel like I'm doing something wrong.

In my most basic attempts where I thought the flow was automatic here's what I had:

if self._session is None:
    self._session = OAuth2Session(
        client_id=self._config.auth.client_id,
        client_secret=self._config.auth.client_secret.get_secret_value(),
        token_endpoint=self._config.auth.token_url,
    )
response = self._session.post(
    url=full_url,
    headers={"Content-Type": "application/json"},
    json=model.to_json(),
)
response.raise_for_status()

The result of this is a MissingTokenError being raised. I tried passing withhold_token=True as well, which prevents the MissingTokenError but instead ends up with requests.exceptions.HTTPError: 401 Client Error: UNAUTHORIZED.

All of this indicates to me that authentication isn't actually happening automatically, which is how I ended up doing so much manually.

What am I doing wrong here? Any help is appreciated!

发布评论

评论列表(0)

  1. 暂无评论