我在 Java Spring Boot 应用程序中使用msal4j库进行身份和令牌管理来访问 Microsoft Graph API。
我在这里关注示例代码。
在代码中,TokenCache
由 accessTokens、refreshTokens、idTokens 组成的对象存储在 http 会话中。
SessionManagementHelper.storeTokenCacheInSession(httpServletRequest, app.tokenCache().serialize());
static void storeTokenCacheInSession(HttpServletRequest httpServletRequest, String tokenCache){
httpServletRequest.getSession().setAttribute('token_cache', tokenCache);
}
现在,如果我的 Spring Boot 应用程序崩溃等,令牌将会丢失。而且我将不得不再次进行帐户选择过程,我想避免这种情况,因为用户已经选择了帐户并表示同意。
如果我的应用程序重新启动,如何避免再次执行帐户选择过程?我需要将令牌缓存存储在数据库中吗?
我的授权 URL 如下所示:
https://login.microsoftonline.com/common/oauth2/v2.0/authorize?
response_type=code&
redirect_uri=https%3A%2F%2Flocalhost%3A8443%2Fmsal4jsample%2Fsecure%2Faad&
client_id=ca146462-8880-424c-b629-cc7c0d0fb1b3&
scope=openid+offline_access+profile+https%3A%2F%2Fgraph.microsoft.com%2Fuser.read&
prompt=select_account&
state=69a2ac0f-abac-46ad-b525-88f0b70182b7&
nonce=9278f424-6858-4e22-bb13-7b13894abda7