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.

関連する問題