Ajouter une politique de redirection à une app de portail

Cette rubrique décrit comment créer une politique d'accès qui redirige les requêtes vers les ressources Web backend protégées.

Vous créez une politique pour chaque redirection en back-end secondaire, tierce et autre que vous souhaitez créer.

Vous générez la politique en saisissant ses paramètres dans un champ de texte dans le Console Access Gateway Admin UI.

Une politique est composée des éléments suivants :

  • Le conteneur de politique. Vous lui affectez un URI, tel que /2nd.

  • Code de configuration personnalisé. Il contient les sections suivantes :
    • Paramètres de remplacement de la politique, tels que policy_type
    • Variables de session
    • Clés de l'assertion SAML qui représentent les attributs de la politique
    • Le code passe-partout requis
    • Requêtes entrantes réécrites
    • Requêtes sortantes réécrites
    • Redirections 302 réécrites
    • Champs d'en-tête

Ajouter une politique de redirection

  1. Sélectionnez l'onglet Politiques.
  2. Cliquez sur Ajouter (l'icône plus) dans l'en-tête de la liste des politiques, puis sélectionnez Protégé.
  3. Définissez le type de politique sur Personnalisé.
  4. Développez la section Informations avancées.
  5. Dans la zone de texte Configuration personnalisée, saisissez le code par sections. Classez les sections tel que décrit dans cette procédure. Consultez Exemple de bloc de code complet pour obtenir un exemple de configuration complète de politique.
  6. Configurez le type de politique. Consultez Types de politiques pour obtenir une liste des types de politiques.
    set $policy_type "PROTECTED"
  7. Ajoutez les variables de session après l'instruction set $policy_*.
    #Session variables 
    set $UserName '';
    set $oag_username '';
    set $RemoteIP '';
    set $RelayDomain '';
    set $SESSIONID '';
  8. Spécifiez un ensemble correspondant de variables indexées pour chaque attribut. Il s'agit des clés de l'assertion SAML. Il doit y avoir une correspondance un-à-un entre les attributs d'app et les variables indexées. Dans cet exemple, il y a trois attributs. Par conséquent, créez trois instructions d'ensemble plus une instruction d'ensemble de nombre supplémentaire. Les noms de champ doivent correspondre à ceux fournis dans la colonne Nom. De plus, la variable $_argc doit correspondre au nombre total d'attributs dans l'instruction, qui sont au nombre de trois dans cet exemple.
    # Keys from the SAML Assertion
    # authSession looks in the session for these keys
    # and populate the indexed variables
    set $_1 'oagusername';
    set $_2 'firstname';
    set $_3 'lastname';
    set $_argc 3;

    Ce diagramme montre la relation entre les instructions de votre configuration de politique et les noms de colonne qui apparaissent dans les Console Access Gateway Admin UI :

  9. Saisissez des instructions passe-partout similaires à celles de l'exemple. Remplacez les variables et URL par vos propres valeurs.
    # process request policies
    access_by_lua_file conf/authSession.lua;
    # resolver -required if using domain and not IP
    resolver 127.0.0.1 valid=30s ;
    set $backend2 https://2ndbackend.myportal.com/  ;
    proxy_pass $backend2 ;
    
  10. Réécrivez les requêtes relatives et absolues entrantes. Remplacez le chemin de l'app par l'URI de l'app Access Gateway que vous souhaitez transmettre au serveur proxy supplémentaire en arrière-plan. Cet exemple utilise /2nd comme URI.
    # rewrite incoming requests to remove the /2nd
    # for relative links:
    subs_filter href="/    href="/2nd/ gir; 
    # for absolute links: 
    subs_filter 'https://2ndbackend.myportal.com/' 'https://$http_host/2nd/' ; 
  11. Réécrivez les requêtes relatives et absolues sortantes.
    # Rewrite outbound requests to add back in /2nd
    # for absolute links
    subs_filter https://2ndbackend.myportal.com/     https://$http_host/2nd/ gir;
    # for relative links
    subs_filter href="/    href="/2nd/ gi;
    
  12. Configurez les instructions gérées, les en-têtes de l'app et le nom d'hôte. Ajoutez tous les en-têtes obligatoires à la requête, qui peuvent être un sous-ensemble des valeurs d'attributs d'origine.
    # common managed directives
    include /etc/nginx/conf/icsgw_location_common.conf;
    
    # Include headers for application
    proxy_set_header oag_username $_1;
    proxy_set_header firstname $_2;
    proxy_set_header lastname $_3;
    
    # set to hostname that the protected upstream app needs
    proxy_set_header host $host;
  13. Cliquez sur Non validé pour valider le bloc de code. Si le code est valide, Non validé devient Valide.
  14. Corrigez les erreurs éventuelles, puis cliquez sur OK.
  15. Cliquez sur Terminé.

Exemple d'un bloc de code complété

Cet exemple montre le bloc de code complet pour rediriger toutes les requêtes de www.myportal.com/2nd vers 2ndbackend.myportal.com.

set $policy_type "PROTECTED";

# The values from auth Session
set $UserName '';
set $oag_username '';
set $RemoteIP '';
set $RelayDomain '';
set $SESSIONID '';

# Keys from the SAML Assertion
# authSession looks in the session for these keys
# and populate the indexed variables
set $_1 'oagusername';
set $_2 'firstname';
set $_3 'lastname';
set $_argc 3;

# process request policies
access_by_lua_file conf/authSession.lua;
# resolver -required if using a domain and not an IP address
resolver 127.0.0.1 valid=30s ;
set $<set_variable_name> https://2ndbackend.myportal.com/  ;
proxy_pass $<set_variable_name> ;

# rewrite incoming requests to remove the /2nd
# for relative links:
subs_filter href="/    href="/2nd/ gir; 
# for absolute links: 
subs_filter 'https://2ndbackend.myportal.com/' 'https://$http_host/2nd/' ; 

# Rewrite outbound requests to add back in /2nd
# for absolute links
subs_filter https://2ndbackend.myportal.com/     https://$http_host/2nd/ gir;
# for relative links
subs_filter href="/    href="/2nd/ gi;

# common managed directives
include /etc/nginx/conf/icsgw_location_common.conf;

# Include headers for application
proxy_set_header oagusername $_1;
proxy_set_header firstname $_2;
proxy_set_header lastnamename $_3;

# set to the hostname that the protected upstream app needs
proxy_set_header host $host;

Étapes suivantes

Répétez ce processus pour chaque redirection dont vous avez besoin. Si vous ajoutez une troisième politique, utilisez des noms similaires à /3rd pour rediriger vers https://3rdbackend.myportal.com/.