AKS中的应用程序无法工作Azure AD错误AADSTS50011



在AKS中,部署了一个使用Azure AD进行身份验证的应用程序,url为https://corpapps.domain.com/apptool,但我们得到错误AADSTS50011。"AADSTS50011:重定向URI"http://corpapps.domain.com/signin-oidc"与为应用程序"#clientid"配置的重定向URI不匹配。请确保请求中发送的重定向URI与Azure门户中添加到您的应用程序中的重定向URI相匹配。导航到https://aka.ms/redirectUriMismatchError以了解有关如何修复此问题的更多信息">

我们在应用程序注册URI中的配置如下https://corpapps.domain.com/apptool/signin-oidc

在应用程序设置中是这样的:

"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"Domain": "domain.com",
"TenantId": "#Tenantid",
"ClientId": "#clientid",
"CallbackPath": "/signin-oidc",
"SignedOutCallbackPath": "/signout-callback-oidc"
}

该应用程序是在.net core 5 mvc razor中开发的,在本地运行时可以工作,但在AKS中不工作。

如果你能给我一些指导,我将不胜感激。谢谢

我在注销应用程序中更改了URI,在appsettings中更改了回调路径,但什么都不起作用

对于我的案例,我有.NET 6,只有两件事需要解决:

  • 在容器内将ASPNETCORE_FORWARDEDHEADERS_ENABLED设置为true
  • 在ingress yml中,设置ssl重定向:";真";并且报头大小为32kb

例如:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/ssl-passthrough: "false"
nginx.ingress.kubernetes.io/ssl-redirect: "true"
nginx.ingress.kubernetes.io/proxy-buffer-size: "32k"
cert-manager.io/cluster-issuer: letsencrypt
nginx.ingress.kubernetes.io/rewrite-target: /
name: fas-web-app-ingress
namespace: default
spec:
.....
.....

解决方案:

将ssl重定向设为true,因为默认情况下,如果为该Ingress启用了TLS,则控制器会将HTTP客户端重定向到HTTPS端口443。

这可以使用ssl重定向全局禁用:"false";和nginx.ingress.kubernetes.io/sl-direct:"false";中的注释特定资源。

因此,如果在ingress路由yaml文件中为false,请尝试使其为true。

nginx.ingress.kubernetes.io/ssl-redirect: "true"
nginx.ingress.kubernetes.io/use-regex: "true"

也可以尝试在注释中使用nginx.ingress.kubernetes.io/proxy-buffer-size: "32k"(或16k(

github中存在一个持续存在的问题。请检查:应用程序网关kubernetes入口/问题。

参考:创建入口路由

此外,根据错误中指出的文档,当用户尝试使用OIDC或OAuth2 SSO登录应用程序时,会发生此错误。其分辨率在同一文档中给出:参见分辨率

如果问题没有解决,您可以提出相同的支持请求。

最新更新