2017-10-16 7 views
2

편집 : SSL 오프로드를 수행하도록 설정설정 신원 서버 4 리버스 프록시

  1. nginx를 리버스 프록시 : 더 자세한 설명

    우리는 다음과 같은 설정이있다. 모든 내부 통신은 HTTP를 통해 이루어집니다. 리디렉션의 설정은 다음과 같이이다 :

    proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Original-For $proxy_add_x_forwarded_for; proxy_set_header X-Original-Proto $scheme; proxy_cache_bypass $http_upgrade;

  2. IS4는

    FALSE로 설정되고 클라이언트 측 RequireHttpsMetadata에 app.UseIdentityServer

    var fordwardedHeaderOptions = new ForwardedHeadersOptions { ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto }; fordwardedHeaderOptions.KnownNetworks.Clear(); fordwardedHeaderOptions.KnownProxies.Clear(); app.UseForwardedHeaders(fordwardedHeaderOptions);

  3. 전에 다음과 같은 설정을 가지고

  4. IS4 쪽에서 모든 클라이언트는 "리디렉션"에 대한 HTTPS 주소를 갖도록 구성됩니다 Uris "및"PostLogoutRedirectUris "가 있습니다. 클라이언트 측 IdentityServerAuthenticationOptions에

  5. 은 다음과 같이 구성됩니다

    new IdentityServerAuthenticationOptions { Authority = "https://[OAUTH_ADDRESS]", ApiName = "[API_NAME]", ApiSecret = "[API_SECRET]", RequireHttpsMetadata = false }

무엇 실제로 일어나는 것은 그 우리는 우리의 등록 IS4에서 클라이언트 중 하나를 방문하려고 요청이 리디렉션 될 때 인증을 위해 IS4에 "Unauthorized client"메시지 화면이 있습니다. 또한 리디렉션 된 요청의 쿼리 문자열을 검사 한 후에 반환 URL이 HTTPS가 아닌 HTTP임을 알 수 있습니다.

알려 주시기 바랍니다.

+0

당신은 IS4에 대한 HTTPS를 사용하지 않아도됩니다. 보안 영향없이 불필요한 복잡성과 성능 저하를 피하기 위해 백엔드에 대한 ssl 오프로드를 수행하는 잘 알려진 방법입니다. MS Azure는 유사한 건축가 개념을 적용합니다. more here : https://docs.microsoft.com/en-us/aspnet/core/publishing/linuxproduction?tabs=aspnetcore2x#why-use-a-reverse-proxy-server –

답변

0

Identity Server의 검색 끝점의 기본 동작은 끝점에 대한 요청에서 (Http vs Https) 체계를 사용하는 것입니다.

신원 서버가 HTTP를 사용하여 공격 받고 있으므로 (역방향 프록시 뒤에 있기 때문에) 제공하는 끝점 정보도 HTTP를 사용합니다.

당신은 http://[OAUTH_ADDRESS]/.well-known/openid-configuration

신원 서버의 최신 버전이 HTTPS에 대한 기본 URL을 강제 할 수있는 원점 옵션이 포함로 이동하여 자신이 볼 수 있습니다. 다음과 같이 사용의 behaind의 HTTPS 프론트 엔드는 Nginx에로의 nginx는 SSL/TLS가 '종료'를 오프로드 할 수 있도록 할 때

services.AddIdentityServer(options => 
    { 
     options.PublicOrigin = "https://[OAUTH_ADDRESS]"; 
    }) 
+0

우리는 버전 1.5.2를 사용하고 있습니다. "PublicOrigin"속성은 없습니다. 어쩌면 버전> = 2를 말하는 것일 수 있습니다.이 버전은 .NET Core 2.0을 필요로합니다. 현재 수행중인 작업은 다음과 같습니다. services.AddIdentityServer (options => { options.IssuerUri = "https : // [OAUTH_ADDRESS]"; }) 하지만 분명히 작동하지 않습니다. – Treach

+0

예, v2에서만 추가되었습니다. 현재, .net 코어 2에 관한 모든 것을 업데이트하고 있습니다. 큰 문제가 있는지 알려 드리겠습니다. 지금까지 당신을 멈추게하는 것들은 없습니까? –