我们有一个用Java / JSP实现的Web应用程序,Azure AD使用OpenID connect protocal实现了单点登录认证。登录方法按预期工作,但主要问题是唱歌。在退出用户时,我们遵循以下方法。
1)用户点击退出按钮。 2)他将被重定向到应用程序申请签名页面。 3)在注销页面中清除应用程序会话。 4)然后将用户重定向到Azure AD注销页面,请参阅以下URL ...
https://login.microsoftonline.com/common/oauth2/v2.0/logout? post_logout_redirect_uri = our_application_sign_out_success_page
上述方法按预期工作,但问题是,如果用户在浏览器选项卡中复制并粘贴上述URL,而当用户在另一个浏览器选项卡中有有效会话时,他的AD会话将被清除。
但是预期的行为是,只有当用户点击sign_out按钮时才会发生注销。
答案 0 :(得分:1)
这是预期的行为,服务器无法检测是否通过单击或粘贴地址栏发送请求并手动导航。并且服务器应该关注请求来自何处,它只执行您告诉它的工作。
如果您还有其他应用程序也使用Azure AD作为身份数据提供程序,则当您从Web应用程序注销时,注销请求不会影响其他应用程序。此外,如果要实现单点注销,则必须在Web应用程序中实现LogoutUrl
并在Azure门户上注册它。(请参阅here)