我正在使用ADAL JS的SPA上工作。调用adalService.logOut()之后,将用户正确重定向到Microsoft oauth注销URL,并且注销发生的很好。但是,该用户已退出所有Microsoft 365网站和所有其他使用ADAL的网站。
有没有办法仅将用户从该站点注销?
答案 0 :(得分:1)
不幸的是,ADAL JS库的工作方式正如您所描述的。调用注销函数时,它将清除整个缓存。根据维基: https://github.com/AzureAD/azure-activedirectory-library-for-js/wiki/Login-methods#logout
退出 调用注销方法时,库将清除 浏览器存储中的应用程序缓存,并将注销请求发送到 Azure AD实例的注销终结点。
authContext.logOut();默认行为是将用户重定向到 注销后的window.location.href。如果postLogoutRedirectUri值为 在配置时设置,用户将被重定向到该URI。
另一种手动注销的方法。那就是,自己浏览缓存,然后删除您想要删除的信息。这将以某种方式“注销”用户,因为您已经删除了对令牌的访问。
根据Wiki的配置Auth Context https://github.com/AzureAD/azure-activedirectory-library-for-js/wiki/Config-authentication-context:
cacheLocation-ADAL将令牌存储在浏览器存储中, 默认为'sessionStorage'。您可以将其设置为 “ localStorage”或“ sessionStorage”。
再次window.config = { clientId: 'g075edef-0efa-453b-997b-de1337c29185', cacheLocation: 'localStorage' // Default is sessionStorage }; Tokens are accessible from JavaScript since ADAL.JS is using HTML5 browser storage. It is recommended to prompt users to login
应用中的重要操作。你也应该保护 您的XSS网站。请在此处查看文章: https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet
您可以阅读有关其他可配置选项的更多详细信息 在这里。
有关访问本地存储的更多信息,您可以在这里阅读:https://blog.logrocket.com/the-complete-guide-to-using-localstorage-in-javascript-apps-ba44edb53a36
可以在以下位置找到用于存储的MDN Web文档:https://developer.mozilla.org/en-US/docs/Web/API/Storage