我有一个使用 AzureAD b2c 身份验证(通过 OpenId Connect)的 dotnet core mvc Web 应用程序。当我针对 localhost 运行它时,它可以正常工作,但是当我将解决方案部署到 Kubernetes 并尝试登录时,我收到以下错误:
Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware[1]
An unhandled exception has occurred while executing the request.
System.Exception: An error was encountered while handling the remote login.
---> System.Exception: Unable to unprotect the message.State.
--- End of inner exception stack trace ---
at Microsoft.AspNetCore.Authentication.RemoteAuthenticationHandler`1.HandleRequestAsync()
at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.<Invoke>g__Awaited|6_0(ExceptionHandlerMiddleware middleware, HttpContext context, Task task)'
Run Code Online (Sandbox Code Playgroud)
我已经设置了一个带有 SSL 的 NGINX 入口,它将流量转发到 Kubernetes 中的服务,因此它充当集群内的反向代理。
为了确保保留请求的原始主机名,我已将以下内容添加到startup.cs:
services.Configure<ForwardedHeadersOptions>(options =>
{
options.ForwardedHeaders =
ForwardedHeaders.XForwardedProto | ForwardedHeaders.XForwardedHost;
options.KnownNetworks.Clear();
options.KnownProxies.Clear(); …Run Code Online (Sandbox Code Playgroud)