Developpement:Architecture web

De Wiki1000
(Différences entre les versions)

Version du 20 mai 2008 à 17:05



Amélioration de l’a'rchitecture' 'Web'.


Version Date Motif Parties modifiées
1.0 Création
1.1 Modèle d’écran


'Sommaire' :












Sommaire

Architectures multi services

Objectifs

L’architecture multi services à pour but d’améliorer la disponibilité des applications métier et de permettre leur monté en charge en terme d’utilisateur connectés.


Cet objectif est réalisé en permettant la redondance des principaux composants de l’architecture technique :

Les serveurs HTTP

Les serveurs d’application Ligne 1000


La charge d’une application métiers WEB, accessible par une URL, peut ainsi être répartie sur plusieurs services Ligne 1000.


Toutefois le but de ce système n’est pas d’apporter une résistance aux pannes au niveau de la session d’un utilisateur ; en cas de panne d’un serveur d’application appartenant à un cluster de serveurs les sessions de celui-ci sont perdues.


Répartition de la charge

Ce paragraphe décrit comment fonctionne l’allocation des sessions.

L’algorithme est mis en œuvre au niveau du client HTTP lors de l’établissement de la session.

Chaque Service se voit attribué un nom unique.


Les identifiants de session (SID) sont tirés par les Services et constitués d’un numéro unique concaténé au nom du Service. Cette application garantie que les SID seront unique pour l’ensemble d’une configuration.


Lors de la connexion d’un nouvel utilisateur le client HTTP interroge chaque serveur pour connaître leur charge actuelle et identifier le meilleur choix.


Lors de la réception d’une requête le client HTTP utilise le SID (transmis dans chaque requête) pour identifier le Serveur 1000 sur lequel router la requête.


Cet algorithme évite de maintenir des tables SID – Services.


Une connexion cliente :

Utilisera toujours le même Service 1000

Peut utiliser différent serveurs HTTP.


La configuration des Client HTTP doit énumérer tous les Serveurs 1000 ; pour cela les fichiers de configurations sont modifiés ainsi :


[\SOFTWARE\Sage\Ligne 1000\Administration\IPC\GCF]

serverList=GCF1,GCF2


[\SOFTWARE\Sage\Ligne 1000\Administration\IPC\GCF1]

ipcMode=ipcTCP

shmAddress=hostGCF1


[\SOFTWARE\Sage\Ligne 1000\Administration\IPC\GCF2]

ipcMode=ipcTCP

shmAddress=hostGCF2

Diagramme de déploiement

Sécurité des accès WEB

Utilisation de HTTPs

Mécanisme standard. Les données échangées entre navigateur et serveur sont cryptées.

Testé sur Apache.

Association de l’adresse IP au SID de session.

Lorsqu’un utilisateur se connecte une session serveur est créée. L’identifiant de session est le seul paramètre visible par l’utilisateur dans les URL utilisées par l’application WEB.

Attaque possible :

Deviner des valeurs de SID valident et usurper l’identité d’un autre l’utilisateur.

Défense :

Lors de la création de la session stocker l’adresse IP du client et vérifier à chaque requête que le client est bien celui qui à créée la session.


Utilisation d’écran Ligne 1000 dans des applications WEB tiers.

La ligne 1000 offre un mécanisme permettant à une application WEB d’ouvrir un écran ligne 1000 dans une session utilisateur.

Voici les étapes à suivre :

Inclure le fichier JavaScript « l1000env.js » dans votre page. Ce script permet de charger l’ensemble des éléments nécessaires pour manipuler les fenêtres ligne 1000. Il est situé dans le répertoire du site Ligne 1000.

<script type="text/javascript" src="../js/l1000env.js"></script>


Définir une variable JavaScript pointant sur le chemin relatif de l’application ligne 1000 utilisée.

Par exemple si vous souhaitez ouvrir un écran de l’application gcf :


var l1000Root="/gcf";


Ouvrez la fenêtre à l’aide de la fonction JavaScript

checkEnvL1000(callFormAlias,null,["",form_name, form_args, session_id, society_name, user_name, user_password]);


Il existe trois méthodes pour gérer l’authentification ligne 1000 :

Fournir les informations société, utilisateur et mot de passe directement dans les paramètres d’appel de CheckEnvL1000.

Le principal désavantage de cette méthode est que le mot de passe est visible en clair dans la page, l’utilisateur peut en prendre connaissance et l’utiliser pour accéder à l’ensemble de l’application Ligne 1000.

Si vous utilisez cette méthode passer une chaine vide pour l’identifiant de session :

checkEnvL1000(callFormAlias,null,["",form_name, form_args, "", society_name, user_name, user_password]);

Fournir un identifiant de session.

Cette méthode permet de garantir une meilleure sécurité car l’utilisateur n’a pas connaissance des informations de connexion ; toutefois elle requière que l’application WEB soit capable d’obtenir un identifiant de session auprès du serveur Ligne 1000 et cette phase d’authentification doit être réalisée coté serveur.

Pour obtenir un identifiant de session exécutez une requête sur le service de session du Serveur Ligne 1000 :

http://hostname/application/server/signin.l1000?DB=society_name&USER= ser_name&PASSWORD= user_password&RESSID=1


La réponse de serveur est de type text/plain et contient un identifiant de session. Cette opération doit être effectuée sur le serveur.

Exemple d’appel à partir d’ASP.NET :

const string querystring = "DB={0}&USERNAME={1}&PASSWORD={2}&RESSID=1";

string query = string.Format(querystring, "5.0.2 - Test - Conso Groupe", "ereport", "8BC38A379D21F5F9A1B4145BDF663835");

string L1000SID="";

query = "http://ereport/conso1000/server/signin.l1000?" + query;

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(query);

request.AllowAutoRedirect = false;

try

{

   HttpWebResponse wresponse = (HttpWebResponse)request.GetResponse();
   StreamReader loResponseStream = new StreamReader(wresponse.GetResponseStream(), Encoding.ASCII);
   L1000SID = loResponseStream.ReadToEnd();

} catch

{

    L1000SID = "";

}

Console.WriteLine(L1000SID);

Ne pas fournir d’informations d’identification.

Dans ce cas l’appel à la fonction d’ouverture de l’écran va afficher une boite de dialogues pour que l’utilisateur saisisse les informations de connexion. Ces informations seront conservées d’une ouverture d’écran à l’autre.


Exemple complet en passant les paramètres d’authentification dans l’appel de l’écran

<html>

<head>

<title>test open L1000 window</title>

<script type="text/javascript" src="../js/l1000env.js"></script>

<script>

var l1000Root="/gcf";

function Comptes() {

checkEnvL1000(callFormAlias,null,["","ecompta_comptesgeneraux.dfm","ArgPeriode=2006-12-31&ArgGroupeCompte=4000&ArgTypeFlux=F300","", "5.5.0 - Sage 1000 Entreprise - Projet", "crnit", "7B60A52ECC8DB633D57B05BCA36207ED"]);

}

</script>

</head>

<body>

Test open form

<a onclick=" Comptes();" href="#"> Comptes </a>

</body>

</html>

Outils personnels