Product-apim: Problèmes avec le proxy inverse pour DevPortal et Publisher

Créé le 16 oct. 2019  ·  6Commentaires  ·  Source: wso2/product-apim

J'ai essayé de créer un proxy inverse pour DevPortal et Publisher en utilisant la configuration Nginx ci-dessous :

server {

      listen 443;
      ssl on;
      ssl_certificate /etc/nginx/ssl/nginx.crt;
      ssl_certificate_key /etc/nginx/ssl/nginx.key;

      location /publisher {
          index index.html;
           proxy_set_header X-Forwarded-Host $host;
           proxy_set_header X-Forwarded-Server $host;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_pass https://localhost:9443/publisher;
           proxy_redirect  https://localhost:9443/publisher  https://localhost/publisher;
           proxy_redirect  https://localhost:9443/oauth2  https://localhost/oauth2;
           proxy_redirect https://localhost:9443/oidc  https://localhost/oidc;
      }

      location /devportal {
          index index.html;
           proxy_set_header X-Forwarded-Host $host;
           proxy_set_header X-Forwarded-Server $host;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_pass https://localhost:9443/devportal;
           proxy_redirect https://localhost:9443/devportal  https://localhost/devportal;
           proxy_redirect  https://localhost:9443/oauth2  https://localhost/oauth2;
           proxy_redirect https://localhost:9443/oidc  https://localhost/oidc;
      }

      location /api/am/publisher/v1.0 {
           index index.html;
           proxy_set_header X-Forwarded-Host $host;
           proxy_set_header X-Forwarded-Server $host;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_pass https://localhost:9443/api/am/publisher/v1.0;
           proxy_redirect https://localhost:9443/api/am/publisher/v1.0 https://localhost/api/am/publisher/v1.0;
      }

      location /api/am/store/v1.0 {
           index index.html;
           proxy_set_header X-Forwarded-Host $host;
           proxy_set_header X-Forwarded-Server $host;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_pass https://localhost:9443/api/am/store/v1.0;
           proxy_redirect https://localhost:9443/api/am/store/v1.0 https://localhost/api/am/store/v1.0;
      }

      location /authenticationendpoint {
          index index.html;
           proxy_set_header X-Forwarded-Host $host;
           proxy_set_header X-Forwarded-Server $host;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_pass https://localhost:9443/authenticationendpoint;
           proxy_redirect  https://localhost:9443/authenticationendpoint  https://localhost/authenticationendpoint;
      }

      location /logincontext {
          index index.html;
           proxy_set_header X-Forwarded-Host $host;
           proxy_set_header X-Forwarded-Server $host;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_pass https://localhost:9443/logincontext;
           proxy_redirect  https://localhost:9443/logincontext  https://localhost/logincontext;
      }

      location /commonauth {
          index index.html;
           proxy_set_header X-Forwarded-Host $host;
           proxy_set_header X-Forwarded-Server $host;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_pass https://localhost:9443/commonauth;
           proxy_redirect  https://localhost:9443/commonauth  https://localhost/commonauth;
           proxy_redirect  https://localhost:9443/oauth2  https://localhost/oauth2;
      }

      location /oauth2 {
          index index.html;
           proxy_set_header X-Forwarded-Host $host;
           proxy_set_header X-Forwarded-Server $host;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_pass https://localhost:9443/oauth2;
           proxy_redirect  https://localhost:9443/oauth2  https://localhost/oauth2;
           proxy_redirect  https://localhost:9443/authenticationendpoint  https://localhost/authenticationendpoint;
           proxy_redirect https://localhost:9443/devportal  https://localhost/devportal;
           proxy_redirect  https://localhost:9443/publisher  https://localhost/publisher;
      }

      location /oidc {
          index index.html;
           proxy_set_header X-Forwarded-Host $host;
           proxy_set_header X-Forwarded-Server $host;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
           proxy_pass https://localhost:9443/oidc;
           proxy_redirect  https://localhost:9443/oidc  https://localhost/oidc;
           proxy_redirect  https://localhost:9443/authenticationendpoint  https://localhost/authenticationendpoint;
           proxy_redirect  https://localhost:9443/publisher  https://localhost/publisher;
           proxy_redirect  https://localhost:9443/devportal  https://localhost/devportal;
      }
}

J'ai rencontré quelques problèmes :

  1. Le flux de connexion semble s'interrompre lors de la dernière étape de redirection vers les applications Web après la connexion :
    Par exemple : voir les captures d'écran ci-dessous pour devportal :
  • La variable d'état a une URL complète (cela ne devrait être que la sous-ressource, par exemple : /apis )
    image

  • À cause de cela, la dernière redirection vers l'application devportal échoue en raison du mauvais contexte. Le navigateur sera redirigé vers la console carbone.

image

image

  1. Il y a un problème dans l'environnement MacOS avec les API REST lorsqu'elles sont gérées par Nginx. Je ne semble pas obtenir de réponse du GET /apis/am/v1.0/publisher/swagger.yaml ou du GET /apis/am/v1.0/devportal/swagger.yaml . Il a reçu un code d'état 500 avec une erreur similaire à "Aucun rédacteur de corps de message trouvé pour .. ". Cela ne se reproduit pas dans les environnements Linux.
3.0.0 ResolutioFixed SeveritCritical TypBug

Tous les 6 commentaires

Quoi qu'il en soit, j'ai contourné le premier problème en modifiant manuellement l'URL et le reste semble fonctionner sans problème. J'ai essayé de créer des API à partir de l'éditeur, de les publier et de les appeler à partir du portail de développement.
La déconnexion fonctionne également sans problème.

La raison de la mauvaise URL de redirection est que nous mandatons le port de l'URL de l'application Web qui est utilisé pour la redirection vers l'application Web (en tant que variable d'état). Le port n'est pas obligatoire dans les environnements de proxy inverse. Nous devons supprimer cela. Le correctif doit aller aux fichiers idp.jag dans les applications Web d'éditeur et de portail de développement.

Avec le correctif ci-dessus, tout fonctionne bien.

J'ai également testé avec les dernières modifications et il semble que le problème soit résolu.

Cela ne fonctionne pas encore avec des contextes différents. @isharac y travaille.

Cette page vous a été utile?
0 / 5 - 0 notes