【问题标题】:Spring Azure AD SSO - AADSTS50011: The reply URL specified in the request does not match the reply URLs configured for the applicationSpring Azure AD SSO - AADSTS50011:请求中指定的回复 URL 与为应用程序配置的回复 URL 不匹配
【发布时间】:2021-12-23 08:14:24
【问题描述】:

专家,

在我的 spring boot 2.5.5 应用程序中,我有以下 SSO 与 Azure AD 的依赖项。

参考:https://github.com/pateluday07/saml-sso-and-slo-demo-idp-azure-sp-springboot

         <dependency>
            <groupId>org.springframework.security.extensions</groupId>
            <artifactId>spring-security-saml2-core</artifactId>
            <version>1.0.10.RELEASE</version>
            <exclusions>
                <exclusion>
                    <groupId>commons-collections</groupId>
                    <artifactId>commons-collections</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

我的 application.properties 有以下条目

service.provider.entity.id=APPNAME
idp.metedata.url=https://login.microsoftonline.com/<ID>/federationmetadata/2007-06/federationmetadata.xml?appid=<AppID>
saml.keystore.password= password
saml.private.key.alias= alias
saml.private.key.password: password
saml.keystore.file=classpath:/saml/dev/samlKeystore.jks

在 Azure 端,创建一个应用,实体 ID 为 APPNAME,回复 URL 为 https://servername/appname/saml/SSO

现在,当应用程序部署在服务器上 - servername 并被访问时,我收到以下错误

奇怪的是,如果我将 Azure 上的回复 URL 更改为 http://localhost:8080/appname/saml/SSO 并在本地部署应用程序并访问它,那么它就可以工作了。

知道出了什么问题。

【问题讨论】:

    标签: spring spring-security


    【解决方案1】:

    我知道我在 2 个月后才看到这个,但我认为您遇到的问题与我经常遇到的问题相同。

    如果您还没有找到解决方案并帮助遇到类似问题的其他人,我还是会回复您。

    谁知道呢,也许微软的某个人会看到这个并修复错误消息,以便它显示我们必须在 Azure 中匹配的“请求”URL。

    • Spring Azure 库为您选择回复 URL。我不知道 SAML 的确切名称,但如果您使用 Oauth2,它类似于“https://localhost:8080/login/oauth2/code/”。
    • 如果您使用嵌入式应用程序服务器(即:Tomcat)或者如果您作为 WAR 部署到服务器实例,则 Spring Azure 库选择的回复 URL 会有所不同。例如,当我部署到响应端口 80 的 localhost 上的 Tomcat 服务器时,上述 URL 更改为 https://localhost/myWarApp/login/oauth2/code/。
    • 如果你部署到 localhost 以外的服务器,当然需要使用主机名。就我而言,它是https://myHost.mydomain/myWarApp/login/oauth2/code/
    • 您在谷歌上发现的许多文档和教程都不准确。在上面的示例中,当我用 Google 搜索时,我得到的回复 URL 没有以 / 结尾,而一个说它应该以 /azure 结尾的回复 URL。
    • 库使用的回复 URL 需要在 Azure 中注册并匹配完全匹配,否则您将收到困扰您的错误。
    • 在 Azure 中,您将回复 URL 记录在您的注册应用程序/身份验证/重定向 URI 下。我尚未对其进行全面测试,但我认为您可以列出各种环境的重定向 URI,以便该应用可以在所有环境中运行。

    最终,挫败感驱使我找到了 Fiddler,并进行了大量挖掘以找到库在向 Azure 的请求中发送的实际回复 URL(不匹配的那个)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-25
      • 1970-01-01
      • 2020-07-12
      • 2018-10-05
      • 1970-01-01
      • 1970-01-01
      • 2020-01-14
      • 1970-01-01
      相关资源
      最近更新 更多