1

私はGoogle認証を使用してAspNetCoreアプリケーションを作成しています。私は、Ubuntuサーバー上のnginxリバースプロキシの背後にこのアプリケーションを配備しています。 ほとんどが動作していますが、コールバックURLに問題があります。Microsoft.AspNetCore.Authentication.Googleを使用してHTTPSコールバックを強制する方法

Googleデベロッパーコンソールでは、http://localhost:5000/signin-googleが許可リダイレクトURIとして設定されています。これは期待どおりに動作し、私のワークステーションから実行しているときに私はGoogle認証を使用することができます。

生産のために、私はhttps://myserver/signin-googleを許可リダイレクトURIとして設定しました。しかし、私がそれを使用しようとすると、accounts.google.comから、http://myserver/signin-google(欠落していることに気付く)というエラーが表示されます。それは本当だ;それは許可されるべきではなく、私のサーバーはポート80要求にも応答しません。

コールバックURLにHTTPSを使用するために認証ミドルウェアに通知するにはどうすればよいですか。

答えて

2

私はついにそれを理解しました。

ステップ1:nginxのは、例えば、必要な転送ヘッダを送信していることを確認します

server { 
    # other stuff ... 
    location/{ 
     # other stuff ... 
     proxy_set_header X-Forwarded-Proto $scheme; 
     # you could also just hardcode this to https if you only accept https 
    } 
} 

ステップ2:デフォルトでは、AspNetCoreはこれらのヘッダを無視します。

PM> Install-Package Microsoft.AspNetCore.HttpOverrides 

ステップ3:それを処理するミドルウェアをインストールし、あなたのConfigure機能では、ミドルウェアを適用します。

app.UseForwardedHeaders(new ForwardedHeadersOptions 
{ 
    ForwardedHeaders = ForwardedHeaders.XForwardedProto 
}); 

これは正しく認証ミドルウェアが正しいredirect_uriを生成する原因となる、httpsにContext.Request.Scheme値を変更する必要があります。

関連する問題