繁体   English   中英

Microsoft Graph Identity 避免再次选择帐户

[英]Microsoft Graph Identity avoid account selection again

我在 Java Spring 引导应用程序中使用msal4j库进行身份和令牌管理以访问 Microsoft Graph API。

我在这里关注示例代码。

在代码中,由TokenCache 、refreshTokens、idTokens组成的TokenCache object存储在http session中。

SessionManagementHelper.storeTokenCacheInSession(httpServletRequest, app.tokenCache().serialize());

static void storeTokenCacheInSession(HttpServletRequest httpServletRequest, String tokenCache){
    httpServletRequest.getSession().setAttribute('token_cache', tokenCache);
}  

现在,如果我的 spring 启动应用程序崩溃等,令牌将丢失。 而且我将不得不再次通过帐户选择过程来 go ,我想避免这种情况,因为用户已经选择了帐户并表示同意。

如果我的应用程序重新启动,如何避免再次执行帐户选择过程? 我需要将令牌缓存存储在数据库中吗?

我的授权 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

我希望您所采取的应用程序崩溃场景是在托管之前。 当应用程序崩溃时,浏览器和应用程序之间的连接会断开。 当应用程序再次重新启动时,会建立新的连接,并且需要再次通过帐户选择过程来 go。

关于 Token Cache 存储,客户在使用 redis 和文档中所述的其他分布式缓存存储时报告了良好的结果

出于安全和性能原因,我们的建议是为每个用户序列化一个缓存。 序列化事件根据已处理用户的身份计算缓存键,并为该用户序列化/反序列化令牌缓存。

以下是一些关于令牌缓存的文档,您可以参考这些文档。 所有文档都讨论了在服务器端存储(缓存)令牌,这些文档还包含指向GitHub 示例的链接以供编码参考。

其他文档供参考。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM