java - Azure 单点登录无法正确注销

标签 java spring-boot azure spring-security single-sign-on

我正在开发 jsp-springboot 应用程序,我已经使用 azure 实现了 sso,并且它按预期工作。我已经配置了

azure.activedirectory.tenant-id

azure.activedirectory.client-id

azure.activedirectory.client-secret

我还添加了重定向网址 在 application.properties 中,除了这些更改之外,我没有添加任何配置类,我能够成功登录。 对于注销我使用

https://login.microsoftonline.com/${​​​​​azure.activedirectory.tenant-id}​​​​​/oauth2/v2.0/logout 

当我单击注销时,我会看到最终页面,即 enter image description here

但是,如果我打开一个新选项卡并尝试访问该应用程序,我将能够访问该应用程序而无需请求登录。我不确定我必须做出哪些改变来防止这种情况

最佳答案

如果您需要单点注销,请尝试设置注销URL。为了使单点登录正常工作,必须在应用程序注册期间向 Azure AD 显式注册应用程序的 LogoutURL。

Azure AD 支持重定向绑定(bind) (HTTP GET),但不支持 HTTP POST 绑定(bind)

enter image description here

但如果这不起作用,则可能来自 v2 端点,因为这似乎是 azure saml sso 中 v2 端点的已知问题。

尝试使用 v1 注销端点 例如:https://login.microsoftonline.com/common/oauth2/logout 并在应用程序中的任何需要的地方进行更改。 请检查此引用 Microsoft Q&A .

另请参阅是否需要在应用程序注册下的 list 编辑器中编辑注销 URL。

enter image description here

引用文献:

  1. Azure Single Sign Out SAML Protocol | Microsoft Docs
  2. java - Implement 'logout' functionality in Spring Boot - Stack Overflow

关于java - Azure 单点登录无法正确注销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70943623/

相关文章:

java - 使用流连接 2 个 map Java 8

java - 在数据库中插入/选择 joda-time 日期类型

java - Jackson 未正确反序列化 SetValuedMap

Azure Devops Sprint Burndown 配置

azure - azure存储分区键的最大长度是多少

java - lucene中 boolean 逻辑的正确使用

java - 从 Spark 数据集中选择一些列和特定列的最大值

spring-boot - Spring Batch从相同的执行和步骤重新启动未完成的作业

spring - 使用 Spring 的 @Value 注入(inject) Map<String, List<String>>

azure - 在 http 网站中使用地理定位获取地址