【问题标题】:storing AuthorizationCodeCredential in web app session在 Web 应用会话中存储 AuthorizationCodeCredential
【发布时间】:2021-10-31 22:16:26
【问题描述】:
我正在使用azure-identity 库对用户进行身份验证,以便在我的 Spring Boot Web 应用程序中访问 Microsoft Graph API。
在通过身份验证代码授权重定向成功获取code 后,我想将访问令牌和刷新令牌存储在 Web 应用程序会话中,这样用户就不必重新进行身份验证以向Microsoft Graph API。
如何获取令牌以将它们存储在会话中?
【问题讨论】:
标签:
spring-boot
microsoft-graph-api
azure-identity
【解决方案1】:
授权代码是用于获取实际访问令牌的单用户代码。您需要按照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...",
}
【解决方案2】:
执行此操作的方法是创建一个实现 OAuth2AuthorizedClientService 的类,该类在数据库中存储和加载 OAuth 凭据。