当前位置: 首页 > 知识库问答 >
问题:

Spring Azure AD SSO-AADSTS50011:请求中指定的回复URL与为应用程序配置的回复URL不匹配

刘弘济
2023-03-14

专家

在我的Spring启动2.5.5应用程序中,我对带有Azure AD的SSO有以下依赖项。

参考: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>

我的应用程序属性具有以下条目

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

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

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

知道哪里出问题了吗?

共有1个答案

郎泰平
2023-03-14

我知道我在两个月后才看到这个,但我认为你遇到的问题和我经常遇到的问题是一样的。

无论如何,我都在回复,以防你还没有找到解决办法,并帮助其他有类似问题的人。

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

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

归根结底,是挫折驱使我去找Fiddler,并进行了大量挖掘,以找到库在请求中发送给Azure的实际回复URL(不匹配的URL)。

 类似资料: