2 votes

Hébergement ASP.NET Core dans Apache en utilisant SSL et redirection de l'authentification par cookie

J'ai créé une application asp.net core et j'essaie de l'héberger dans Apache avec un proxy inverse. L'application utilise l'authentification par cookie :

app.UseCookieAuthentication(new CookieAuthenticationOptions()
{
  AuthenticationScheme = "CookieAuthentication",
  LoginPath = new PathString("/Account/Login/"),
  AccessDeniedPath = new PathString("/Account/Forbidden/"),
  AutomaticAuthenticate = true,
  AutomaticChallenge = true
});

Dans httpd.conf, je voudrais utiliser un hôte SSL uniquement avec un port personnalisé qui sert du contenu à partir de Kestrel.

Listen 34567

  ProxyPreserveHost On
  ProxyPass / http://127.0.0.1:5000/
  ProxyPassReverse / http://127.0.0.1:5000/
  SSLEngine on
  SSLProtocol all -SSLv3
  SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:!RC4+RSA:+HIGH:+MEDIUM:!LOW:!RC4
  SSLCertificateFile certs/server.crt
  SSLCertificateKeyFile certs/server.key

Lorsque j'utilise l'url https://testserver1:34567, il redirige vers http://testserver1:34567/Account/Login/?ReturnUrl=%2F, ce qui entraîne une Mauvaise Requête. Si je corrige l'url en la changeant en https, tout fonctionne correctement par la suite.

Comment faire en sorte qu'il redirige toujours vers une URL en https ?

1voto

Lawrence Points 97

La façon dont j'ai résolu le mien a été de rediriger toutes les requêtes http, y compris les routes, vers des requêtes https.

Voici mon fichier de configuration Apache complet.

    RewriteEngine On
    RewriteCond %{HTTPS} !=on
    RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]

    RequestHeader set X-Forwarded-Proto "https"
    ServerName mydomain.com

    ProxyPass / http://127.0.0.1:5000/
    ProxyPassReverse / http://127.0.0.1:5000/
    ErrorLog /var/log/httpd/netcore-error.log
    CustomLog /var/log/httpd/netcore-access.log common
    SSLEngine on
    SSLProtocol all -SSLv2
    SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:!RC4+RSA:+HIGH:+MEDIUM:!LOW:!RC4
    SSLCertificateFile /etc/letsencrypt/live/mydomain.com/cert.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/mydomain.com/privkey.pem
    SSLCertificateChainFile /etc/letsencrypt/live/mydomain.com/chain.pem

La clé ici est la partie VirtualHost *:80 car c'est celle qui redirige les requêtes. L'autre n'est qu'une question de les consommer.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X