Azure active directory Kubernetes与AAD认证

Azure active directory Kubernetes与AAD认证,azure-active-directory,kubernetes-ingress,azure-aks,Azure Active Directory,Kubernetes Ingress,Azure Aks,在已配置的AKS上,有一个docker容器,其应用程序正在使用AAD身份验证 基于此,还配置了入口。API运行良好 当我添加到带有https前缀的Azure Active Directory应用程序注册回复URL时,我收到错误“请求中指定的回复URL与为应用程序配置的回复URL不匹配”。我看到在浏览器地址行中,uri是从http开始的 当我添加以http开头的回复URL时,我会收到“异常:关联失败” 我尝试的内容:添加到ingres.yaml设置ingres.kubernetes.io/forc

在已配置的AKS上,有一个docker容器,其应用程序正在使用AAD身份验证

基于此,还配置了入口。API运行良好

当我添加到带有https前缀的Azure Active Directory应用程序注册回复URL时,我收到错误“请求中指定的回复URL与为应用程序配置的回复URL不匹配”。我看到在浏览器地址行中,uri是从http开始的

当我添加以http开头的回复URL时,我会收到“异常:关联失败”

我尝试的内容:添加到ingres.yaml设置ingres.kubernetes.io/force-ssl-redirect:“true”

可能有某种方法强制入口运行https而不是http,或者可能有一些AAD重定向配置?有什么想法吗

更新2:http重定向可能是因为ADAL

PS:我们能够在没有答案的情况下找到

更新3: 我决定不使用nginx作为入口。相反,我现在使用的是负载平衡器。很快就可以使用Azure应用程序网关入口控制器了

您尝试过这个吗

默认情况下,如果为该入口启用TLS,则控制器使用308永久重定向响应将HTTP客户端重定向到HTTPS端口443

这可以使用NGINX配置映射中的
ssl重定向:“false”
全局禁用,或者使用特定资源中的
NGINX.ingres.kubernetes.io/ssl-redirect:“false”
注释按入口禁用


更多信息。

您必须决定是否使用HTTPS。如果这仅仅是一个开发周期的开始,那么就从没有它的情况下开始,让auth开始工作——但要尽快实现HTTPS

AAD同时支持http和https,但当然,回复URL必须分别添加到应用程序注册中

正如@mihail stancescu所说,如果您选择不使用HTTPS,则ssl重定向必须设置为false。除此之外,您还必须确保您的应用程序不会从HTTP重定向到HTTPS

将curl与-L-k和-v选项一起使用将为您提供大量有关请求实际发生的情况的信息

当http/https问题解决后,您必须删除入口中的任何重写注释。(例如应删除
ingres.kubernetes.io/rewrite-target://

现在,如果您所讨论的服务的入口路径是/myservice,那么回复url也应该在AAD应用程序注册和应用程序配置中添加该部分路径([host]/myservice/signin oidc)。(配置中的路径不应包含主机)


如果您使用的是https,那么您还必须拥有适当的证书。您可以将免费的LetsEncrypt()与KubeLego()结合使用,在这里您可以找到一些关于如何实现它的好例子。

将所有回复url更改为https?@4c74356b41,您是指AAD应用程序注册中的所有回复url吗?没有帮助我不知道具体怎么做,但你必须让身份验证位将重定向uri设置为https。谢谢,@mihail stancescu很好找到了,我以前从未尝试过。但仍然不是解决方案。如上所述,它会立即重定向,我发现nginx ingress和AAD在使用regex谢谢,@TechnoCowboy时可以工作,@TechnoCowboy我想将其标记为一个答案,但问题是nginx.ingress.kubernetes.io/ssl-redirect在我的情况下,Ingres注释中的“true”不会重定向到https。试图找出问题所在。