2017-02-08 2 views
1

問題は、SSLを使用するIISサーバーでIdentityServer4の実装をホストしようとするときです。IdentityServer 4のHTTPではなくhttpsでホストするASP.NETコアモジュールを設定します

SSLを有効にしてKestrelだけでアプリケーションを実行すると、IdServerのIssuerUriDiscovery EndpointsはSSLバインディングを使用します。しかし、私はそれをASP.NETコアモジュールの後ろにホストするとhttp://localhost:{random port}でそれをホストし、それはhttpsではないIdentityServerのためにIssuerUriEndpointsを生成します。

私は成功せず、次のことを試してみました:

私は がhttpsポート80変更しようとしました

  • に結合結合し、除去のためのIISのWebサイトの有効な証明書を持っていることを確認しました

    1. web.config内の環境変数ASPNETCORE_URLS は、httpsアドレスを指します。

    2. web.configで書き換えルールとリダイレクトルールを試しました。

    3. 特定のURLまたは変更プロトコルにバインドするスタートアップクラスの(.UseIISIntegration()によって使用される) の設定が検索されました。

    4. RequireSSL(IdentityServer 3)またはIdentityServer4で RequireHttpsMetadataような同様の設定を見つけることを試みました。

    5. スタートアップクラスのIdentityServerオプションでIssuerUriを変更して、他のエンドポイントも更新することができるように変更しました。

    私は恐らく非常に明白なものを見逃しているかもしれませんが、今はそれが何であるかについての手掛かりはありません。

    コミュニティからすべてのヘルプは大幅に

    Program.csのコード

    public static void Main(string[] args) 
        { 
         Console.Title = "IdentityServer"; 
    
         var config = new ConfigurationBuilder() 
          .SetBasePath(Directory.GetCurrentDirectory()) 
          .AddJsonFile("kestrelHosting.json", optional: true) 
          .AddCommandLine(args) 
          .Build(); 
    
         var host = new WebHostBuilder() 
          .UseConfiguration(config) 
          .UseKestrel(options => 
          { 
           // options.ThreadCount = 4; 
           options.NoDelay = true; 
           options.UseHttps("VismaCert.pfx", "Visma123"); 
           //options.UseConnectionLogging(); 
          }) 
          .UseContentRoot(Directory.GetCurrentDirectory()) 
          .UseIISIntegration() 
          .UseStartup<Startup>() 
          .Build(); 
    
         host.Run(); 
        } 
    
  • 答えて

    0

    :-)いただければ幸いAspNetCoreModuleはSSLターミネータである、それはHTTPS上ケストレルと通信しません。それはヘッダーを介して元のスキームを転送するので、URL /リンクを生成するときに使用できます。デフォルトでUseIISIntegrationに含まれるForwardedHeadersミドルウェアは、これらのヘッダーを受け取り、要求フィールドに適用します。ただし、ヘッダーを既定の設定で処理できない場合があります。ここに参考文献がたくさんあります:https://github.com/aspnet/Docs/issues/2384

    +0

    x-forwarded- *の頭を表示できますか? – Tratcher

    +0

    ご回答ありがとうございます。リンクをたどり、ARRでレスポンスヘッダーを追加した後、次のようになります。 "X-FORWARDED-HOST:xxxxxxxx.xxx.xxx"、 "X-FORWARDED-SCHEMA:https"、 "X-FORWARDED-PROTO:https、http"および "X-Forwarded-For:xx.xx.x.xx :xxxxxx "となります。残念ながら、identityserverはこれらの変更を認識せず、代わりにリクエストがあるかどうかをチェックする代わりにHttpContext.Request.Schemaを読み込むように見えます。BaseUrlMiddlewareのヘッダー["X-Forwarded-Proto"]の値がhttpsに設定されているので、最善の方法について新しい質問をします。 –

    +0

    転送ヘッダーオプションでは、ヘッダーの対称性が不要です。あなたのprotoとForは異なる数の値を持っています。 – Tratcher

    関連する問題