在 Web 应用程序会话中存储 AuthorizationCodeCredential

storing AuthorizationCodeCredential in web app session

我正在使用 azure-identity 库对用户进行身份验证,以便在我的 Spring 引导 Web 应用程序中访问 Microsoft Graph API。

在通过授权代码授权重定向成功获取 code 后,我想将访问令牌和刷新令牌存储在 Web 应用程序会话中,这样用户就不必重新进行身份验证对 Microsoft Graph API.

的多个请求

我怎样才能获得将它们存储在会话中的令牌?

授权码是用于获取实际访问令牌的单用户代码。您需要按照 Microsoft identity platform and OAuth 2.0 authorization code flow.

中所述将 code 兑换成 access_token

包含 access_token 的响应正文还将包含一个 refresh_token 值:

{
    "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik5HVEZ2ZEstZnl0aEV1Q...",
    "token_type": "Bearer",
    "expires_in": 3599,
    "scope": "https%3A%2F%2Fgraph.microsoft.com%2Fmail.read",
    "refresh_token": "AwABAAAAvPM1KaPlrEqdFSBzjqfTGAMxZGUTdM0t4B4...",
    "id_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJub25lIn0.eyJhdWQiOiIyZDRkMTFhMi1mODE0LTQ2YTctOD...",
}

实现此目的的方法是创建一个 class 实现 OAuth2AuthorizedClientService,在数据库中存储和加载 OAuth 凭据。