Spring SAML2 与 Azure 集成

问题描述 投票:0回答:1

我使用 spring SAML2 创建了一个项目,我正在尝试将其与 Azure AD 集成,现在单点登录流程看起来不错,但单点注销无法正常工作。

我调试了 spring SAML2 实现,它期望一个签名的 SLO 响应,但实际上 Azure SLO 响应是未签名的,我已经将签名选项设置为 Sign SAML response and assertions 我还需要配置什么才能使 SLO 工作吗?谢谢。

Saml2LogoutResponseFilter.java

protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws ServletException, IOException {
    ...
    Saml2LogoutValidatorResult result = this.logoutResponseValidator.validate(parameters);
    ...
}

OpenSamlLogoutResponseValidator.java

private Consumer<Collection<Saml2Error>> verifySignature(Saml2LogoutResponse response,
      LogoutResponse logoutResponse, RelyingPartyRegistration registration) {
  return (errors) -> {
    VerifierPartial partial = OpenSamlVerificationUtils.verifySignature(logoutResponse, registration);
    if (logoutResponse.isSigned()) {
      errors.addAll(partial.post(logoutResponse.getSignature()));
    }
    else {
      errors.addAll(partial.redirect(response));
    }
  };
}

Azure SLO 响应

<samlp:LogoutResponse ID="_f0961a83-d071-4be5-a18c-9ae7b22987a4" Version="2.0" IssueInstant="2013-03-18T08:49:24.405Z" InResponseTo="iddce91f96e56747b5ace6d2e2aa9d4f8c" xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
  <Issuer xmlns="urn:oasis:names:tc:SAML:2.0:assertion">https://login.microsoftonline.com/82869000-6ad1-48f0-8171-272ed18796e9/</Issuer>
  <samlp:Status>
    <samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success" />
  </samlp:Status>
</samlp:LogoutResponse>

https://learn.microsoft.com/en-us/azure/active-directory/develop/single-sign-out-saml-protocol#logoutresponse

azure azure-active-directory saml-2.0 spring-saml spring-security-saml2
1个回答
0
投票

问题解决了吗?如何生成私钥/证书并上传到 microsoft azure?

© www.soinside.com 2019 - 2024. All rights reserved.