Bab*_*bak 2 nginx .net-core kestrel-http-server identityserver4
Having to applications auth and store and authenticating using IdentityServer4 and both are behind NGINX.
The store application successfully authenticates but after coming back from the auth application we get 502 Bad Gateway from NGINX.
Any idea what is going wrong here?
Auth app log:
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2]
Request finished in 117.7292ms 200 text/html; charset=UTF-8
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]
Request starting HTTP/1.0 POST http://auth.example.com/connect/token application/x-www-form-urlencoded 279
info: IdentityServer4.Hosting.IdentityServerMiddleware[0]
Invoking IdentityServer endpoint: IdentityServer4.Endpoints.TokenEndpoint for /connect/token
info: IdentityServer4.Validation.TokenRequestValidator[0]
Token request validation success
{
"ClientId": "ExampleStore",
"ClientName": "Example Web Store",
"GrantType": "authorization_code",
"AuthorizationCode": "6fab1723...",
"Raw": {
"client_id": "ExampleStore",
"client_secret": "***REDACTED***",
"code": "6fab1723...",
"grant_type": "authorization_code",
"redirect_uri": "https://store.example.com/signin-oidc"
}
}
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2]
Request finished in 182.8022ms 200 application/json; charset=UTF-8
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]
Request starting HTTP/1.0 GET http://auth.example.com/connect/userinfo
info: IdentityServer4.Hosting.IdentityServerMiddleware[0]
Invoking IdentityServer endpoint: IdentityServer4.Endpoints.UserInfoEndpoint for /connect/userinfo
info: IdentityServer4.ResponseHandling.UserInfoResponseGenerator[0]
Profile service returned to the following claim types: sub preferred_username name
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2]
Request finished in 57.1394ms 200 application/json; charset=UTF-8
Run Code Online (Sandbox Code Playgroud)
Store app log:
info: Microsoft.AspNetCore.Authorization.DefaultAuthorizationService[2]
Authorization failed for user: (null).
info: Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker[3]
Authorization failed for the request at filter 'Microsoft.AspNetCore.Mvc.Authorization.AuthorizeFilter'.
info: Microsoft.AspNetCore.Mvc.ChallengeResult[1]
Executing ChallengeResult with authentication schemes ().
info: Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectHandler[12]
AuthenticationScheme: oidc was challenged.
info: Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker[2]
Executed action Nihonto.Web.Store.Controllers.UserController.Login (Nihonto.Web.Store) in 8.1968ms
info: Microsoft.AspNetCore.ResponseCaching.ResponseCachingMiddleware[27]
The response could not be cached for this request.
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2]
Request finished in 11.2816ms 302
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]
Request starting HTTP/1.0 POST http://store.example.com/signin-oidc application/x-www-form-urlencoded 1485
info: Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationHandler[10]
AuthenticationScheme: ExampleCookie signed in.
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2]
Request finished in 301.361ms 302
Run Code Online (Sandbox Code Playgroud)
More information of this issue can be found here : https://github.com/IdentityServer/IdentityServer4/issues/2101
Wik*_*tor 14
也可以使用注释进行配置:
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/proxy-buffering: "on"
nginx.ingress.kubernetes.io/proxy-buffer-size: "128k"
nginx.ingress.kubernetes.io/proxy-buffers-number: "4"
Run Code Online (Sandbox Code Playgroud)
因此您可以将它们添加到现有的 ingress.yaml 中,例如:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-production
namespace: ingress-nginx
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/proxy-buffering: "on"
nginx.ingress.kubernetes.io/proxy-buffer-size: "128k"
nginx.ingress.kubernetes.io/proxy-buffers-number: "4"
certmanager.k8s.io/issuer: "letsencrypt-production"
spec:
tls:
- hosts:
- example.com
secretName: example-tls
rules:
- host: example.com
http:
paths:
- path: /
backend:
serviceName: example-app
servicePort: 80
Run Code Online (Sandbox Code Playgroud)
Bab*_*bak 10
问题已经解决。似乎NGINX不允许较大的标头内容。通过此帮助https://medium.com/@mshanak/solve-nginx-error-signin-oidc-502-bad-gateway-dotnet-core-and-identity-serve-bc27920b42d5,我们设置了以下属性:
nginx.conf
http{
...
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
large_client_header_buffers 4 16k;
...
}
Run Code Online (Sandbox Code Playgroud)
default.conf
location /{
...
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
...
}
Run Code Online (Sandbox Code Playgroud)
想知道是否有任何方法可以配置IdentityServer发送更小的标题内容!
| 归档时间: |
|
| 查看次数: |
3837 次 |
| 最近记录: |