0

IdentityServer4를 사용하여 Identity Server를 구현하고이를 AWS에 배포했습니다. ELB에서 https를 사용할 때까지 훌륭하게 작동합니다. 이제 클라이언트가 인증을 시도하면 다음과 같은 오류가 발생합니다.AWS에서 IdentityServer4를 호출 할 때 "IDX10108 : 지정된 주소가 HTTPS 체계대로 올바르지 않습니다."

Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware[0] 
    An unhandled exception has occurred while executing the request 
System.InvalidOperationException: IDX10803: Unable to obtain configuration from: 'https://int.mycompany.com/.well-known/openid-configuration'. ---> System.ArgumentException: IDX10108: The address specified is not valid as per HTTPS scheme. Please specify an https address for security reasons. If you want to test with http address, set the RequireHttps property on IDocumentRetriever to false. 

클라이언트가 인증서에 만족하지 않습니다. 이는 ID 서버의 호스트 이름과 인증서의 이름과 관련 될 수 있습니다. "* .mycompany.com"이라는 제목의 유효한 와일드 카드 인증서가 있습니다. 우리는 권위가있는 클라이언트를 "https://int.mycompany.com"으로 구성하여 줄을 섰습니다.

로드 균형 조정 구성에서 일부 헤더를 미들웨어로 전달해야한다는 내용도 읽었지만 어떻게 작동하는지 정확히 알 수는 없습니다.

답변

0

HTTPS 요청과 같이 보입니다. Startup 클래스 ConfigureServices 방법으로 다음과 같은 설정을 추가하십시오 :

services.Configure<ForwardedHeadersOptions>(options => 
{ 
    options.ForwardedHeaders = ForwardedHeaders.XForwardedProto; 
}); 

HTTP Headers and Elastic Load Balancing에서 AWS 문서 :

The X-Forwarded-Proto request header helps you identify the protocol (HTTP or HTTPS) that a client used to connect to your server. Your server access logs contain only the protocol used between the server and the load balancer; they contain no information about the protocol used between the client and the load balancer. To determine the protocol used between the client and the load balancer, use the X-Forwarded-Proto request header. Elastic Load Balancing stores the protocol used between the client and the load balancer in the X-Forwarded-Proto request header and passes the header along to your server.