﻿<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Tag Configuration - Constellation</title>
	<atom:link href="https://developer.myconstellation.io/tag/configuration/feed/" rel="self" type="application/rss+xml" />
	<link>https://developer.myconstellation.io/tag/configuration/</link>
	<description>Votre plateforme d&#039;interconnexion</description>
	<lastBuildDate>Wed, 28 Aug 2019 14:46:13 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.0.11</generator>

<image>
	<url>https://developer.myconstellation.io/wp-content/uploads/2016/02/256x256-e1457476015859.png</url>
	<title>Tag Configuration - Constellation</title>
	<link>https://developer.myconstellation.io/tag/configuration/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Le fichier de configuration</title>
		<link>https://developer.myconstellation.io/constellation-platform/constellation-server/fichier-de-configuration/</link>
					<comments>https://developer.myconstellation.io/constellation-platform/constellation-server/fichier-de-configuration/#respond</comments>
		
		<dc:creator><![CDATA[Sebastien Warin]]></dc:creator>
		<pubDate>Tue, 09 Aug 2016 12:52:30 +0000</pubDate>
				<category><![CDATA[Constellation Server]]></category>
		<category><![CDATA[SettingsGroups]]></category>
		<category><![CDATA[Authorization]]></category>
		<category><![CDATA[Package]]></category>
		<category><![CDATA[Settings]]></category>
		<category><![CDATA[Sentinel]]></category>
		<category><![CDATA[Configuration]]></category>
		<category><![CDATA[Credential]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[AccessKey]]></category>
		<guid isPermaLink="false">https://developer.myconstellation.io/?p=2149</guid>

					<description><![CDATA[<p>Une Constellation est décrite en un seul fichier : le fichier de configuration Constellation. Ce fichier se nomme “Constellation.Server.exe.config” et se trouve dans le répertoire d’installation du serveur (par défaut dans “Program Files\Constellation Plateform\Server« ). Vous pouvez le modifier de différente</p>
<p>The post <a rel="nofollow" href="https://developer.myconstellation.io/constellation-platform/constellation-server/fichier-de-configuration/">Le fichier de configuration</a> appeared first on <a rel="nofollow" href="https://developer.myconstellation.io">Constellation</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Une Constellation est décrite en un seul fichier : le <strong>fichier de configuration Constellation</strong>.</p>
<p>Ce fichier se nomme “<em>Constellation.Server.exe.config</em>” et se trouve dans le répertoire d’installation du serveur (par défaut dans “<em>Program Files\Constellation Plateform\Server</em>« ).</p>
<p>Vous pouvez le modifier de différente manière :</p>
<ul>
<li>En éditant ce fichier directement sur le serveur (avec un éditeur de texte type Notepad)</li>
<li>Via la Console Constellation (sur la page Configuration Editor)</li>
<li>Via Visual Studio</li>
<li>Via l’API de Management Constellation</li>
</ul>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image75-4.png"><img class="colorbox-2149"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Edition de la configuration" src="https://developer.myconstellation.io/wp-content/uploads/2016/03/image75_thumb.png" alt="Edition de la configuration" width="363" height="200" border="0" /></a></p>
<p>Le fichier contient une balise globale “configuration” dans laquelle vous trouverez 4 sections :</p>
<ul>
<li><u>configSections</u> : réservé au moteur .NET</li>
<li><u>constellation</u> : la section de configuration Constellation (anciennement nommée &lsquo;constellationSection&rsquo;)</li>
<li><u>startup</u> : réservé au moteur .NET</li>
<li><u>runtime</u> : réservé au moteur .NET</li>
</ul>
<p>Vous ne devez en aucun cas modifier les sections réservées au moteur .NET sans savoir exactement ce que vous faites.</p>
<p>La section de “<strong>constellation</strong>” se décompose de la façon suivante :</p>
<ul>
<li><u><a href="/constellation-platform/constellation-server/fichier-de-configuration/#Section_listenUris">listenUris</a></u> : définit la configuration des URI d’écoute du serveur Constellation</li>
<li><u><a href="/constellation-platform/constellation-server/fichier-de-configuration/#Section_fileServer">fileServer</a></u> : définit la configuration du serveur Web statique utilisé pour l’hébergement de la Console Constellation</li>
<li><u><a href="/constellation-platform/constellation-server/fichier-de-configuration/#Section_recoveryOptions">recoveryOptions</a></u> : définit les options de récupération des packages</li>
<li><u><a href="/constellation-platform/constellation-server/fichier-de-configuration/#Section_sentinels">sentinels</a></u> : définit la configuration des sentinelles (et des packages) de votre Constellation</li>
<li><u><a href="/constellation-platform/constellation-server/fichier-de-configuration/#Section_settingsGroups">settingsGroups</a></u> : définit la configuration des groupes de “settings”</li>
<li><u><a href="/constellation-platform/constellation-server/fichier-de-configuration/#Section_credentials">credentials</a></u> : définit la configuration des credentials pour l’accès à votre Constellation</li>
</ul>
<p>A chaque modification vous devez recharger la configuration soit via le hub de contrôle ou la Console Constellation (bouton “Reload Configuration”) ou soit en redémarrant le service Constellation Server.</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/08/image-10.png"><img class="colorbox-2149"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Schéma de configuration" src="https://developer.myconstellation.io/wp-content/uploads/2016/08/image_thumb-10.png" alt="Schéma de configuration" width="350" height="261" border="0" /></a></p>
<h3>Section “listenUris”</h3>
<p>Cette section permet de définir les URI sur lesquels le serveur Constellation doit écouter.</p>
<p></p><pre class="crayon-plain-tag">&lt;listenUris&gt;
  &lt;uri listenUri="http://+:8088/" /&gt;
&lt;/listenUris&gt;</pre><p></p>
<p>Ici le serveur répondra sur le port HTTP 8088 quelque soit le host (nom DNS ou adresse IP) car nous utilisons le wildcard “+” (pour plus d’information, <a href="https://msdn.microsoft.com/en-us/library/system.net.httplistener(v=vs.100).aspx#Anchor_6">lisez ceci</a>).</p>
<p>Vous pouvez configurer autant de “listenUri” que vous souhaitez. Par exemple :</p>
<p></p><pre class="crayon-plain-tag">&lt;listenUris&gt;
  &lt;uri listenUri="http://+:8088/" /&gt;
  &lt;uri listenUri="http://constellation.mydomain.net:8888/" /&gt;
  &lt;uri listenUri="http://+:8080/constellation/" /&gt;
  &lt;uri listenUri="https://+:8089/" /&gt;
&lt;/listenUris&gt;</pre><p></p>
<p>Ici, le serveur Constellation répondra :</p>
<ul>
<li>Aux requêtes sur le port HTTP 8088</li>
<li>Aux requêtes sur le port HTTP 8888 où le host est “constellation.mydomain.net” (en clair une requête <a href="http://&lt;ip&gt;:8888">http://&lt;ip&gt;:8888</a>  ne fonctionnera pas)</li>
<li>Aux requêtes sur le port HTTP 8080 quelque soit le host mais dont le path doit forcement démarrer par “/constellation/”</li>
<li>Aux requêtes sur le port HTTPS 8089 en utilisant un cryptage SSL (<a href="/constellation-platform/constellation-server/configuration-ssl/">plus d’information</a>)</li>
</ul>
<p>Pour prendre en compte les modifications de cette section vous devez redémarrer le service Constellation.</p>
<h3>Section “fileServer”</h3>
<p>Cette section permet d’activer et configurer le “fileServer” de Constellation pour héberger des fichiers statiques (pages HTML, fichiers CSS, JS, images, etc..).</p>
<p>Cela sert principalement pour “auto-héberger”  la Console Constellation par le serveur Constellation lui-même.</p>
<p>En effet, la Console Constellation n’est ni plus ni moins qu’une application Web client-side, c’est à dire une série de pages HTML avec scripts JS et fichiers CSS/Image. Libre à vous de l’héberger sur vos serveurs Web mais afin de limiter les prérequis, le serveur Constellation peut lui-même héberger la console grâce au “fileServer” intégré.</p>
<p>La section “fileServer” ne contient que quatre attributs :</p>
<p></p><pre class="crayon-plain-tag">&lt;fileServer enable="true" path="/WebConsole" localhostOnly="true" physicalPath="D:\App\Constellation\Console" /&gt;</pre><p></p>
<ul>
<li>“<u>enable</u>” : indique si le serveur de fichier statique sur le serveur Constellation doit être activé (<em>true</em> ou <em>false</em>).</li>
<li>“<u>path</u>” : le répertoire d’écoute (préfixé par la listenUri).</li>
<li>“<u>localhostOnly</u>” : indique si le fileServer répond seulement aux requêtes “locales” ou à toutes les requêtes (<em>true</em> ou <em>false</em>).</li>
<li>“<u>physicalPath</u>” : le répertoire physique</li>
</ul>
<p>Dans l’exemple ci-dessus, le serveur de fichier est activé mais ne répondra qu’aux requêtes locales. Le serveur délivra les fichiers dans “D:\App\Constellation\Console” sur l’URL “&lt;listen_URI_du_serveur_Constellation&gt;/WebConsole” par exemple <a href="http://localhost:8088/WebConsole">http://localhost:8088/WebConsole</a> ou <a href="http://127.0.0.1:8088/WebConsole">http://127.0.0.1:8088/WebConsole</a> en partant du principe qu’il existe une listenUri “http://+:8088”.</p>
<p>Comme pour la section précédente (listenUris), il faut obligatoirement redémarrer le service Constellation Server pour prendre en compte ces modifications.</p>
<h3>Section “recoveryOptions”</h3>
<p>Les options de récupération (recoveryOptions) permettent de définir le comportement de la sentinelle en cas d’arrêt brutale de l’exécution d’un package (crash du package).</p>
<p>Chaque package peut avoir ses propres options de récupération mais cette section permet de définir les options “globales”, c’est à dire appliqué par défaut pour chaque package de la Constellation.</p>
<p>Les options de récupérations se résume en quatre propriétés :</p>
<ul>
<li>“<u>restartAfterFailure</u>” (<em>true</em> par défaut) : définit si la sentinelle doit redémarrer un package en cas de crash de ce dernier</li>
<li>“<u>numberOfRetry</u>” (<em>3 </em>par défaut) : définit le nombre maximal de tentative de redémarrage d’un package</li>
<li>“<u>restCounterAfterMinutes</u>” (<em>15 </em>par défaut) : définit la période (en minute) au delà de laquelle le compteur d’erreur est réinitialisé</li>
<li>“<u>restartPackageAfterSeconds</u>” (<em>30 </em>par défaut) : définit le délai d’attente avant de redémarrer un package suite à un crash</li>
</ul>
<p>Dans la configuration par défaut, si un package “crash” il est automatiquement redémarré 30 secondes après son crash dans la limite de 3 tentatives sachant qu’au bout de 15 minutes, le compteur de tentative est réinitialisé à 0.</p>
<h3>Section “sentinels”</h3>
<p>Dans cette section vous allez déclarer vos sentinelles (virtuelles ou non) dans lesquelles vous déclarerez les packages (virtuels ou non) qui eux même déclarons leurs settings et leurs groupes.</p>
<p>En clair, c’est cette section qui décrit votre “Constellation”.</p>
<p>Prenez l’exemple de la Constellation suivante :</p>
<p></p><pre class="crayon-plain-tag">&lt;sentinels&gt;
  &lt;sentinel name="SENTINEL-NAME-DEMO" credential="Standard"&gt;
    &lt;packages&gt;    
      &lt;package name="HWMonitor" enable="true"&gt;&lt;/package&gt;          
      &lt;package name="DemoPackage" credential="ControlHubAccess" enable="true"&gt;
        &lt;settings&gt;
        &lt;import&gt;
          &lt;settingGroup groupName="GroupSettingsDemo" /&gt;
        &lt;/import&gt;
        &lt;setting key="IntSetting" value="42" /&gt;
        &lt;setting key="StringSetting" value="sample config value 2" /&gt;
        &lt;setting key="SettingXml"&gt;
          &lt;content&gt;
            &lt;demo type="test"&gt;
              &lt;list count="42"&gt;
              &lt;a&gt;123&lt;/a&gt;
              &lt;b&gt;test&lt;/b&gt;
              &lt;/list&gt;
            &lt;/demo&gt;
          &lt;/content&gt;
        &lt;/setting&gt;
        &lt;setting key="SettingJson"&gt;
          &lt;content&gt;
          &lt;![CDATA[
          {
            ListenPorts: [ 80, 443 ],
            EnableCaching : true,
            ServerProgramName: "Hypothetical WebServer 1.0",
            Websites: [
              {
                Path: "/srv/www/example/",
                Domain: "example.com",
                Contact: "admin@example.com"    
              },
              {
                Path: "/srv/www/somedomain/",
                Domain: "somedomain.com",
                Contact: "admin@somedomain.com"
              }
            ]
          }
          ]]&gt;
          &lt;/content&gt;
        &lt;/setting&gt;
        &lt;/settings&gt;
      &lt;/package&gt;
    &lt;/packages&gt;
  &lt;/sentinel&gt;
  &lt;sentinel name="ANOTHER-SENTINEL" credential="Standard"&gt;
    &lt;!-- ..... --&gt;
  &lt;/sentinel&gt;
&lt;/sentinels&gt;</pre><p></p>
<p>Voici ce qu’elle décrit :</p>
<ul>
<li>Nous avons deux sentinelles “SENTINEL-NAME-DEMO” et “ANOTHER-SENTINEL »</li>
<li>Les deux sentinelles utilisent le même <a href="/concepts/securite-accesskey-credential-authorization/">credential</a> “Standard” (déclaré dans la <a href="/constellation-platform/constellation-server/fichier-de-configuration/#Section_credentials">section credentials</a>).</li>
<li>Sur la première sentinelle est déployée deux packages :
<ul>
<li>“HWMonitor” : le package utilise le même credential que sa sentinelle (car non défini explicitement donc hérite du credential de sa sentinelle)</li>
<li>“DemoPackage” : ce package utilise le credential nommé “ControlHubAccess” et déclare les settings suivants :
<ul>
<li>IntSetting et StringSetting associés à des valeurs (numérique et string)</li>
<li>SettingXml et SettingJson associés à des contenus (XML et JSON)</li>
<li>Importe le groupes de settings nommé “GroupSettingsDemo” défini dans <a href="/constellation-platform/constellation-server/fichier-de-configuration/#Section_settingsGroups">la section “settingsGroups”</a></li>
</ul>
</li>
</ul>
</li>
</ul>
<h4>Les sentinelles</h4>
<p>Pour entrer dans le détail, vous allez déclarer dans la section “sentinels”, les sentinelles de votre Constellation que ce soit des sentinelles réelles ou virtuelles.</p>
<p>Pour cela, vous utiliser la balise “&lt;sentinel&gt;” qui comporte les attributs suivants :</p>
<ul>
<li>“<u>name</u>” : le nom de la sentinelle (obligatoire et unique)</li>
<li>“<u>credential</u>” : le nom du credential (déclaré dans la <a href="/constellation-platform/constellation-server/fichier-de-configuration/#Section_credentials">section credentials</a>) à utiliser pour l’authentification (obligatoire)</li>
</ul>
<p>La section “&lt;sentinel&gt;” contient une collection de “&lt;package&gt;” rangée dans la balise “&lt;packages&gt;”. Chaque package peut-être réel ou virtuel.</p>
<h4>Les packages</h4>
<p>L’élément “&lt;package&gt;” contient les attributs suivants :</p>
<ul>
<li>“<u>name</u>”: le nom de l’instance du package (obligatoire et unique)</li>
<li>“<u>filename</u>” (facultatif) : le nom du fichier du package à utiliser dans le repository (<a href="/concepts/instance-package/">plus d’info</a>)</li>
<li>“<u>enable</u>” (facultatif, par defaut <em>true</em>) : indique si le package est activé ou désactivé</li>
<li>“<u>credential</u>” (facultatif, utilise par défaut du credential de sa sentinelle) : spécifie le <a href="/constellation-platform/constellation-server/fichier-de-configuration/#Section_credentials">credential</a> que le package va utiliser pour s’authentifier sur le serveur Constellation</li>
<li>“<u>autostart</u>” (facultatif, par defaut <em>true</em>) : indique si le package doit automatiquement démarrer sur sa sentinelle ou juste être déployé (et donc démarré manuellement)</li>
</ul>
<p>Un package peut contenir ensuite trois sous sections :</p>
<ul>
<li>“<u>recoveryOptions</u>” : définit les options de récupération du package (par défaut, la sentinelle utilise les <a href="/constellation-platform/constellation-server/fichier-de-configuration/#Section_recoveryOptions">options globales</a>)</li>
<li>“<u>settings</u>” : définit les paramètres/variables de configuration d’un package</li>
<li>“<u>groups</u>” : définit les groupes dans lesquels le package sera abonné</li>
</ul>
<h5>Les options de récupérations</h5>
<p>La balise est la même que la <a href="/constellation-platform/constellation-server/fichier-de-configuration/#Section_recoveryOptions">section globale</a>.</p>
<p>Par exemple si on ne souhaite pas que le package redémarre en cas de crash, on peut écrire :</p>
<p></p><pre class="crayon-plain-tag">&lt;package name="MonPackage" enable="true"&gt;
  &lt;recoveryOptions restartAfterFailure="false" /&gt;
&lt;/package&gt;</pre><p></p>
<h5>Les paramètres de configuration</h5>
<p>Chaque package peut définir des paramètres de configuration au niveau du serveur Constellation. Cela vous permet de changer ces paramètres directement depuis la Constellation qui se chargera de redescendre ces paramètres sur vos packages.</p>
<p>Il y a deux types de settings :</p>
<ul>
<li>Les “Setting Value” : il s’agit d’un couple clé/value</li>
<li>Les “Setting Content”  : il s’agit d’un setting dont la valeur peut être un XML ou JSON</li>
</ul>
<p>Dans l’exemple plus haut, le package “DemoPackage” contient à la fois des settings de type “value” et de type “content”.</p>
<p>Vous pouvez également regrouper des settings dans les groupes afin de les partager entre plusieurs package grâce aux <a href="/constellation-server/fichier-de-configuration/#Section_settingsGroups">settingsGroups</a>. Toujours dans l&rsquo;exemple précédent, le package “DemoPackage” inclut le groupe “GroupSettingsDemo”, un groupe de settings décrit dans la section ”<a href="/constellation-server/fichier-de-configuration/#Section_settingsGroups">settingsGroups</a>”.</p>
<p>Pour plus d’information sur les settings, consultez l’article sur l’exploitation des <a href="/client-api/net-package-api/settings/">settings avec l’API .NET</a>.</p>
<h5>Les groupes</h5>
<p>Comme <a href="/concepts/messaging-message-scope-messagecallback-saga/#Message_Scope">vous le savez</a>, un message peut être envoyé à un groupe dans lequel des packages réels ou virtuels peuvent s’abonner.</p>
<p>Il y a deux manières d’abonner un package à un groupe :</p>
<ul>
<li>Soit par le package lui même en invoquant la méthode “SubscribeToMessage” via les différentes API Constellation misent à disposition</li>
<li>Soit dans la configuration du package au niveau du serveur Constellation</li>
</ul>
<p>Cela vous permet d’avoir la main sur l’appartenance des packages aux groupes que vous pouvez administrer sans devoir modifier vos packages (virtuels ou non).</p>
<p>La section “groups” sur un package permet de définir ces liens. Par exemple :</p>
<p></p><pre class="crayon-plain-tag">&lt;package name="MonPackage" enable="true"&gt;
  &lt;groups&gt;
    &lt;group name="MonGroupeA" /&gt;
    &lt;group name="MonGroupeB" /&gt;
  &lt;/groups&gt;
&lt;/package&gt;</pre><p></p>
<p>Ici le package “MonPackage” est abonné aux groupes “MonGroupeA” et “MonGroupeB”. En cas de modification des affectations aux groupes, il faudra redémarrer le package soit via vos applications en utilisant les API du hub de contrôle soit depuis la Console Constellation.</p>
<h3>Section “settingsGroups”</h3>
<p>Vous pouvez grouper des settings (Content ou Value) dans des groupes au niveau du serveur et importer ces groupes dans les settings de vos packages ou dans d’autres groupes.</p>
<p>Par exemple, créons un groupe pour “HWMonitorSettings” qui contient le setting “Interval” :</p>
<p></p><pre class="crayon-plain-tag">&lt;settingsGroups&gt;
  &lt;group name="HWMonitorSettings"&gt;
    &lt;settings&gt;
      &lt;setting key="Interval" value="500" /&gt;
    &lt;/settings&gt;
  &lt;/group&gt;
&lt;/settingsGroups&gt;</pre><p></p>
<p>Ainsi pour chaque instance du package “HWMonitor”, vous pouvez importer le groupe “HWMonitorSettings” afin de centraliser la configuration de ce package :</p>
<p></p><pre class="crayon-plain-tag">&lt;package name="HWMonitor"&gt;
  &lt;settings&gt;
    &lt;import&gt;
      &lt;settingGroup groupName="HWMonitorSettings" /&gt;
    &lt;/import&gt;
  &lt;/settings&gt;
&lt;/package&gt;</pre><p></p>
<p>Vous pouvez importer des groupes dans des groupes sans limite.</p>
<p>C’est toujours la valeur du setting la plus proche du package qui gagne (surcharge).</p>
<p>Bien entendu, vous pouvez créer autant de groupe que vous voulez et chaque groupe peut contenir des SettingValue ou des SettingContent :</p>
<p></p><pre class="crayon-plain-tag">&lt;settingsGroups&gt;
  &lt;group name="test"&gt;
    &lt;settings&gt;
      &lt;setting key="Demo1" value="Seb" /&gt;
      &lt;setting key="Demo2" value="123" /&gt;
    &lt;/settings&gt;
  &lt;/group&gt;
  &lt;group name="test2"&gt;
    &lt;settings&gt;
      &lt;import&gt;
        &lt;settingGroup groupName="common" /&gt;
      &lt;/import&gt;
      &lt;setting key="Demo1" value="Sebastien" /&gt;
      &lt;setting key="Demo2" value="2015" /&gt;
    &lt;/settings&gt;
  &lt;/group&gt;
  &lt;group name="common"&gt;
    &lt;settings&gt;
      &lt;setting key="MyStringSetting" value="This is a string" /&gt;
      &lt;setting key="MyBoolSetting" value="true" /&gt;
      &lt;setting key="MyXmlDocument"&gt;
        &lt;content&gt;
          &lt;note date="09-02-2016"&gt;
            &lt;to&gt;Tove&lt;/to&gt;
            &lt;from&gt;Jani&lt;/from&gt;
            &lt;heading&gt;Reminder&lt;/heading&gt;
            &lt;body&gt;Don't forget me this weekend!&lt;/body&gt;
          &lt;/note&gt;
        &lt;/content&gt;
      &lt;/setting&gt;
      &lt;setting key="MyJsonObject"&gt;
        &lt;content&gt;
          &lt;![CDATA[
        {
          "Number": 123,
          "String" : "This is a test (local)",
          "Boolean": true
        }
        ]]&gt;
        &lt;/content&gt;
      &lt;/setting&gt;
    &lt;/settings&gt;
  &lt;/group&gt;
&lt;/settingsGroups&gt;</pre><p></p>
<p>Pour bien comprendre, imaginez le package suivant :</p>
<p></p><pre class="crayon-plain-tag">&lt;package name="DemoPackage"&gt;
  &lt;settings&gt;
    &lt;import&gt;
      &lt;settingGroup groupName="test" /&gt;
      &lt;settingGroup groupName="test2" /&gt;
    &lt;/import&gt;
    &lt;setting key="numberTest" value="42" /&gt;
    &lt;setting key="Demo1" value="It’me" /&gt;
  &lt;/settings&gt;
&lt;/package&gt;</pre><p></p>
<p>Ici cette instance du package “DemoPackage” définie au niveau du serveur (= sans prendre en compte les settings déclarés dans le fichier local et le manifeste) 7 settings :</p>
<ul>
<li>numberTest = 42 (définit dans les settings du package)</li>
<li>Demo1 = “It’s me” (définit dans les settings du package, cette valeur écrase celle des groupes importés)</li>
<li>Demo2 = 2015 (définit par le groupe “test2”. Cette valeur écrase la valeur du groupe “test”, car le groupe “test2” est importé APRES le groupe “test”)</li>
<li>MyStringSetting, MyBoolSetting, MyXmlDocument et MyJsonObject définies par le groupe “common” (groupe importé dans le groupe “test2” lui même importé sur le package “DemoPackage”).</li>
</ul>
<h3>Section “credentials”</h3>
<p>Comme évoqué dans <a href="/concepts/securite-accesskey-credential-authorization/">l’article lié à la sécurité</a>, tous les appels (http) au serveur Constellation doivent être authentifiés en utilisant une clé d’accès que l’on nomme “AccessKey”.</p>
<p>Ces clé d’accès sont liés à des credentials.</p>
<p>Dans la section “credentials” nous allons donc définir les différents credentials ainsi que les différentes autorisations et droits sur ces credentials.</p>
<p>Chaque credential comporte obligatoirement deux propriétés :</p>
<ul>
<li>Le nom (unique) du credential</li>
<li>L’AccessKey</li>
</ul>
<p>Ainsi que les propriétés suivantes :</p>
<ul>
<li>“<u>enable</u>” (<em>true</em> par défaut) : indique si le credential est activé ou désactivé</li>
<li>“<u>enableControlHub</u>” (<em>false</em> par défaut) : indique si le credential peut se connecter sur le hub de contrôle (pour l’administration de la Constellation)</li>
<li>“<u>enableManagementAPI</u>” (<em>false</em> par défaut) : indique si le credential peut se connecter à l’API de Management (pour l’édition de la configuration)</li>
<li>“<u>enableDeveloperAccess</u>” (<em>false </em>par défaut) : indique si le credential peut utiliser la sentinelle virtuelle “Developer” pour debugger des packages (utilisé par le SDK Visual Studio)</li>
</ul>
<p>Par exemple :</p>
<p></p><pre class="crayon-plain-tag">&lt;credentials&gt;
  &lt;credential name="Standard" accessKey="fb1af70a46057dbf4f2ff3f43b6ec0c544b22749" /&gt;
  &lt;credential name="Administrator" accessKey="b363d6ccb86ef1418a72f9fea4b96975d8a1f2c7" enableControlHub="true" enableDeveloperAccess="true" enableManagementAPI="true" /&gt;
&lt;/credentials&gt;</pre><p></p>
<p>Vous pouvez ensuite définir des <a href="/concepts/securite-accesskey-credential-authorization/#Les_Authorizations">autorisations</a> particulières sur un credential pour l’envoi de message, l’abonnement aux groupes de message ou encore l’interrogation de StateObject.</p>
<p>Pour cela il existe trois sous-sections :</p>
<ul>
<li>“<u>stateObjects</u>” : autorisations spécifiques pour l’interrogation (Request ou Subscribe) des StateObjects</li>
<li>“<u>messages</u>” : autorisations spécifiques pour l’envoi de messages</li>
<li>“<u>groups</u>” : autorisations spécifiques pour l’abonnement aux groupes</li>
</ul>
<h4>Les autorisations sur l’interrogation des StateObjects</h4>
<p>Par défaut un credential actif (<em>enable=true</em>) peut interroger (Request ou Subscribe) tous les StateObjects de votre Constellation sans restriction.</p>
<p>Pour modifier ce comportement vous pouvez utiliser les autorisation sur les StateObjects.</p>
<p>Par exemple :</p>
<p></p><pre class="crayon-plain-tag">&lt;credential name="Standard" accessKey="fb1af70a46057dbf4f2ff3f43b6ec0c544b22749"&gt;
  &lt;authorizations&gt;
    &lt;stateObjects defaultAuthorization="Deny"&gt;
      &lt;authorization id="Paradox" authorization="Allow" packageName="Paradox" /&gt;
      &lt;authorization id="MonPC" authorization="Allow" sentinelName="PC-SEB" /&gt;
      &lt;authorization id="LesCPU" authorization="Allow" packageName="HWMonitor" name="/intelcpu/load/0" /&gt;
      &lt;authorization id="ServerRAM" authorization="Allow" sentinelName="SERVER" packageName="HWMonitor" name="/ram/load" /&gt;
    &lt;/stateObjects&gt;
  &lt;/authorizations&gt;
&lt;/credential&gt;</pre><p></p>
<p>Ici le credential “Standard” ne pourra pas interroger les StateObjects de la Constellation (defaultAuthorization = Deny) sauf pour les exceptions suivantes :</p>
<ul>
<li>Les StateObjects produits par le(s) instance(s) du package “Paradox”</li>
<li>Les StateObjects produits par les packages (quel qu’il soit) de la sentinelle “PC-SEB”</li>
<li>Les StateObjects nommés “/intelcpu/load/0” et produits par le package “HWMonitor” peu importe la sentinelle</li>
<li>Le StateObject nommé “/ram/load” produit par le package “HWMonitor” sur la sentinelle “SERVER”</li>
</ul>
<p>Vous devez donc définir l’autorisation par défaut (defaultAuthorization) et optionnellement ajouter une ou plusieurs exceptions avec l’élément &lt;authorization&gt; dont les attributs sont les suivants :</p>
<ul>
<li>“<u>id</u>” (obligatoire) : identifiant unique de l’autorisation</li>
<li>“<u>authorization</u>” (facultatif &#8211; <em>Allow</em> par défaut) : type de l’exception (<em>Allow</em> ou <em>Deny</em>)</li>
<li>“<u>sentinelName</u>” (facultatif – <em>*</em> par défaut) : sentinelle producteur du StateObject</li>
<li>“<u>packageName</u>” (facultatif – <em>*</em> par défaut) : package producteur du StateObject</li>
<li>“<u>name</u>” (facultatif – <em>*</em> par défaut) :  nom du StateObject</li>
</ul>
<h4>Les autorisations sur l’envoi de messages</h4>
<p>Par défaut un credential actif (<em>enable=true</em>) peut envoyer un message à n’importe quel scope dans votre Constellation sans restriction.</p>
<p>Par exemple :</p>
<p></p><pre class="crayon-plain-tag">&lt;credential name="Standard" accessKey="fb1af70a46057dbf4f2ff3f43b6ec0c544b22749"&gt;
  &lt;authorizations&gt;
    &lt;messages defaultAuthorization="Deny"&gt;
      &lt;authorization id="GroupA" authorization="Allow" scope="Group" args="A" /&gt;
      &lt;authorization id="DemoSeb" authorization="Allow" scope="Package" args="DemoPackage" /&gt;
      &lt;authorization id="TemperatureNest" authorization="Allow" scope="Package" args="Nest" messageKey="SetTargetTemperature"  /&gt;
    &lt;/messages&gt;
  &lt;/authorizations&gt;
&lt;/credential&gt;</pre><p></p>
<p>Ici le credential “Standard” ne pourra pas envoyer de message dans la Constellation (defaultAuthorization = Deny) sauf pour les exceptions suivantes :</p>
<ul>
<li>Messages envoyés au groupe “A”</li>
<li>Messages envoyés au package “DemoPackage”</li>
<li>Message “SetTargetTemperature” envoyé au package “Nest”</li>
</ul>
<p>Vous devez donc définir l’autorisation par défaut (defaultAuthorization) et optionnellement ajouter une ou plusieurs exceptions avec l’élément &lt;authorization&gt; dont les attributs sont les suivants :</p>
<ul>
<li>“<u>id</u>” (obligatoire) : identifiant unique de l’autorisation</li>
<li>“<u>scope</u>” (obligatoire) : type de <a href="/concepts/messaging-message-scope-messagecallback-saga/#Message_Scope">scope</a> pour le message (<em>All</em>, <em>Group</em>, <em>Package</em> ou <em>Sentinel</em>)</li>
<li>“<u>authorization</u>” (facultatif &#8211; <em>Allow</em> par défaut) : type de l’exception (<em>Allow</em> ou <em>Deny</em>)</li>
<li>“<u>args</u>” (facultatif) : les arguments du scope</li>
<li>“<u>messageKey</u>” (facultatif) :  la clé du message</li>
</ul>
<h4>Les autorisation sur l’abonnement aux groupes</h4>
<p>Par défaut un credential actif (<em>enable=true</em>) peut s’abonner à n’importe quel groupe sans restriction.</p>
<p>Par exemple :</p>
<p></p><pre class="crayon-plain-tag">&lt;credential name="Standard" accessKey="fb1af70a46057dbf4f2ff3f43b6ec0c544b22749"&gt;
  &lt;authorizations&gt;
    &lt;groups defaultAuthorization="Deny"&gt;
      &lt;authorization groupName="A" /&gt;
    &lt;/groups&gt;
  &lt;/authorizations&gt;
&lt;/credential&gt;</pre><p></p>
<p>Ici le credential “Standard” ne pourra pas s’abonner à des groupes (defaultAuthorization = Deny) à l’exception du groupe “A”. Les attributs sont les suivants :</p>
<ul>
<li>“<u>groupName</u>” (obligatoire) : le nom du groupe</li>
<li>“<u>authorization</u>” (facultatif &#8211; <em>Allow</em> par défaut) : type de l’exception (<em>Allow</em> ou <em>Deny</em>)</li>
</ul>
<p>The post <a rel="nofollow" href="https://developer.myconstellation.io/constellation-platform/constellation-server/fichier-de-configuration/">Le fichier de configuration</a> appeared first on <a rel="nofollow" href="https://developer.myconstellation.io">Constellation</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://developer.myconstellation.io/constellation-platform/constellation-server/fichier-de-configuration/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Configuration du serveur Constellation en SSL</title>
		<link>https://developer.myconstellation.io/constellation-platform/constellation-server/configuration-ssl/</link>
					<comments>https://developer.myconstellation.io/constellation-platform/constellation-server/configuration-ssl/#respond</comments>
		
		<dc:creator><![CDATA[Sebastien Warin]]></dc:creator>
		<pubDate>Tue, 09 Aug 2016 12:56:36 +0000</pubDate>
				<category><![CDATA[Constellation Server]]></category>
		<category><![CDATA[Certificat]]></category>
		<category><![CDATA[IIS]]></category>
		<category><![CDATA[Configuration]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[SSL]]></category>
		<guid isPermaLink="false">https://developer.myconstellation.io/?p=2161</guid>

					<description><![CDATA[<p>Afin de sécuriser votre Constellation, il est recommandé d’utiliser un cryptage SSL pour les communications avec votre serveur Constellation. Vous pouvez soit exposer votre serveur Constellation derrière un reverse-proxy IIS, ngnix, Apache ou autre sur lequel vous activerez le cryptage SSL</p>
<p>The post <a rel="nofollow" href="https://developer.myconstellation.io/constellation-platform/constellation-server/configuration-ssl/">Configuration du serveur Constellation en SSL</a> appeared first on <a rel="nofollow" href="https://developer.myconstellation.io">Constellation</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Afin de sécuriser votre Constellation, il est recommandé d’utiliser un cryptage SSL pour les communications avec votre serveur Constellation.</p>
<p>Vous pouvez soit exposer votre serveur Constellation derrière un reverse-proxy <a href="/constellation-platform/constellation-server/exposer-constellation-derrire-un-serveur-web-reverse-proxy/">IIS</a>, <a href="/constellation-platform/constellation-server/exposer-constellation-en-https-derriere-un-reverse-proxy-avec-nginx-et-lets-encrypt/">ngnix</a>, Apache ou autre sur lequel vous activerez le cryptage SSL ou soit exposer Constellation directement en SSL.</p>
<p>Pour cette dernière option voici la procédure compatible seulement sur un serveur Windows. Si votre serveur Constellation est sous Linux, vous devez mettre en place un reverse proxy (avec <a href="/constellation-platform/constellation-server/exposer-constellation-derrire-un-serveur-web-reverse-proxy/">IIS</a> sur Windows ou <a href="/constellation-platform/constellation-server/exposer-constellation-en-https-derriere-un-reverse-proxy-avec-nginx-et-lets-encrypt/">ngnix</a> sur Linux) devant votre serveur Constellation.</p>
<h3>Etape 1 : créer un certificat SSL</h3>
<p>La première étape consiste à créer un certificat SSL portant le nom de l’URI de votre Constellation (par exemple <em>constellation.mondomaine.com</em>).</p>
<p>Plusieurs options :</p>
<ul>
<li>Créer un certificat auto-signé</li>
<li>Créer un certificat privé avec votre propre autorité de certification</li>
<li>Créer/acheter un certificat à une autorité de certification reconnue</li>
</ul>
<p>Dans le premier cas, il faudra installer ce certificat sur chaque poste client sous peine d’avoir des avertissements de sécurité.</p>
<p>Vous pouvez créer des certificats auto-signés depuis la <a href="https://www.sslshopper.com/article-how-to-create-a-self-signed-certificate-in-iis-7.html">console IIS</a>, <a href="http://windowsitpro.com/blog/creating-self-signed-certificates-powershell">Powershell</a> ou en ligne de commande avec l’utilitaire “<a href="https://www.jayway.com/2014/09/03/creating-self-signed-certificates-with-makecert-exe-for-development/">makecert</a>” sur Windows par exemple. Il existe également <a href="http://www.selfsignedcertificate.com/">des générateurs de certificats auto-signés en ligne</a>.</p>
<p>Si vous avez un domaine Active Directory avec une autorité de certification (ADCS) vous pouvez générer des certificats SSL depuis la console IIS (<a href="https://www.youtube.com/watch?v=DLH7G_3XD2w">voir ici</a>). Il faudra que chaque client de votre Constellation ait le certificat publique de votre autorité de certification (AC) pour fonctionner.</p>
<p>Autrement pour éviter ce type de prérequis, vous devez générer un certificat SSL signé par une véritable autorité de certification tel que GlobalSign, GeoTrust, Gandi, etc. Chez <a href="https://www.startssl.com/">StartCom</a> ou <a href="https://www.wosign.com/english/freessl.htm">WoSign</a>, les certificats SSL sont gratuits. Chez <a href="https://www.gandi.net/ssl">Gandi</a>, vous avez la première année offerte pour chaque domaine que vous commandez chez eux.</p>
<p>Pour finir il est aussi possible d&rsquo;utiliser Let&rsquo;s Encrypt pour générer gratuitement et à la demande des certificats SSL. Il est recommandé d&rsquo;utiliser ce type de certificat avec un reverse proxy pour simplifier le déploiement et le renouvellement. Consultez avec article <a href="/constellation-platform/constellation-server/exposer-constellation-en-https-derriere-un-reverse-proxy-avec-nginx-et-lets-encrypt/">exposer Constellation en SSL avec des certificats Let&rsquo;s Encrypt et Nginx</a>.</p>
<h3>Etape 2 : installer le certificat</h3>
<p>Sous Windows, vous devez ouvrir la MMC de gestion des certificats pour installer le certificat créé à l’étape 1.</p>
<p>Vous pouvez par exemple suivre ces guides :</p>
<ul>
<li><a title="https://fr.godaddy.com/help/iis-8-install-a-certificate-4951" href="https://fr.godaddy.com/help/iis-8-install-a-certificate-4951">https://fr.godaddy.com/help/iis-8-install-a-certificate-4951</a></li>
<li><a title="https://www.startssl.com/Support?v=31" href="https://www.startssl.com/Support?v=31">https://www.startssl.com/Support?v=31</a> (étape 9 à 12).</li>
</ul>
<h3>Etape 3 : lier le certificat à un port TCP</h3>
<p>Lorsque vous installer votre certificat dans la MMC lors de l’étape précédente, copiez l’empreinte (thumbprint) visible dans les propriétés de votre certificat.</p>
<p>Puis dans une invite de commande, entrez la commande suivante :</p>
<p></p><pre class="crayon-plain-tag">netsh http add sslcert ipport=0.0.0.0:XXX appid={12345678-db90-4b66-8b01-88f7af2e36bf} certhash=yyy</pre><p></p>
<p>Vous devez remplacer “XXX” par le port TCP que vous souhaitez utiliser pour exposer Constellation en SSL et “YYY” par le thumbprint de votre certificat SSL.</p>
<h3>Etape 4 : configurer Constellation</h3>
<p>Pour finir éditez le fichier de configuration Constellation (<em>Constellation.Server.exe.config</em>) et ajoutez une “listenUri” sur le port défini dans l’étape précédente.</p>
<p>Par exemple, configurons Constellation pour écouter en HTTP sur le port par défaut 8088 et en HTTPS (SSL) sur le port 8089 :</p>
<p></p><pre class="crayon-plain-tag">&lt;listenUris&gt;
  &lt;uri listenUri="http://+:8088/" /&gt;
  &lt;uri listenUri="https://+:8089/" /&gt;
&lt;/listenUris&gt;</pre><p></p>
<p>The post <a rel="nofollow" href="https://developer.myconstellation.io/constellation-platform/constellation-server/configuration-ssl/">Configuration du serveur Constellation en SSL</a> appeared first on <a rel="nofollow" href="https://developer.myconstellation.io">Constellation</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://developer.myconstellation.io/constellation-platform/constellation-server/configuration-ssl/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Exposer Constellation en HTTPS derrière un reverse proxy avec Nginx et Let&#8217;s Encrypt</title>
		<link>https://developer.myconstellation.io/constellation-platform/constellation-server/exposer-constellation-en-https-derriere-un-reverse-proxy-avec-nginx-et-lets-encrypt/</link>
					<comments>https://developer.myconstellation.io/constellation-platform/constellation-server/exposer-constellation-en-https-derriere-un-reverse-proxy-avec-nginx-et-lets-encrypt/#respond</comments>
		
		<dc:creator><![CDATA[Sebastien Warin]]></dc:creator>
		<pubDate>Wed, 25 Apr 2018 08:11:01 +0000</pubDate>
				<category><![CDATA[Constellation Server]]></category>
		<category><![CDATA[Routeur]]></category>
		<category><![CDATA[Configuration]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[SSL]]></category>
		<category><![CDATA[Constellation]]></category>
		<category><![CDATA[Proxy]]></category>
		<category><![CDATA[Reverse Proxy]]></category>
		<category><![CDATA[Certificat]]></category>
		<category><![CDATA[TCP]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[HTTPS]]></category>
		<guid isPermaLink="false">https://developer.myconstellation.io/?p=5890</guid>

					<description><![CDATA[<p>Pour sécuriser votre Constellation vous devez utilise le protocole HTTPS afin de chiffrer toutes les communications en SSL. Si vous avez un serveur Windows, vous pouvez également utiliser IIS pour configurer un reverse proxy vers Constellation. Dans cet article nous</p>
<p>The post <a rel="nofollow" href="https://developer.myconstellation.io/constellation-platform/constellation-server/exposer-constellation-en-https-derriere-un-reverse-proxy-avec-nginx-et-lets-encrypt/">Exposer Constellation en HTTPS derrière un reverse proxy avec Nginx et Let&rsquo;s Encrypt</a> appeared first on <a rel="nofollow" href="https://developer.myconstellation.io">Constellation</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Pour sécuriser votre Constellation vous devez utilise le protocole HTTPS afin de chiffrer toutes les communications en SSL.</p>
<p><img loading="lazy" class="alignnone size-full wp-image-3796 aligncenter colorbox-5890" src="https://developer.myconstellation.io/wp-content/uploads/2016/08/ssl.jpg" alt="" width="253" height="189" /></p>
<p>Si vous avez un serveur Windows, vous pouvez également <a href="/constellation-platform/constellation-server/exposer-constellation-derrire-un-serveur-web-reverse-proxy/">utiliser IIS pour configurer un reverse proxy</a> vers Constellation.</p>
<p>Dans cet article nous allons découvrir comment exposer le serveur Constellation derrière un serveur Nginx protégé avec un certificat SSL Let’s Encrypt.</p>
<h3>Prérequis : avoir une Constellation exposée publiquement avec un nom DNS</h3>
<p>Avant de démarrer vous devez avoir un serveur Constellation opérationel.</p>
<p>Si vous installez Constellation sur un Linux, cela se résume à lancer la commande ci-dessous et à suivre l&rsquo;assistant :</p>
<p></p><pre class="crayon-plain-tag">wget -O install.sh https://developer.myconstellation.io/download/installers/install-linux.sh &amp;&amp; chmod +x install.sh &amp;&amp; ./install.sh</pre><p></p>
<p>Pour plus d’information, veuillez suivre le guide : <a href="/constellation-platform/constellation-server/installer-constellation-sur-linux/">Installer Constellation sur Linux.</a></p>
<p>On considéra à ce stade que votre serveur Constellation est démarré et opérationnel. Vous pouvez lancer la commande suivante pour vérifier le statut des services Constellation :</p>
<p></p><pre class="crayon-plain-tag">sudo supervisorctl status</pre><p></p>
<p>Vous devriez voir le “<em>constellation-server</em>” avec le statut “RUNNING” (et la sentinelle si déployée) :</p>
<p></p><pre class="crayon-plain-tag">sebastien@ubuntu:~$ sudo supervisorctl status
constellation-sentinel           RUNNING   pid 1194, uptime 1 day, 17:36:48
constellation-server             RUNNING   pid 2888, uptime 1 day, 15:06:41</pre><p></p>
<p>Vous pouvez également installer Constellation sur un système Windows (voir <a href="/getting-started/installer-constellation/">le guide</a>).</p>
<p>En effet, le reverse proxy (ici Ngnix) qui sera installé sur un système Linux peut exposer un service tel que Constellation quelque soit le serveur sur lequel il est déployé. Le reverse proxy n&rsquo;est pas nécessairement sur la même machine sur le ou les services à exposer.</p>
<p>Il est donc possible d&rsquo;installer un serveur Linux avec Nginx pour exposer en SSL un serveur Constellation sur un système Windows de la même manière que nous pouvons installer un serveur <a href="/constellation-platform/constellation-server/exposer-constellation-derrire-un-serveur-web-reverse-proxy/">Windows avec IIS</a> pour exposer en SSL un serveur Constellation sur un système Linux !</p>
<p>Dans ce guide nous avons installer le serveur Constellation et le reverse proxy Nginx sur le même serveur, sous Linux Ubuntu 16.</p>
<p>Si vous souhaitez activer le HTTPS et donc ajouter un certificat SSL, vous devez nécessairement avoir un nom DNS qui pointe vers l’adresse IP (public) de votre serveur de reverse proxy.</p>
<p>Plusieurs options s&rsquo;offre à vous :</p>
<ul>
<li>Si vous avez un nom de domaine, modifiez votre zone DNS pour ajouter un “host” (enregistrement A ou AAAA) vers l’adresse IP (public) de votre Constellation.</li>
<li>SI vous n’avez pas de nom de domaine :
<ul>
<li>Achetez-en un ! Comptez environ 15€/an pour les extensions standards (.fr, .net, .com), 2,99€ HT par an pour  un <a href="https://www.ovh.com/fr/domaines/" target="_blank" rel="noopener noreferrer">.ovh</a></li>
<li>Utilisez un service de “Dynamic DNS” comme dyndns.fr, dyn.com ou autre</li>
<li>Certains FAI comme Free proposent d&rsquo;attacher un nom DNS type xxxx.hd.free.fr à votre IP de connexion</li>
<li>Certains NAS comme Synology permettent aussi de créer un DDNS type xxx.synology.me vers votre IP de connexion</li>
</ul>
</li>
</ul>
<p>Dans le cas présent, j’ai crée l’entrée DNS “demo.internal.myconstellation.io” qui pointe vers l’adresse IP public du serveur Constellation installé sur un Ubuntu (le DNS doit pointer votre le serveur où sera installé le reverse proxy dans la mesure où tout passera par lui. Etant donné que le reverse proxy sera sur le même serveur que le service Constellation on peut dire que le DNS pointe vers le serveur Constellation).</p>
<p>Bien évidement, si votre serveur est installé dernière un routeur avec du NAT (typiquement sur un réseau local derrière une box Internet) vous devez configurer la redirection de port sur votre routeur/box internet.</p>
<p>Encore une fois, on part du principe que le serveur de R.P et Constellation sont sur le même serveur, donc la même IP interne.</p>
<p>Dans un premier temps redirigez seulement le port 8088 en tcp sur l’IP interne de votre serveur Constellation. A noter que nous supprimerons cette redirection une fois le reverse proxy installé.</p>
<p>Donc pour résumer et avant de démarrer, vous devez avoir votre serveur Constellation démarré répondant sur l’URL : <a href="http://&lt;mon_nom_dns&gt;:8088">http://&lt;mon_nom_dns&gt;:8088</a></p>
<p>Dans mon cas : <a href="http://demo.internal.myconstellation.io:8088">http://demo.internal.myconstellation.io:8088</a> :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2018/04/image-1.png"><img class="colorbox-5890"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="Serveur Constellation sur un nom DNS" src="https://developer.myconstellation.io/wp-content/uploads/2018/04/image_thumb.png" alt="Serveur Constellation sur un nom DNS" width="484" height="291" border="0" /></a></p>
<p>Voilà vous êtes prêt, votre Constellation est démarrée et elle répond bien sur un nom DNS public depuis l&rsquo;internet.</p>
<h3>Exposer Constellation derrière Nginx</h3>
<p>Avant de démarrer il est recommandé de mettre à jour le référentiel du gestionnaire de package par la commande suivante :</p>
<p></p><pre class="crayon-plain-tag">sudo apt-get update</pre><p></p>
<p>Ensuite installez le serveur Web Nginx avec la commande :</p>
<p></p><pre class="crayon-plain-tag">sudo apt-get install nginx</pre><p></p>
<p>Les fichiers de configuration sont situés dans le répertoire “<em>/etc/nginx/sites-available/</em>” et pour les activer on crée un lien symbolique vers ces fichiers dans le répertoire “<em>/etc/nginx/sites-enabled</em>”.</p>
<p>Pour commencer désactivez la configuration par défaut par la commande ci-dessous :</p>
<p></p><pre class="crayon-plain-tag">sudo rm /etc/nginx/sites-enabled/default</pre><p></p>
<p>Comme vous l’aurez compris le contenu de cette configuration par défaut est toujours présente dans le répertoire “<em>/etc/nginx/sites-available/</em>” mais non activée car on a supprimé le lien symbolique vers ce fichier dans le répertoire “<em>site-enabled</em>”.</p>
<p>Maintenant nous allons créer une configuration pour notre reverse proxy avec la commande :</p>
<p></p><pre class="crayon-plain-tag">sudo nano /etc/nginx/sites-available/constellation</pre><p></p>
<p>Dans ce fichier, copiez le contenu suivant :</p>
<p></p><pre class="crayon-plain-tag">server {
    listen 80; listen [::]:80;
    server_name demo.internal.myconstellation.io;

    location / {
        proxy_pass http://localhost:8088;

        set $content_length_safe $http_content_length;
        if ($content_length_safe = "") {
            set $content_length_safe 0;
        }
        proxy_set_header Content-Length $content_length_safe;

        proxy_set_header Host $host;
        proxy_set_header Connection "";
        proxy_http_version 1.1;

        proxy_buffering off;
        proxy_cache off;
        proxy_connect_timeout 30;
        proxy_send_timeout 30;
        proxy_read_timeout 150;
    }
}</pre><p></p>
<p>Vous devez modifier le paramètre “<em>server_name</em>” avec le nom DNS de votre serveur Constellation, dans le cas présent “demo.internal.myconstellation.io”.</p>
<p>Il est important de bien reprendre les mêmes options, notamment le “<em>proxy_buffering</em>” pour permettre les “<em>server-Sent events</em>” vers le serveur Constellation.</p>
<p>Dans le cas présent Nginx va « proxifer » les requêtes vers <em>http://localhost:8088</em>, c&rsquo;est à dire au service Constellation (port 8088) installé sur le même serveur (localhost).</p>
<p>Tapez ensuite sur la combinaison de touches “Ctrl+X” pour quitter en prenant suivant d’enregistrer le fichier. Puis, pour activer cette configuration, créez le lien symbolique suivant :</p>
<p></p><pre class="crayon-plain-tag">sudo ln -s /etc/nginx/sites-available/constellation  /etc/nginx/sites-enabled/constellation</pre><p></p>
<p>Avant de redémarrer Nginx, éditez le fichier de configuration global pour augmenter la taille maximale des requêtes entrantes afin de pouvoir uploader des packages Constellation sur le serveur (par défaut cette taille est fixée à 1Mo, autrement dit vous obtiendrez une erreur 413 « Request Entity Too Large » si vous tentez d&rsquo;uploader un package de plus de 1Mo).</p>
<p></p><pre class="crayon-plain-tag">sudo nano /etc/nginx/nginx.conf</pre><p></p>
<p>Sous la section « http », ajoutez l&rsquo;option « <strong>client_max_body_size</strong> » (ou si l&rsquo;option existe déjà, modifiez sa valeur) que nous fixerons à 100 Méga :</p>
<p></p><pre class="crayon-plain-tag">client_max_body_size 100M;</pre><p></p>
<p>Pour finir, rechargez Nginx afin prendre en compte notre nouvelle configuration :</p>
<p></p><pre class="crayon-plain-tag">sudo systemctl reload nginx</pre><p></p>
<p>Votre Constellation est maintenant accessible derrière Nginx sur le port 80.</p>
<p>Rendez-vous donc sur l’adresse http://&lt;votre_nom_dns&gt; (sans spécifier le port, car 80 par défaut) pour vérifier que le reverse proxy est opérationnel. Dans le cas présent <a href="http://demo.internal.myconstellation.io">http://demo.internal.myconstellation.io</a></p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2018/04/image-2.png"><img class="colorbox-5890"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" src="https://developer.myconstellation.io/wp-content/uploads/2018/04/image_thumb-1.png" alt="image" width="484" height="290" border="0" /></a></p>
<p align="left">Ce n’est donc plus Constellation qui répond mais notre serveur Nginx qui lui même communique avec le serveur Constellation local.</p>
<p align="left">Donc pour résumer, sur le port 80 c&rsquo;est le serveur Nginx qui répond en transférant au serveur Constellation sur le port 8088.</p>
<p><span style="text-decoration: underline;">Note</span> : si vous êtes dernière un routeur avec du NAT, n’oubliez pas d’ajouter la redirection du port 80 vers votre serveur Constellation interne. Par la même occasion vous pouvez supprimer la redirection du port 8088, ainsi tout passera nécessairement par Nginx.</p>
<h3>Activer le HTTPS avec des certificats SSL Let’s Encrypt</h3>
<p>Maintenant que votre service Constellation est exposé dernière le serveur Nginx vous allez pouvoir configurer différentes choses sur Nginx comme par exemple des restrictions d&rsquo;accès , l’authentification, des limites (throttling) et bien d’autre chose. Dans le cas présent on va s’intéresser au support du SSL.</p>
<p>Pour activer le HTTPS, il vous faut un certificat SSL. Pour simplifier la démarche, Let’s Encrypt est une autorité de certification lancée en 2015 qui permet d’automatiser la génération de certificat. De plus le service est gratuit ! Les certificats sont valides trois mois, il faudra donc régulièrement les renouveler mais vous allez voir que cette action est entièrement automatisable.</p>
<p>Ici nous allons utiliser <a href="https://certbot.eff.org/" target="_blank" rel="noopener noreferrer">Certbot</a>, un agent installé sur le serveur qui permet de générer et renouveler automatiquement les certificats SSL Let’s Encrypt.</p>
<p>Commencez par ajouter le repository suivant :</p>
<p></p><pre class="crayon-plain-tag">sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update</pre><p></p>
<p>Ensuite installez Certbot pour Nginx :</p>
<p></p><pre class="crayon-plain-tag">sudo apt-get install python-certbot-nginx</pre><p></p>
<p>Une fois installé, lancez la commande “<em>certbot –nginx</em>” en spécifiant le nom DNS vers votre serveur. Dans le cas présent :</p>
<p></p><pre class="crayon-plain-tag">sudo certbot --nginx -d demo.internal.myconstellation.io</pre><p></p>
<p>L’assistant vous demandera tout d’abord votre adresse mail :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2018/04/image-3.png"><img class="colorbox-5890"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" src="https://developer.myconstellation.io/wp-content/uploads/2018/04/image_thumb-2.png" alt="image" width="484" height="100" border="0" /></a></p>
<p>Après avoir accepté les conditions du service, l’assistant va automatiquement valider un challenge en interrogeant votre site Web (d’où la nécessité d’avoir exposé correctement votre serveur sur Internet avec le nom DNS spécifié), créer le certificat SSL et l&rsquo;ajouter dans votre configuration Nginx.</p>
<p>Pour finir l’assistant vous proposera de modifier automatiquement la configuration de votre Nginx pour rediriger tous les appels HTTP (port 80) vers HTTPS (port 443).</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2018/04/image-4.png"><img class="colorbox-5890"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="Activation de la redirection HTTPS" src="https://developer.myconstellation.io/wp-content/uploads/2018/04/image_thumb-3.png" alt="Activation de la redirection HTTPS" width="484" height="438" border="0" /></a></p>
<p>Choisissiez l’option 2 pour activer cette redirection.</p>
<p>Et voilà, votre serveur Nginx est configuré avec le certificat SSL généré par Let’s Encrypt et toutes les requêtes seront redirigés en HTTPS et donc chiffrés !</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2018/04/image-5.png"><img class="colorbox-5890"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" src="https://developer.myconstellation.io/wp-content/uploads/2018/04/image_thumb-4.png" alt="image" width="484" height="108" border="0" /></a></p>
<p align="left"><strong>Votre Constellation est maintenant protégée !</strong></p>
<p align="left">Rechargez la page dans votre navigateur (F5) sur l’URL <em>http://&lt;mon_nom_dns&gt;</em> vous constaterez la redirection automatique en <em>https://</em> et le cadenas vert vous informant du chiffrement SSL :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2018/04/image-6.png"><img class="colorbox-5890"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="Constellation en HTTPS" src="https://developer.myconstellation.io/wp-content/uploads/2018/04/image_thumb-5.png" alt="Constellation en HTTPS" width="484" height="290" border="0" /></a></p>
<p align="left">(Note : pour les personnes derrières un NAT, n’oubliez pas non plus d&rsquo;ajouter la redirection du port 443 vers votre serveur Nginx interne)</p>
<p align="left">Pour vérifier le bon renouvellement du certificat vous pouvez utiliser la commande suivante :</p>
<p></p><pre class="crayon-plain-tag">sudo certbot renew --dry-run</pre><p></p>
<p align="left">Certbot a automatiquement installé un trigger dans systemd (ou crontab selon le système) pour réaliser le renouvellement et déploiement automatique de vos certificats avant leurs expirations.</p>
<p align="left">Pour les plus curieux, vous pouvez jeter un œil dans le fichier “<em>/etc/nginx/sites-available/constellation</em>” pour voir les modifications apportées par Certbot.</p>
<h3>Pour aller plus loin</h3>
<h4>Sécuriser le serveur avec un firewall UFW et fail2ban</h4>
<h5>Installer fail2ban</h5>
<p><a href="http://fail2ban.sourceforge.net/">Fail2ban</a> est un script tournant en tâche de fond qui va vérifier si les tentatives d&rsquo;authentification SSH et Nginx; et en cas d&rsquo;attaque, bannir l&rsquo;IP grâce à <code>iptables</code>.</p>
<p></p><pre class="crayon-plain-tag">sudo apt-get install fail2ban</pre><p></p>
<p>Pour plus d’info:  <a title="https://www.digitalocean.com/community/tutorials/how-to-protect-an-nginx-server-with-fail2ban-on-ubuntu-14-04" href="https://www.digitalocean.com/community/tutorials/how-to-protect-an-nginx-server-with-fail2ban-on-ubuntu-14-04">https://www.digitalocean.com/community/tutorials/how-to-protect-an-nginx-server-with-fail2ban-on-ubuntu-14-04</a></p>
<h5>Installer UFW</h5>
<p>UFW est un firewall applicatif. Pour l’installer :</p>
<p></p><pre class="crayon-plain-tag">sudo apt-get install ufw</pre><p></p>
<p>Autorisez ensuite les services HTTP (nécessaire pour le challenge Let’s Encrypt), HTTPS (notre reverse proxy Nginx vers Constellation) et SSH :</p>
<p></p><pre class="crayon-plain-tag">sudo ufw allow http
sudo ufw allow https
sudo ufw allow ssh</pre><p></p>
<p>Pour l’activer :</p>
<p></p><pre class="crayon-plain-tag">sudo ufw enable</pre><p></p>
<p>Votre serveur Linux ne répondra plus que sur les ports 22 (ssh), 80 (http), 443 (https) en IPv4 et IPv6.</p>
<p></p><pre class="crayon-plain-tag">sebastien@ubuntu:~$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
80                         ALLOW       Anywhere
443                        ALLOW       Anywhere
22                         ALLOW       Anywhere
80 (v6)                    ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)
22 (v6)                    ALLOW       Anywhere (v6)</pre><p></p>
<p>Vous noterez que le port 8088 n&rsquo;est maintenant plus accessible car bloqué par le firewall UFW. Il faudra forcement se connecter à Constellation via Nginx en HTTPS. N’oubliez pas alors de modifier l’URI de votre Constellation sur vos sentinelles existantes pour prendre en compte ce changement.</p>
<h4>Ajouter d’autre application Web dernière votre reverse proxy SSL</h4>
<p>Jusqu&rsquo;au présent vous avez configuré un nom DNS type “demo.internal.myconstellation.io” qui pointe vers votre serveur Linux sur lequel le service Nginx répond en HTTP (80) et HTTPS (443) avec un certificat Let’s Encrypt pour “proxifier” les requêtes vers le service Constellation accessible localement sur le port 8088.</p>
<p>Vos utilisateurs se connectent donc forcement en HTTPS sur le reverse proxy pour accéder à Constellation !</p>
<p>La règle configurée dans Ngnix “proxifie” toutes les requêtes à partir de la racine « / » vers Constellation :</p>
<p></p><pre class="crayon-plain-tag">location / {
        proxy_pass http://localhost:8088;
....
}</pre><p></p>
<p>Mais il est également possible d’adapter cette règle pour que votre reverse proxy ne soit plus exclusivement un passe-plat pour Constellation mais aussi pour vos autres services internes (une box domotique, un serveur Web, un objet connecté, une camera IP, etc…).</p>
<p>Vous aurez ainsi la possibilité d’exposer différents services Web internes dernière votre reverse proxy profitant d’un même port TCP (le 443) et donc d’un même canal de communication sécurisé (par le cryptage SSL).</p>
<p>Parmi les différentes options pour ce type de configuration :</p>
<ol>
<li>Reverse proxy en fonction du “server_name”</li>
<li>Reverse proxy en fonction de la “location”</li>
</ol>
<h5>Reverse Proxy en fonction du server_name</h5>
<p>Le principe est de rejouer ce tutoriel depuis le début pour chacune de vos applications à exposer.</p>
<p>Vous devrez ainsi créer une adresse DNS vers votre IP public pour chaque site, créer une configuration Nginx en changeant le « <em>server_name</em> » et « <em>proxy_pass</em> » vers la ressource interne à exposer et créer un certificat SSL avec Certbot pour tous vos sites créés.</p>
<p>Vous aurez ainsi une multitude de nom DNS qui pointerons tous vers votre serveur Nginx qui lui redirigera vers les ressources internes en fonction du « server_name ». Par exemple “constellation.mondomaine.fr”, “macamera.mondomaine.fr”, “jeedom.mondomaine.fr”, etc.. etc..</p>
<p>La configuration est simple car il s’agit de répéter ce tutoriel pour chaque service, par contre l’administration est un peu lourde et vous aurez autant de sous domaine et donc de certificat que de service à exposer.</p>
<h5>Reverse Proxy en fonction de la “location”</h5>
<p>Dans ce mode, nous gardons un seul site Nginx (celui configuré dans le fichier <em>/etc/nginx/sites-available/constellation</em>) et donc un seul nom de domaine (ici <em>demo.internal.myconstellation.io</em>) avec son certificat associé.</p>
<p>Cependant au lieu de “rediriger” les requêtes depuis la racine « / » vers Constellation nous allons créer plusieurs “location”.</p>
<p>Prenons un exemple pour bien comprendre. Ici le serveur Ngnix est installé sur la même que le serveur Constellation, donc localhost. Imaginons que dans ce même réseau LAN, j’ai par exemple un serveur ZoneMinder qui répond sur 192.168.0.10 et une box Jeedom sur 192.168.0.11.</p>
<p>Je pourrais éditer la configuration Nginx de cette façon :</p>
<p></p><pre class="crayon-plain-tag">location /constellation/ {
        proxy_pass http://localhost:8088/constellation/;

        proxy_set_header Host $host;
        proxy_set_header Connection "";
        proxy_http_version 1.1;

        proxy_buffering off;
        proxy_cache off;
        proxy_connect_timeout 30;
        proxy_send_timeout 30;
    }
    
    
location /zm/ {
        proxy_pass <a href="http://192.168.0.10/zm/;">http://192.168.0.10/zm/;

</a>        proxy_set_header Host $host;
        proxy_set_header Connection "";
        proxy_http_version 1.1;
    }
    
location /jeedom/ {
        proxy_pass http://192.168.0.11;

        proxy_set_header Host $host;
        proxy_set_header Connection "";
        proxy_http_version 1.1;
    }</pre><p></p>
<p>Ainsi, en fonction du “path” demandé, un service différent me répondra :</p>
<ul>
<li><a href="https://&lt;mon_nom_DNS&gt;/constellation">https://&lt;mon_nom_DNS&gt;/constellation</a> : réponse du serveur Constellation</li>
<li><a href="https://&lt;mon_nom_DNS&gt;/zm">https://&lt;mon_nom_DNS&gt;/zm</a>  : réponse du serveur ZoneMinder</li>
<li><a href="https://&lt;mon_nom_DNS&gt;/jeedom">https://&lt;mon_nom_DNS&gt;/jeedom</a> : réponse du serveur Jeedom</li>
</ul>
<p><u>Attention</u> : si le serveur Constellation répond sur un “sous path”, comme ici “/constellation” il faut également modifier la configuration du serveur Constellation pour l’informer.</p>
<p>Pour cela modifiez le ficher “<em>/opt/constellation-server/Constellation.Server.exe.config</em>” :</p>
<p></p><pre class="crayon-plain-tag">sudo nano /opt/constellation-server/Constellation.Server.exe.config</pre><p></p>
<p>Et modifier le <em>listenUri</em> pour reprendre la même structure d’URI, ici en ajoutant “/constellation” :</p>
<p></p><pre class="crayon-plain-tag">&lt;listenUris&gt;
    &lt;uri listenUri="http://+:8088/constellation" /&gt;
&lt;/listenUris&gt;</pre><p></p>
<p>Pour finir, il faudra relancer le service Constellation pour prendre en compte ce changement :</p>
<p></p><pre class="crayon-plain-tag">sudo supervisorctl restart constellation-server</pre><p></p>
<p>Voilà votre Constellation répond maintenant sur le /constellation, dans notre cas <a title="https://demo.internal.myconstellation.io/constellation" href="https://demo.internal.myconstellation.io/constellation">https://demo.internal.myconstellation.io/constellation</a> :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2018/04/image-7.png"><img class="colorbox-5890"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="Constellation derrière Nginx" src="https://developer.myconstellation.io/wp-content/uploads/2018/04/image_thumb-6.png" alt="Constellation derrière Nginx" width="484" height="290" border="0" /></a></p>
<p align="left">Si maintenant on change le path pour “/zm” soit ici <a href="https://demo.internal.myconstellation.io/zm">https://demo.internal.myconstellation.io/zm</a>, c’est notre serveur ZoneMinder qui répondra :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2018/04/image-8.png"><img class="colorbox-5890"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="ZoneMinder derrière Nginx" src="https://developer.myconstellation.io/wp-content/uploads/2018/04/image_thumb-7.png" alt="ZoneMinder derrière Nginx" width="484" height="290" border="0" /></a></p>
<p>On a donc un seul serveur en frontal, Ngnix qui écoute en HTTPS avec le certificat Let’s Encrypt pour sécuriser TOUS les échanges et qui, selon le “path” demandé, transféra les requêtes vers les différents services internes de votre réseau.</p>
<p>A noter que vous pouvez également utiliser des expressions régulières (regex) pour définir vos “locations”. Pour plus d’information : <a title="https://www.scalescale.com/tips/nginx/nginx-location-directive/" href="https://www.scalescale.com/tips/nginx/nginx-location-directive/">https://www.scalescale.com/tips/nginx/nginx-location-directive/</a></p>
<p>The post <a rel="nofollow" href="https://developer.myconstellation.io/constellation-platform/constellation-server/exposer-constellation-en-https-derriere-un-reverse-proxy-avec-nginx-et-lets-encrypt/">Exposer Constellation en HTTPS derrière un reverse proxy avec Nginx et Let&rsquo;s Encrypt</a> appeared first on <a rel="nofollow" href="https://developer.myconstellation.io">Constellation</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://developer.myconstellation.io/constellation-platform/constellation-server/exposer-constellation-en-https-derriere-un-reverse-proxy-avec-nginx-et-lets-encrypt/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Exposer Constellation en HTTPS derrière un reverse proxy avec IIS et Let’s Encrypt</title>
		<link>https://developer.myconstellation.io/constellation-platform/constellation-server/exposer-constellation-derrire-un-serveur-web-reverse-proxy/</link>
					<comments>https://developer.myconstellation.io/constellation-platform/constellation-server/exposer-constellation-derrire-un-serveur-web-reverse-proxy/#respond</comments>
		
		<dc:creator><![CDATA[Sebastien Warin]]></dc:creator>
		<pubDate>Tue, 09 Aug 2016 14:17:31 +0000</pubDate>
				<category><![CDATA[Constellation Server]]></category>
		<category><![CDATA[IIS]]></category>
		<category><![CDATA[Configuration]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[Reverse Proxy]]></category>
		<guid isPermaLink="false">https://developer.myconstellation.io/?p=2183</guid>

					<description><![CDATA[<p>Pour assurer un maximum de sécurité et ajouter des fonctionnalités (SSL, authentification basic/windows/ssl, filtrage, ou autre) vous  pouvez exposer votre serveur Constellation derrière un serveur proxy (reverse-proxy) tel que IIS, Apache, nginx ou autre. Nous allons voir ici comment configurer</p>
<p>The post <a rel="nofollow" href="https://developer.myconstellation.io/constellation-platform/constellation-server/exposer-constellation-derrire-un-serveur-web-reverse-proxy/">Exposer Constellation en HTTPS derrière un reverse proxy avec IIS et Let’s Encrypt</a> appeared first on <a rel="nofollow" href="https://developer.myconstellation.io">Constellation</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Pour assurer un maximum de sécurité et ajouter des fonctionnalités (SSL, authentification basic/windows/ssl, filtrage, ou autre) vous  pouvez exposer votre serveur Constellation derrière un serveur proxy (reverse-proxy) tel que IIS, Apache, <a href="/constellation-platform/constellation-server/exposer-constellation-en-https-derriere-un-reverse-proxy-avec-nginx-et-lets-encrypt/">nginx</a> ou autre.</p>
<p>Nous allons voir ici comment configurer un serveur Microsoft IIS en tant que reverse proxy pour Constellation. Vous pouvez également réaliser <a href="/constellation-platform/constellation-server/exposer-constellation-en-https-derriere-un-reverse-proxy-avec-nginx-et-lets-encrypt/">le reverse proxy avec nginx</a> notamment si vous êtes sur un système Linux.</p>
<h3>Etape 1 : installer ARR et URL Rewrite</h3>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/08/image-2.png"><img class="colorbox-2183"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="IIS" src="https://developer.myconstellation.io/wp-content/uploads/2016/08/image_thumb-2.png" alt="IIS" width="354" height="192" border="0" /></a></p>
<p>Pour commencer, en utilisant le “Web Platform Installer”, installez :</p>
<ul>
<li>Application Request Routing 3.0</li>
<li>URL Rewrite 2.0</li>
</ul>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/08/image-3.png"><img class="colorbox-2183"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Installation des modules IIS" src="https://developer.myconstellation.io/wp-content/uploads/2016/08/image_thumb-3.png" alt="Installation des modules IIS" width="354" height="243" border="0" /></a></p>
<h3 align="left">Etape 2 : créer un site Web IIS</h3>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/08/image-4.png"><img class="colorbox-2183"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="IIS Web Site" src="https://developer.myconstellation.io/wp-content/uploads/2016/08/image_thumb-4.png" alt="IIS Web Site" width="354" height="192" border="0" /></a></p>
<p align="left">Toujours depuis la Console IIS, créez un site web IIS. Configurez le binding et les autres options de votre choix (port d’écoute, SSL ou non, authentification, restriction d’IP, filtrage, etc..).</p>
<p>C’est ce site Web IIS qui devra être exposé sur Internet et qui sera le point d’entrée vers votre Constellation.</p>
<h3>Etape 3 : configurer la règle de reverse proxy</h3>
<p>Créez le fichier “web.config” dans le répertoire de votre site Web créé à l’étape précédente avec le contenu suivant :</p>
<p></p><pre class="crayon-plain-tag">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;configuration&gt;
    &lt;system.webServer&gt;
        &lt;rewrite&gt;
            &lt;rules&gt;
                &lt;clear /&gt;
                &lt;rule name="Constellation on my private server" stopProcessing="true"&gt;
                    &lt;match url="^constellation/(.*)" /&gt;
                    &lt;conditions logicalGrouping="MatchAll" trackAllCaptures="false" /&gt;
                    &lt;action type="Rewrite" url="http://myprivateserver.mynetwork.lan:8088/{R:1}" /&gt;
                &lt;/rule&gt;
            &lt;/rules&gt;
        &lt;/rewrite&gt;
    &lt;/system.webServer&gt;
&lt;/configuration&gt;</pre><p></p>
<p>Dans cet exemple toutes requêtes qui commence par “constellation/” seront “rewritées” vers le serveur local “myprivateserver.mynetwork.lan:8888”.</p>
<h3>Etape 4 : activer le HTTPS</h3>
<p>Vous pouvez depuis le gestionnaire IIS ajouter des certificat SSL pour activer le HTTPS sur votre site IIS et donc exposer votre Constellation dans un canal sécurisé.</p>
<p>Pour utiliser des certificats SSL Let&rsquo;s Encrypt, téléchargez et installez <a href="https://certifytheweb.com/">Certify SSL Manager</a>. Vous pourrez alors ajouter un certificat SSL en quelques clics à votre site IIS avec gestion automatique du renouvellement.</p>
<p>The post <a rel="nofollow" href="https://developer.myconstellation.io/constellation-platform/constellation-server/exposer-constellation-derrire-un-serveur-web-reverse-proxy/">Exposer Constellation en HTTPS derrière un reverse proxy avec IIS et Let’s Encrypt</a> appeared first on <a rel="nofollow" href="https://developer.myconstellation.io">Constellation</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://developer.myconstellation.io/constellation-platform/constellation-server/exposer-constellation-derrire-un-serveur-web-reverse-proxy/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Editer la configuration Constellation depuis Visual Studio</title>
		<link>https://developer.myconstellation.io/constellation-platform/constellation-sdk/editer-configuration-constellation-depuis-visual-studio/</link>
					<comments>https://developer.myconstellation.io/constellation-platform/constellation-sdk/editer-configuration-constellation-depuis-visual-studio/#respond</comments>
		
		<dc:creator><![CDATA[Sebastien Warin]]></dc:creator>
		<pubDate>Tue, 09 Aug 2016 12:54:56 +0000</pubDate>
				<category><![CDATA[Constellation SDK]]></category>
		<category><![CDATA[Configuration]]></category>
		<category><![CDATA[SDK]]></category>
		<guid isPermaLink="false">https://developer.myconstellation.io/?p=2157</guid>

					<description><![CDATA[<p>Pour éditer la configuration de votre Constellation depuis Visual Studio cliquer sur l’icone : Vous retrouvez aussi ce bouton dans le menu contextuel (clique-droit) sur un projet Constellation: Par défaut, Visual Studio ouvrira le fichier de configuration du serveur Constellation</p>
<p>The post <a rel="nofollow" href="https://developer.myconstellation.io/constellation-platform/constellation-sdk/editer-configuration-constellation-depuis-visual-studio/">Editer la configuration Constellation depuis Visual Studio</a> appeared first on <a rel="nofollow" href="https://developer.myconstellation.io">Constellation</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Pour éditer la configuration de votre Constellation depuis Visual Studio cliquer sur l’icone <a href="https://developer.myconstellation.io/wp-content/uploads/2016/09/image-98.png"><img class="colorbox-2157"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="image" src="https://developer.myconstellation.io/wp-content/uploads/2016/09/image_thumb-93.png" alt="image" width="23" height="26" border="0" /></a> :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/09/image-99.png"><img class="colorbox-2157"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="image" src="https://developer.myconstellation.io/wp-content/uploads/2016/09/image_thumb-94.png" alt="image" width="350" height="98" border="0" /></a></p>
<p align="left">Vous retrouvez aussi ce bouton dans le menu contextuel (clique-droit) sur un projet Constellation:</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/09/image-100.png"><img class="colorbox-2157"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="image" src="https://developer.myconstellation.io/wp-content/uploads/2016/09/image_thumb-95.png" alt="image" width="354" height="306" border="0" /></a></p>
<p>Par défaut, Visual Studio ouvrira le fichier de configuration du serveur Constellation enregistré si il n’y en a qu’un. Autrement un fenêtre vous invitera à sélectionner le serveur Constellation à utiliser :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/09/image-105.png"><img class="colorbox-2157"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" src="https://developer.myconstellation.io/wp-content/uploads/2016/09/image_thumb-100.png" alt="image" width="350" height="89" border="0" /></a></p>
<p>Pour gérer les serveurs Constellation dans Visual Studio, <a href="/constellation-platform/constellation-sdk/gerer-connexions-constellation/">consultez cet article</a>.</p>
<p>Une fois la configuration de votre serveur Constellation ouverte dans Visual Studio, vous pouvez l&rsquo;éditer comme bon vous semble :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/09/image-102.png"><img class="colorbox-2157"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="image" src="https://developer.myconstellation.io/wp-content/uploads/2016/09/image_thumb-97.png" alt="image" width="350" height="190" border="0" /></a></p>
<p align="left">Vous disposerez de l’auto-complétion et de la validation du schéma de votre configuration :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/09/image-103.png"><img class="colorbox-2157"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="image" src="https://developer.myconstellation.io/wp-content/uploads/2016/09/image_thumb-98.png" alt="image" width="350" height="120" border="0" /></a></p>
<p align="left">Lorsque vous enregistrez ce fichier, Visual Studio vous proposera d’uploader le fichier modifié sur votre Constellation :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/09/image-106.png"><img class="colorbox-2157"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" src="https://developer.myconstellation.io/wp-content/uploads/2016/09/image_thumb-101.png" alt="image" width="350" height="210" border="0" /></a></p>
<p align="left">Vous pourrez également ordonner le rechargement de votre nouvelle configuration sur votre serveur :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/09/image-107.png"><img class="colorbox-2157"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" src="https://developer.myconstellation.io/wp-content/uploads/2016/09/image_thumb-102.png" alt="image" width="350" height="158" border="0" /></a></p>
<p align="left">Ici, si vous ouvrez la Console Constellation vous pourrez observer vos modifications :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/09/image-108.png"><img class="colorbox-2157"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" src="https://developer.myconstellation.io/wp-content/uploads/2016/09/image_thumb-103.png" alt="image" width="350" height="190" border="0" /></a></p>
<p>The post <a rel="nofollow" href="https://developer.myconstellation.io/constellation-platform/constellation-sdk/editer-configuration-constellation-depuis-visual-studio/">Editer la configuration Constellation depuis Visual Studio</a> appeared first on <a rel="nofollow" href="https://developer.myconstellation.io">Constellation</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://developer.myconstellation.io/constellation-platform/constellation-sdk/editer-configuration-constellation-depuis-visual-studio/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Gérer les packages avec la Console Constellation</title>
		<link>https://developer.myconstellation.io/constellation-platform/constellation-console/gerer-packages-avec-la-console-constellation/</link>
					<comments>https://developer.myconstellation.io/constellation-platform/constellation-console/gerer-packages-avec-la-console-constellation/#respond</comments>
		
		<dc:creator><![CDATA[Sebastien Warin]]></dc:creator>
		<pubDate>Fri, 19 Aug 2016 15:31:54 +0000</pubDate>
				<category><![CDATA[Constellation Console]]></category>
		<category><![CDATA[Virtuel]]></category>
		<category><![CDATA[Package]]></category>
		<category><![CDATA[Settings]]></category>
		<category><![CDATA[Configuration]]></category>
		<category><![CDATA[Credential]]></category>
		<category><![CDATA[group]]></category>
		<category><![CDATA[Console]]></category>
		<guid isPermaLink="false">https://developer.myconstellation.io/?p=2404</guid>

					<description><![CDATA[<p>Dans le menu principal de gauche, cliquez sur “Packages”. Vous obtiendrez alors l’ensemble des instances de package déployées dans votre Constellation : Pour chaque package (réel) vous avez en temps réel : Le statut : Starting : package en cours</p>
<p>The post <a rel="nofollow" href="https://developer.myconstellation.io/constellation-platform/constellation-console/gerer-packages-avec-la-console-constellation/">Gérer les packages avec la Console Constellation</a> appeared first on <a rel="nofollow" href="https://developer.myconstellation.io">Constellation</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p align="left">Dans le menu principal de gauche, cliquez sur “Packages”. Vous obtiendrez alors l’ensemble des instances de package déployées dans votre Constellation :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/08/image-45.png"><img class="colorbox-2404"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="image" src="https://developer.myconstellation.io/wp-content/uploads/2016/08/image_thumb-34.png" alt="image" width="450" height="249" border="0" /></a></p>
<p align="left">Pour chaque package (réel) vous avez en temps réel :</p>
<ul>
<li>
<div align="left">Le statut :</div>
<ul>
<li>
<div align="left">Starting : package en cours de démarrage</div>
</li>
<li>
<div align="left">Started : package démarré et en cours de fonctionnement</div>
</li>
<li>
<div align="left">Stopping : package en cours d’arrêt</div>
</li>
<li>
<div align="left">Stopped : package arrêté</div>
</li>
</ul>
</li>
<li>
<div align="left">L’état de connexion qui indique si le package est bien connecté au serveur</div>
</li>
<li>
<div align="left">La date de la dernière activité (il s’agit de la date de la dernière modification du statut)</div>
</li>
<li>
<div align="left">La consommation en CPU et RAM sur la sentinelle sur lequel le package est démarré</div>
</li>
<li>
<div align="left">Des informations quant à la version du package et de la librairie Constellation utilisée par le package</div>
</li>
</ul>
<p align="left">En fonction de l’état du package le bouton d’action permettra de démarrer le package (Start) et de l’arrêter (Stop).</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/08/image-48.png"><img class="colorbox-2404"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="image" src="https://developer.myconstellation.io/wp-content/uploads/2016/08/image_thumb-37.png" alt="image" width="450" height="99" border="0" /></a></p>
<p align="left">Comme sur les autres pages de la Console, vous avez un menu contextuel pour chaque package vous permettant de contrôler le package, d’éditer sa configuration ou ses settings, etc.</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/08/image-47.png"><img class="colorbox-2404"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="image" src="https://developer.myconstellation.io/wp-content/uploads/2016/08/image_thumb-36.png" alt="image" width="200" height="338" border="0" /></a></p>
<p align="left">La fenêtre d’information permet de retrouver toutes les informations sur le statut du package :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/08/image-46.png"><img class="colorbox-2404"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="image" src="https://developer.myconstellation.io/wp-content/uploads/2016/08/image_thumb-35.png" alt="image" width="450" height="223" border="0" /></a></p>
<p align="left">Notez également que vous avez la possibilité de filtrer dans la liste des packages soit avec la zone de texte ou soit en cliquant sur le bouton “Show filters” afin de filtrer le type de package (réel ou virtuel), l&rsquo;état de connexion (connecté ou non) et l&rsquo;état activé/désactivé. Par défaut tous les packages sont affichés à l’exception des packages marqués “Désactivé” (<em>Enable=false</em>).</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/08/image-49.png"><img class="colorbox-2404"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="image" src="https://developer.myconstellation.io/wp-content/uploads/2016/08/image_thumb-38.png" alt="image" width="450" height="62" border="0" /></a></p>
<h3 align="left">Contrôler un package</h3>
<p align="left">Pour pouvez pour chaque package le démarrer ou l’arrêter avec le bouton d’action sur la droite ou depuis le menu contextuel.</p>
<p align="left">Vous pouvez également redémarrer le package (restart) c’est à dire demander à la sentinelle de stopper le package (si il est “Started”)  puis de le démarrer.</p>
<p align="left">Vous pouvez aussi faire un rechargement du package : “reload”. Cette action fonctionne comme un “restart” mais force la sentinelle à (re)télécharger le package du “Package Repository” du serveur. Cela permet de déployer les mises à jours de vos packages : vous envoyez la nouvelle version de votre package sur votre serveur Constellation puis vous faites un “reload” afin de reforcer les sentinelles à redémarrer le package avec sa nouvelle version.</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/08/image-50.png"><img class="colorbox-2404"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="image" src="https://developer.myconstellation.io/wp-content/uploads/2016/08/image_thumb-39.png" alt="image" width="350" height="80" border="0" /></a></p>
<p align="left">Pour finir vous pouvez également “pousser” les settings vers un package en cas de modification (sans avoir à redémarrer le package).</p>
<h3>Editer la configuration d’un package</h3>
<p>Pour chaque package (réel ou virtuel) vous pouvez saisir le nom de l’instance (seulement lors de la création) et le credential utilisé pour la connexion du package. Vous pouvez également définir si le package est activé ou non.</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/08/image-51.png"><img class="colorbox-2404"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" src="https://developer.myconstellation.io/wp-content/uploads/2016/08/image_thumb-40.png" alt="image" width="350" height="219" border="0" /></a></p>
<p align="left">S&rsquo;il s’agit d’un package réel, vous pouvez définir si le package doit démarré automatiquement lorsque la sentinelle se démarre et vous pouvez également redéfinir les <a href="/constellation-platform/constellation-server/fichier-de-configuration/#Section_recoveryOptions">options de récupération</a> :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/08/image-52.png"><img class="colorbox-2404"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" src="https://developer.myconstellation.io/wp-content/uploads/2016/08/image_thumb-41.png" alt="image" width="350" height="472" border="0" /></a></p>
<h3>Editer les settings d’un package</h3>
<p>Il s’agit des paramètres propre au package (<a href="/constellation-platform/constellation-server/fichier-de-configuration/#Les_parametres_de_configuration">voir ici</a>).</p>
<p>Pour chaque package vous définir autant de variable de configuration (= une clé et une valeur) que vous désirez en cliquant sur le bouton “Add new setting” :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/08/image-53.png"><img class="colorbox-2404"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" src="https://developer.myconstellation.io/wp-content/uploads/2016/08/image_thumb-42.png" alt="image" width="350" height="274" border="0" /></a></p>
<p align="left">Dans le cas d’un package dit “réel” il est grandement recommandé de déclarer les settings utilisés par le package dans son manifeste : <a href="/concepts/package-manifest/#Informations_sur_les_Settings_du_package">voir ici</a>.</p>
<p align="left">Cette déclaration permet à la Console Constellation de connaitre les settings obligatoires ou non, le type de chaque setting, la description et valeur par défaut.</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/08/image-54.png"><img class="colorbox-2404"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" src="https://developer.myconstellation.io/wp-content/uploads/2016/08/image_thumb-43.png" alt="image" width="263" height="180" border="0" /></a> <a href="https://developer.myconstellation.io/wp-content/uploads/2016/08/image-55.png"><img class="colorbox-2404"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" src="https://developer.myconstellation.io/wp-content/uploads/2016/08/image_thumb-44.png" alt="image" width="241" height="180" border="0" /></a></p>
<h3>Editer les groupes d’un package</h3>
<p>Pour <a href="/concepts/messaging-message-scope-messagecallback-saga/">rappel</a>, un message peut être envoyé à un (ou plusieurs) groupe qui regroupe des packages ou des consommateurs. Chaque package ou consommateur peut joindre un groupe depuis les API mais vous pouvez également définir ces liens d’appartenance au niveau de la <a href="/constellation-platform/constellation-server/fichier-de-configuration/#Les_groupes">configuration du serveur</a>.</p>
<p>Pour cela, cliquez sur “Group membership” dans le menu contextuel d’un page et définissez les groupes dont fait partie votre package :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/08/image-56.png"><img class="colorbox-2404"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" src="https://developer.myconstellation.io/wp-content/uploads/2016/08/image_thumb-45.png" alt="image" width="350" height="204" border="0" /></a></p>
<h3>Déployer un package</h3>
<p>Pour déployer un package, vous avez plusieurs solutions :</p>
<ul>
<li>Cliquez sur le bouton “Deploy new package” depuis la page “Packages”</li>
<li>Cliquez sur le bouton “Deploy new package” dans le menu contextuel d&rsquo;une sentinelle sur la page « Sentinels »</li>
<li>Utiliser la page “Package Repository”</li>
</ul>
<p>Depuis la page des Packages, cliquez sur le bouton “Deploy new package” en haut à gauche  :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/08/image-57.png"><img class="colorbox-2404"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" src="https://developer.myconstellation.io/wp-content/uploads/2016/08/image_thumb-46.png" alt="image" width="240" height="130" border="0" /></a></p>
<p align="left">Vous obtiendrez alors une pop-in vous permettant de sélectionner la sentinelle sur laquelle déployer et le package à déployer :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/08/image-58.png"><img class="colorbox-2404"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" src="https://developer.myconstellation.io/wp-content/uploads/2016/08/image_thumb-47.png" alt="image" width="350" height="115" border="0" /></a></p>
<p align="left">S&rsquo;il s’agit d’un page virtuel, sélectionnez “Virtual package” (voir ci-dessous) sinon sélectionner un package présent dans votre “Package repository”.</p>
<p align="left">Vous serez alors guidé dans les étapes de configuration du package.</p>
<p align="left"><u>Note</u> : par défaut le champ “Package file” est nul, c’est à dire que le fichier à utiliser pour votre instance sera déterminé dynamiquement (<a href="/concepts/instance-package-versioning-et-resolution/">lire ici</a>).</p>
<p align="left">Dans le cas où une instance est déjà présente sur la sentinelle vous serez obligé de définir un autre nom et donc de spécifier le “Package file”.</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/08/image-59.png"><img class="colorbox-2404"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" src="https://developer.myconstellation.io/wp-content/uploads/2016/08/image_thumb-48.png" alt="image" width="350" height="89" border="0" /></a></p>
<p align="left">Par exemple, ici je pourrais nommer cette nouvelle instance “HWMonitor2” en utilisant le fichier “HWMonitor”.</p>
<p align="left">Veuillez lire ceci pour bien comprendre le <a href="/concepts/instance-package-versioning-et-resolution/">mécanisme de résolution</a>.</p>
<h3>Les packages virtuels</h3>
<p>Comme <a href="/concepts/sentinels-packages-virtuels/">expliqué ici</a>, un package virtuel n’est pas réel dans le sens où ce n’est pas un processus lancé et supervisé par une sentinelle.</p>
<p>De ce fait, dans la Console, vous n’aurez aucun information remontée à son sujet.</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/08/image-60.png"><img class="colorbox-2404"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" src="https://developer.myconstellation.io/wp-content/uploads/2016/08/image_thumb-49.png" alt="image" width="350" height="147" border="0" /></a></p>
<p align="left">Vous pouvez seulement les déclarer ou supprimer, les associer à des credenitals, gérer l’appartenance aux groupes ou bien sûr gérer les settings.</p>
<p>The post <a rel="nofollow" href="https://developer.myconstellation.io/constellation-platform/constellation-console/gerer-packages-avec-la-console-constellation/">Gérer les packages avec la Console Constellation</a> appeared first on <a rel="nofollow" href="https://developer.myconstellation.io">Constellation</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://developer.myconstellation.io/constellation-platform/constellation-console/gerer-packages-avec-la-console-constellation/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Le Configuration Editor</title>
		<link>https://developer.myconstellation.io/constellation-platform/constellation-console/configuration-editor/</link>
					<comments>https://developer.myconstellation.io/constellation-platform/constellation-console/configuration-editor/#respond</comments>
		
		<dc:creator><![CDATA[Sebastien Warin]]></dc:creator>
		<pubDate>Fri, 23 Sep 2016 14:51:06 +0000</pubDate>
				<category><![CDATA[Constellation Console]]></category>
		<category><![CDATA[Configuration]]></category>
		<category><![CDATA[Console]]></category>
		<guid isPermaLink="false">https://developer.myconstellation.io/?p=2838</guid>

					<description><![CDATA[<p>L’éditeur de configuration intégré à la Console Constellation permet d’éditer le fichier de configuration de votre serveur Constellation directement depuis votre navigateur Web. Pour plus d’information sur le fichier de configuration, n&#8217;hésitez pas à lire ou relire cet article. Vous pouvez</p>
<p>The post <a rel="nofollow" href="https://developer.myconstellation.io/constellation-platform/constellation-console/configuration-editor/">Le Configuration Editor</a> appeared first on <a rel="nofollow" href="https://developer.myconstellation.io">Constellation</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>L’éditeur de configuration intégré à la Console Constellation permet d’éditer le fichier de configuration de votre serveur Constellation directement depuis votre navigateur Web.</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/09/image-67.png"><img class="colorbox-2838"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" src="https://developer.myconstellation.io/wp-content/uploads/2016/09/image_thumb-65.png" alt="image" width="350" height="191" border="0" /></a></p>
<p>Pour plus d’information sur le <a href="/constellation-platform/constellation-server/fichier-de-configuration/">fichier de configuration</a>, n&rsquo;hésitez pas à lire ou relire <a href="/constellation-platform/constellation-server/fichier-de-configuration/">cet article</a>.</p>
<p>Vous pouvez mettre l’éditeur en plein écran avec le bouton F11.</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/09/image-68.png"><img class="colorbox-2838"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" src="https://developer.myconstellation.io/wp-content/uploads/2016/09/image_thumb-66.png" alt="image" width="350" height="198" border="0" /></a></p>
<p align="left">L’éditeur dispose d’un système d’auto-complétion assez simple sur base du schéma du fichier de configuration :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/09/image-69.png"><img class="colorbox-2838"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" src="https://developer.myconstellation.io/wp-content/uploads/2016/09/image_thumb-67.png" alt="image" width="350" height="149" border="0" /></a></p>
<p align="left">Vous trouverez sur l’éditeur trois boutons :</p>
<ul>
<li>
<div align="left">Get Config : permettant d’ouvrir la dernière version du serveur</div>
</li>
<li>
<div align="left">Save Config : permettant d’enregistrer la configuration en cours d’édition sur le serveur (raccourci : Ctrl+S)</div>
</li>
<li>
<div align="left">Save &amp; Deploy : permettant d’enregistrer la configuration en cours d’édition sur le serveur puis d’appliquer (déployer) la configuration dans la Constellation</div>
</li>
</ul>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/09/image-70.png"><img class="colorbox-2838"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" src="https://developer.myconstellation.io/wp-content/uploads/2016/09/image_thumb-68.png" alt="image" width="350" height="122" border="0" /></a></p>
<p>Le fait de déployer la configuration informe tous les packages et les sentinelles de votre Constellation de la nouvelle configuration. C’est en déployant la configuration que les sentinelles vont déployer les nouveaux packages ajoutés ou au contraire fermer les packages supprimés, etc.</p>
<p>The post <a rel="nofollow" href="https://developer.myconstellation.io/constellation-platform/constellation-console/configuration-editor/">Le Configuration Editor</a> appeared first on <a rel="nofollow" href="https://developer.myconstellation.io">Constellation</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://developer.myconstellation.io/constellation-platform/constellation-console/configuration-editor/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Les différents hubs et interfaces REST du serveur Constellation</title>
		<link>https://developer.myconstellation.io/concepts/les-differents-hubs-et-interfaces-rest-du-serveur-constellation/</link>
					<comments>https://developer.myconstellation.io/concepts/les-differents-hubs-et-interfaces-rest-du-serveur-constellation/#respond</comments>
		
		<dc:creator><![CDATA[Sebastien Warin]]></dc:creator>
		<pubDate>Fri, 12 Aug 2016 14:19:15 +0000</pubDate>
				<category><![CDATA[Concepts]]></category>
		<category><![CDATA[Consumer]]></category>
		<category><![CDATA[Controller]]></category>
		<category><![CDATA[Package]]></category>
		<category><![CDATA[Hub]]></category>
		<category><![CDATA[Sentinel]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[HTTPS]]></category>
		<category><![CDATA[Configuration]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[REST]]></category>
		<guid isPermaLink="false">https://developer.myconstellation.io/?p=2279</guid>

					<description><![CDATA[<p>Le serveur Constellation est accessible en HTTP ou HTTPS sur une ou plusieurs URIs. Il héberge des hubs et des interfaces HTTP/REST. De plus il peut également héberger des fichiers statiques en configurant le “fileServer” ce qui permet par exemple</p>
<p>The post <a rel="nofollow" href="https://developer.myconstellation.io/concepts/les-differents-hubs-et-interfaces-rest-du-serveur-constellation/">Les différents hubs et interfaces REST du serveur Constellation</a> appeared first on <a rel="nofollow" href="https://developer.myconstellation.io">Constellation</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Le serveur Constellation est accessible en HTTP ou <a href="/constellation-platform/constellation-server/configuration-ssl/">HTTPS</a> sur <a href="/constellation-platform/constellation-server/fichier-de-configuration/#Section_listenUris">une ou plusieurs URIs</a>.</p>
<p>Il héberge des hubs et des interfaces HTTP/REST. De plus il peut également héberger des fichiers statiques en configurant le “<a href="/constellation-platform/constellation-server/fichier-de-configuration/#Section_fileServer">fileServer</a>” ce qui permet par exemple l’auto-hébergement de la console Constellation (<a href="/constellation-platform/constellation-server/fichier-de-configuration/#Section_fileServer">plus d’info ici</a>).</p>
<p>Les hubs Constellation sont basés sur la technologie SignalR permettant d&rsquo;exposer des canaux de communication bi-directionnels et temps réel en HTTP long-polling, server-event ou WebSocket en fonction des capacités du client.</p>
<p>Les interfaces HTTP/REST sont en fait des contrôleurs WebAPI exposant des méthodes en HTTP/REST. Les interfaces HTTP/REST permettent d’exposer des fonctionnalités de Constellation de manière très simple pour les devices ou frameworks ne pouvant supporter SignalR.</p>
<p>Il existe 4 hubs :</p>
<ul>
<li>Constellation</li>
<li>Consumer</li>
<li>Controller</li>
<li>Sentinel</li>
</ul>
<p>Ainsi que 3 interfaces HTTP/REST :</p>
<ul>
<li>Constellation</li>
<li>Consumer</li>
<li>Management</li>
</ul>
<p>Le hub et l’interface HTTP “Constellation” sont utilisés par les packages Constellation (réels ou virtuels). Ils exposent des méthodes pour écrire des logs, pour récupérer les settings, pour publier ou interroger des StateObjects, envoyer ou recevoir des messages, etc…</p>
<p>Le hub et l’interface HTTP “Consumer” sont utilisés par les “consommateurs”. Par exemple une page Web est un consommateur, c’est à dire qu’elle se connecte à Constellation pour interroger des StateObjects ou envoyer/recevoir des messages mais elle n’est pas un package (son cycle de vie est lié au navigateur du client). Un “consommateur” ne peut pas produire des logs, avoir de settings ou encore publier des StateObjects.</p>
<p>Le hub “Controller” expose des méthodes pour contrôler la Constellation comme arrêter/démarrer des packages, s’abonner et récupérer en temps réel les logs des packages de la Constellation, propager les changements de configuration dans la Constellation, suivre les états et consommation des ressources des packages, etc… Ce hub est notamment utilisé par la Console Constellation pour vous fournir une interface de pilotage de votre Constellation. Pour pouvez également vous connecter et exploiter les fonctionnalités de contrôle de <a href="/client-api/javascript-api/controler-constellation-api-javascript/">vos pages Web</a> ou <a href="/client-api/net-package-api/controlmanager/">packages .NET</a>.</p>
<p>Le hub “Sentinel” est un hub privé réservé aux sentinelles de la Constellation. C’est sur ce hub que les sentinelles s’enregistrent, remontent les états des packages qu’elles supervisent, etc…</p>
<p>Enfin l’interface HTTP “Management” aussi nommée “Management API” est une API HTTP/REST de management du serveur permettant la gestion des sentinelles, des packages, des settings, des credentials, etc… Cette API est notamment utilisée par la Console Constellation pour vous fournir une interface d&rsquo;administration de votre Constellation.</p>
<p>The post <a rel="nofollow" href="https://developer.myconstellation.io/concepts/les-differents-hubs-et-interfaces-rest-du-serveur-constellation/">Les différents hubs et interfaces REST du serveur Constellation</a> appeared first on <a rel="nofollow" href="https://developer.myconstellation.io">Constellation</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://developer.myconstellation.io/concepts/les-differents-hubs-et-interfaces-rest-du-serveur-constellation/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Instance de package, package, versioning, multi-instances et résolution des packages</title>
		<link>https://developer.myconstellation.io/concepts/instance-package-versioning-et-resolution/</link>
					<comments>https://developer.myconstellation.io/concepts/instance-package-versioning-et-resolution/#respond</comments>
		
		<dc:creator><![CDATA[Sebastien Warin]]></dc:creator>
		<pubDate>Thu, 11 Aug 2016 12:27:29 +0000</pubDate>
				<category><![CDATA[Concepts]]></category>
		<category><![CDATA[Instance]]></category>
		<category><![CDATA[Package]]></category>
		<category><![CDATA[Manifest]]></category>
		<category><![CDATA[PackageInfo.xml]]></category>
		<category><![CDATA[Sentinel]]></category>
		<category><![CDATA[Configuration]]></category>
		<guid isPermaLink="false">https://developer.myconstellation.io/?p=2246</guid>

					<description><![CDATA[<p>Un package est une application avec ou sans une interface graphique qu’on déploie et exécute sur une sentinelle de votre Constellation (plus d’information ici). Concrètement un package est un fichier ZIP qui contient un exécutable (exe) qui sera exécuté et</p>
<p>The post <a rel="nofollow" href="https://developer.myconstellation.io/concepts/instance-package-versioning-et-resolution/">Instance de package, package, versioning, multi-instances et résolution des packages</a> appeared first on <a rel="nofollow" href="https://developer.myconstellation.io">Constellation</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Un package est une application avec ou sans une interface graphique qu’on déploie et exécute sur une sentinelle de votre Constellation (<a href="/concepts/architecture-constellation-sentinel-package/#Les_packages">plus d’information ici</a>).</p>
<p>Concrètement un package est un fichier ZIP qui contient un exécutable (exe) qui sera exécuté et supervisé par une sentinelle.</p>
<h3>Sentinel + Package = Instance de package</h3>
<p>Par défaut, Constellation va utiliser le package dont le nom est celui de l’instance que vous déclarez dans la <a href="/constellation-platform/constellation-server/fichier-de-configuration/">configuration</a>.</p>
<p>Par exemple, pour déployer le package “HWMonitor” sur la sentinelle nommée “SENTINEL-DEMO”, on écrira dans le <a href="/constellation-platform/constellation-server/fichier-de-configuration/">fichier de configuration</a> :</p>
<p></p><pre class="crayon-plain-tag">&lt;sentinel name="SENTINEL-DEMO" credential="Standard"&gt;
    &lt;packages&gt;    
      &lt;package name="HWMonitor"&gt;&lt;/package&gt;
    &lt;/packages&gt;
&lt;/sentinel&gt;</pre><p></p>
<p>L’attribut “name” du package est le <strong>nom de l’instance</strong> du package. On parlera alors de l’instance “SENTINEL-DEMO/HWMonitor” pour identifier de manière unique l’instance de ce package dans une Constellation.</p>
<p>Lors du déploiement, <strong>Constellation va analyser chaque package dans son repository pour récupérer celui dont le nom déclaré son </strong><a href="/concepts/package-manifest/"><strong>manifeste</strong></a><strong> correspond</strong> au nom de notre instance.</p>
<p>Dans le cas où il ne trouve aucun package dont le <a href="/concepts/package-manifest/">manifeste</a> déclare le nom de package recherché, il va tenter de sélectionner le package à partir du fichier “&lt;nom d’instance&gt;.zip”. Si ce fichier n’existe pas alors une erreur sera levée dans les logs de la Constellation.</p>
<p>Dans notre cas, Constellation va analyser chaque package de son repository (c’est à dire chaque fichier .ZIP) pour récupérer celui qui a dans son <a href="/concepts/package-manifest/">manifeste</a> (<em>PackageInfo.xml</em>) déclaré la propriété “Name” à “HWMonitor”. Si il ne le trouve pas, il va tenter de récupérer le package par le nom de fichier “HWMonitor.zip”.</p>
<h3>Versioning des packages</h3>
<p>En plus du nom du package, le <a href="/concepts/package-manifest/">manifeste</a> (<em>PackageInfo.xml</em>) déclare également d’autre information comme la version du package.</p>
<p>Le “Package Repository” d’un serveur Constellation peut donc contenir plusieurs versions d’un même package.</p>
<p>Par exemple, imaginez les packages suivants stockés dans le “Package Repository” de votre serveur Constellation :</p>
<ul>
<li>HWMonitor.zip (avec dans le manifeste: Name=”HWMonitor” et Version=”1.0”)</li>
<li>HWMonitor-1.1.zip (avec dans le manifeste: Name=”HWMonitor” et Version=”1.1”)</li>
<li>HWMonitor-1.2.zip (avec dans le manifeste: Name=”HWMonitor” et Version=”1.2”)</li>
</ul>
<p><u>Note</u> : la nomenclature des noms des fichiers dans le repository n’a aucune importance.</p>
<p>Si dans votre <a href="/constellation-platform/constellation-server/fichier-de-configuration/">fichier de configuration</a> vous déclarez simplement la ligne suivante :</p>
<p></p><pre class="crayon-plain-tag">&lt;package name="HWMonitor"&gt;&lt;/package&gt;</pre><p></p>
<p>Constellation trouvera donc 3 packages qui correspondent (car l&rsquo;attribut name=”HWMonitor” dans les trois packages). Dans ce cas, le serveur <strong>Constellation va sélectionner le package dont la version est la plus haute</strong>.</p>
<p>Ainsi dans cet exemple, c’est le package “HWMonitor-1.2.zip” qui sera déployé sur la sentinelle pour l’instance “HWMonitor”.</p>
<h3>Résolution explicite du fichier d’un package</h3>
<p>Jusqu’à présent la règle est donc d’utiliser le fichier dont le nom du package (d&rsquo;après son manifeste) correspond au nom de l’instance déclarée (package “HWMonitor &lt;&gt; instance “HWMonitor”) et si plusieurs fichiers correspondent on sélectionne la version la plus haute. A contrario, si aucun fichier n’est trouvé, on tente d’utiliser le fichier “&lt;nom d’instance&gt;.zip”.</p>
<p>C’est donc une résolution “implicite” du fichier du package qui est réalisée par le serveur Constellation.</p>
<p>Toutefois il est possible de contourner ce comportement et de<strong> définir explicitement le fichier d’un package à utiliser grâce à l’attribut “filename”</strong>.</p>
<p>Si dans votre <a href="/constellation-platform/constellation-server/fichier-de-configuration/">fichier de configuration</a> vous déclarez la ligne suivante :</p>
<p></p><pre class="crayon-plain-tag">&lt;package name="HWMonitor" filename="HWMonitor-1.1.zip"&gt;&lt;/package&gt;</pre><p></p>
<p>Vous définissez explicitement que cette instance nommée “HWMonitor” utilisera le package contenu dans le fichier “HWMonitor-1.1.zip”. On peut donc forcer l’utilisation d’une version spécifique en déclarant explicitement le fichier à utiliser pour une instance d’un package.</p>
<p>On aurait aussi pu écrire :</p>
<p></p><pre class="crayon-plain-tag">&lt;package name="HWMonitor" filename="DemoPackage.zip"&gt;&lt;/package&gt;</pre><p></p>
<p>C’est à dire qu’on déclare une instance d’un package nommée “HWMonitor” utilisant le package contenu dans le fichier “DemoPackage.zip”, ce qui n’a pas de sens mais est tout à fait possible !</p>
<p>Ainsi pour résumer, <strong>Constellation utilise donc en priorité le fichier défini par l’attribut “filename”</strong>. Dans le cas contraire on applique la règle implicite définie précédement.</p>
<h3>Instances multiples d’un même package</h3>
<p>Avec cet attribut “filename” il devient possible de déployer plusieurs instances d’un même package sur une même sentinelle tant que le nom d&rsquo;instance est différent.</p>
<p>Prenez la configuration suivante :</p>
<p></p><pre class="crayon-plain-tag">&lt;sentinel name="SENTINEL-DEMO" credential="Standard"&gt;
    &lt;packages&gt;    
      &lt;package name="HWMonitor1" filename="HWMonitor.zip"&gt;&lt;/package&gt;
      &lt;package name="HWMonitor2" filename="HWMonitor.zip"&gt;&lt;/package&gt;
   &lt;/packages&gt;
&lt;/sentinel&gt;</pre><p></p>
<p>Dans cet exemple, on a deux instances du package “HWMonitor.zip” qui seront déployées sur “SENTINEL-DEMO”.</p>
<p>Ces instances “SENTINEL-DEMO/HWMonitor1” et “SENTINEL-DEMO/HWMonitor2” sont deux instances différentes dans votre Constellation et peuvent avoir des configuration (settings) différentes mais elles sont basées sur le même code, car elles partagent la même source (le package “HWMonitor.zip”).</p>
<p><strong>Vous pouvez donc déployer le même package plusieurs fois sur une même sentinelle en déclarant plusieurs instances (name) du même package (filename)</strong>.</p>
<h3>Résolution semi-implicite / semi-explicite d’un package</h3>
<p>Le problème des instances multiples est que vous déclarez explicitement le fichier (filename) à utiliser.</p>
<p>Dans l’exemple précèdent “SENTINEL-DEMO/HWMonitor1” et “SENTINEL-DEMO/HWMonitor2” sont des instances du même package “HWMonitor.zip” qui d’après les exemples précédents correspond à la version “1.0” du package “HWMonitor”.</p>
<p>Toujours d’après les exemples précédents, on dispose également de la version 1.1 et 1.2 de ce package dans le « Package Repository »  (fichiers HWMonitor-1.1.zip et HWMonitor-1.2.zip).</p>
<p>Pour mettre à jour ces deux instances (“SENTINEL-DEMO/HWMonitor1” et “SENTINEL-DEMO/HWMonitor2”) vers une version plus récente, disons la version 1.2, il faudra modifier à la fois l’attribut “filename” de l’instance “HWMonitor1” mais également celui de l&rsquo;instance de “HWMonitor2”.</p>
<p>Ce qui revient à écrire :</p>
<p></p><pre class="crayon-plain-tag">&lt;sentinel name="SENTINEL-DEMO" credential="Standard"&gt;
    &lt;packages&gt;    
      &lt;package name="HWMonitor1" filename="HWMonitor-1.2.zip"&gt;&lt;/package&gt;
      &lt;package name="HWMonitor2" filename="HWMonitor-1.2.zip"&gt;&lt;/package&gt;
   &lt;/packages&gt;
&lt;/sentinel&gt;</pre><p></p>
<p>Pour éviter cela, il y a un “mode intermédiaire” qu’on pourrait nommer résolution “semi-implicite” ou “semi-explicite” car il s’agit d’un mixte de ces deux modes !</p>
<p>Pour l’utiliser, <strong>il suffit d’omettre l’extension “.zip” dans l’attribut “filename”</strong>.</p>
<p>Dans notre exemple, déclarez simplement :</p>
<p></p><pre class="crayon-plain-tag">&lt;sentinel name="SENTINEL-DEMO" credential="Standard"&gt;
    &lt;packages&gt;    
      &lt;package name="HWMonitor1" filename="HWMonitor"&gt;&lt;/package&gt;
      &lt;package name="HWMonitor2" filename="HWMonitor"&gt;&lt;/package&gt;
   &lt;/packages&gt;
&lt;/sentinel&gt;</pre><p></p>
<p>On a toujours deux instances “HWMonitor1” et “HWMonitor2” et ces deux instances déclarent le “filename” à “HWMonitor”.</p>
<p>Sans l’extension “.zip”, “HWMonitor” ne correspond à aucun <u>fichier</u> de notre repository et c’est donc là que<strong> Constellation réalise une résolution partielle : semi-explicite / semi-implicite</strong>.</p>
<p><strong>Cette résolution partielle sélectionne la dernière version du package qui porte le nom déclaré dans attribut “filename”</strong> (ici nommé “HWMonitor”).</p>
<p>Ainsi en ajoutant la version 1.3 du package “HWMonitor” dans notre repository, les deux instances seront mises à jour avec la version 1.3 de ce package sans avoir besoin de modifier la configuration de notre Constellation.</p>
<h3>Pour résumer</h3>
<ul>
<li>Un package déployé sur une sentinelle est une instance de package (couple Sentinelle/Package)</li>
<li>Chaque instance a son propre cycle de vie, sa propre configuration et sa propre identité dans la Constellation</li>
<li>Il n’y a pas de lien entre le nom du package et le nom de l’instance du package, vous pouvez nommer vos instances sans restriction à partir du moment où elles sont uniques pour une même sentinelle</li>
<li>Vous pouvez avoir plusieurs instances d’un même package sur une même sentinelle</li>
<li>Vous pouvez également avoir plusieurs instances de versions différentes d’un même package sur une même sentinelle</li>
<li>Les packages (fichiers ZIP) sont tous stockés dans le “Package Repository” du serveur</li>
<li>Pour résoudre le package à utiliser pour une instance :
<ol>
<li>Si l’attribut “filename” est défini :
<ol>
<li>Et qu’il correspond à un fichier du “Package Repository”, c’est ce package qui sera utilisé pour l’instance du package</li>
<li>Sinon, sans extension .ZIP, on utilise la version la plus haute du package dont le nom (déclaré dans le manifeste) est celui déclaré dans l’attribut “filename”</li>
</ol>
</li>
<li>Sinon, sans l’attribut “filename” :
<ol>
<li>On utilise la version la plus haute du package dont le nom (déclaré dans le manifeste) est celui déclaré dans l’attribut “name” (c’est à dire le nom de l’instance du package)</li>
<li>Sinon on utilise le package qui se nomme &lt;name&gt;.zip si ce fichier existe dans le “Package Repository”</li>
<li>Sinon une erreur est levée</li>
</ol>
</li>
</ol>
</li>
</ul>
<p>The post <a rel="nofollow" href="https://developer.myconstellation.io/concepts/instance-package-versioning-et-resolution/">Instance de package, package, versioning, multi-instances et résolution des packages</a> appeared first on <a rel="nofollow" href="https://developer.myconstellation.io">Constellation</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://developer.myconstellation.io/concepts/instance-package-versioning-et-resolution/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>L&#8217;interface REST « Management »</title>
		<link>https://developer.myconstellation.io/client-api/rest-api/interface-rest-management/</link>
					<comments>https://developer.myconstellation.io/client-api/rest-api/interface-rest-management/#respond</comments>
		
		<dc:creator><![CDATA[Sebastien Warin]]></dc:creator>
		<pubDate>Fri, 23 Sep 2016 21:19:38 +0000</pubDate>
				<category><![CDATA[REST API]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[Authorization]]></category>
		<category><![CDATA[Licence]]></category>
		<category><![CDATA[Repository]]></category>
		<category><![CDATA[Package]]></category>
		<category><![CDATA[RecoveryOptions]]></category>
		<category><![CDATA[Settings]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[Sentinel]]></category>
		<category><![CDATA[Configuration]]></category>
		<category><![CDATA[Credential]]></category>
		<category><![CDATA[group]]></category>
		<guid isPermaLink="false">https://developer.myconstellation.io/?p=2939</guid>

					<description><![CDATA[<p>L’interface REST “Management” (ou Management API) fournit des opérations permettant de configurer la Constellation : Gestion des sentinelles Gestion des packages Gestion des groupes Gestion des settings Gestion des RecoveryOptions Gestion des credentials et autorisations Gestion du Package Repository et</p>
<p>The post <a rel="nofollow" href="https://developer.myconstellation.io/client-api/rest-api/interface-rest-management/">L&rsquo;interface REST « Management »</a> appeared first on <a rel="nofollow" href="https://developer.myconstellation.io">Constellation</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>L’interface REST “Management” (ou Management API) fournit des opérations permettant de configurer la Constellation :</p>
<ul>
<li>Gestion des sentinelles</li>
<li>Gestion des packages</li>
<li>Gestion des groupes</li>
<li>Gestion des settings</li>
<li>Gestion des RecoveryOptions</li>
<li>Gestion des credentials et autorisations</li>
<li>Gestion du Package Repository et upload de package</li>
<li>Gestion de la licence</li>
<li>Lire / Ecriture du fichier de configuration</li>
<li>Récupération du numéro de version du serveur</li>
<li>Rechargement et déploiement de la configuration</li>
</ul>
<h3>Généralités</h3>
<h4>Construction de l’URL</h4>
<p>L’URL est :  &lt;Root URI&gt;/rest/management/&lt;action&gt;?&lt;paramètres&gt;</p>
<p>Partons du principe que votre Constellation est exposée en HTTP sur le port 8088 (sans path). On retrouvera dans le <a href="https://developer.myconstellation.io/constellation-server/fichier-de-configuration/">fichier de configuration</a> la section suivante :</p>
<p></p><pre class="crayon-plain-tag">&lt;listenUris&gt;
  &lt;uri listenUri="http://+:8088/" /&gt;
&lt;/listenUris&gt;</pre><p></p>
<p>La “Root URI “ est donc “<strong>http://&lt;ip ou dns&gt;:8088/</strong>”.</p>
<p>Par exemple si nous sommes en local, nous pourrions écrire :</p>
<p></p><pre class="crayon-plain-tag">http://localhost:8088/rest/management/xxxxx</pre><p></p>
<h4>Authentification</h4>
<p>Comme pour toutes les requêtes vers Constellation vous devez impérativement spécifier dans <u>les headers HTTP</u> <strong>ou</strong> dans <u>les paramètres de l’URL</u> (querystring), les paramètres “SentinelName”, “PackageName” et “AccessKey” pour l’authentification.</p>
<p>Dans le cas de l’API “Management”, la “SentinelName” est “Management” et le “PackageName” est le nom de votre choix que l’on considère comme un “FriendlyName”. Typiquement le “FriendlyName” est par exemple le nom de l’application/page qui se connecte.</p>
<p>L’AccessKey doit bien sûr être déclaré et activé sur le serveur. De plus elle doit avoir le droit  d’utiliser l’API de Management, soit depuis la <a href="/constellation-platform/constellation-console/gerer-credentials-avec-la-console-constellation/">Console Constellation</a> ou soit directement dans le <a href="/constellation-platform/constellation-server/fichier-de-configuration/#Section_credentials">fichier de configuration</a> en ajoutant l’attribut “<a href="/constellation-platform/constellation-server/fichier-de-configuration/#Section_credentials">enableManagementAPI</a>”.</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/09/image-121.png"><img class="colorbox-2939"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" src="https://developer.myconstellation.io/wp-content/uploads/2016/09/image_thumb-116.png" alt="image" width="240" height="192" border="0" /></a></p>
<p>Ainsi chaque appel aura le format suivant :</p>
<p></p><pre class="crayon-plain-tag">http://localhost:8088/rest/management/&lt;action&gt;?SentinelName=Management&amp;PackageName=&lt;Friendly name&gt;&amp;AccessKey=&lt;access key&gt;&amp;&lt;paramètres&gt;</pre><p></p>
<h4>Check Access</h4>
<p>Toutes les API REST de Constellation exposent une méthode en GET “CheckAccess” qui retourne un code HTTP 200 (OK). Cela permet de tester la connexion et l’authentification au serveur Constellation.</p>
<ul>
<li>Action : “CheckAccess” (GET)</li>
<li>Paramètres : aucun</li>
</ul>
<p>Exemple :</p>
<p></p><pre class="crayon-plain-tag">http://localhost:8088/rest/management/CheckAccess?SentinelName=Management&amp;PackageName=Demo&amp;AccessKey=MaCleDeTest123</pre><p></p>
<h4>Récupérer la version du serveur</h4>
<p>Pour connaitre la version du serveur Constellation, vous pouvez invoquer l’action “/server/version”.</p>
<ul>
<li>Action : “/server/version” (GET)</li>
<li>Paramètres : aucun</li>
</ul>
<p>Exemple :</p>
<p></p><pre class="crayon-plain-tag">http://localhost:8088/rest/management/server/version?SentinelName=Management&amp;PackageName=Demo&amp;AccessKey=MaCleDeTest123</pre><p></p>
<h3>Edition du fichier de configuration</h3>
<h4>Lire le fichier de configuration</h4>
<p>Vous pouvez récupérer le contenu entier du fichier de configuration de votre Constellation en invoquant l’action ”/configuration”</p>
<ul>
<li>Action : “/configuration” (GET)</li>
<li>Paramètres : aucun</li>
</ul>
<p>Exemple :</p>
<p></p><pre class="crayon-plain-tag">http://localhost:8088/rest/management/configuration?SentinelName=Management&amp;PackageName=Demo&amp;AccessKey=MaCleDeTest123</pre><p></p>
<h4>Ecrire le fichier de configuration</h4>
<p>Vous pouvez également réécrire le fichier de configuration en postant le nouveau contenu sur la même URL.</p>
<ul>
<li>Action : “/configuration” (POST)</li>
<li>Paramètres : aucun</li>
<li>Corps de la requête : le fichier de configuration XML<!--EndFragment--></li>
</ul>
<p>Le serveur vérifiera le bon format du fichier XML avant d’écraser le fichier de configuration existant par votre nouvelle version. Vous devrez ensuite recharger la configuration pour appliquer les modifications.</p>
<h3>Recharger et déployer la configuration</h3>
<p>Pour recharger le fichier de configuration vous devez invoquer l’action “/configuration/reload” :</p>
<ul>
<li>Action : “/configuration/reload ” (GET)</li>
<li>Paramètres :
<ul>
<li>deployConfiguration (optionnel – par défaut “false”) : indique si l’ordre de mise à jour doit être envoyé aux sentinelles et packages de la Constellation</li>
</ul>
</li>
</ul>
<p>Exemple :</p>
<p></p><pre class="crayon-plain-tag">http://localhost:8088/rest/management/configuration/reload?deployConfiguration=true&amp;SentinelName=Management&amp;PackageName=Demo&amp;AccessKey=MaCleDeTest123</pre><p></p>
<h3>La License Constellation</h3>
<p>Vous pouvez récupérer les caractéristiques de la licence affectée à votre serveur en invoquant l’action  “/license”.</p>
<ul>
<li>Action : “/license” (GET)</li>
<li>Paramètres : aucun</li>
</ul>
<p>Exemple :</p>
<p></p><pre class="crayon-plain-tag">http://localhost:8088/rest/management/license?SentinelName=Management&amp;PackageName=Demo&amp;AccessKey=MaCleDeTest123</pre><p></p>
<p>Vous pouvez également charger une nouvelle licence en utilisant le verbe “POST” sur cette action et en plaçant le contenu de la nouvelle licence dans le corps de la requête.</p>
<h3>Gestion du Package Repository</h3>
<h4>Lister le Package Repository</h4>
<p>Pour récupérer la liste des packages de le Package Repository :</p>
<ul>
<li>Action : “/packages” (GET)</li>
<li>Paramètres : aucun</li>
</ul>
<p>Exemple :</p>
<p></p><pre class="crayon-plain-tag">http://localhost:8088/rest/management/packages?SentinelName=Management&amp;PackageName=Demo&amp;AccessKey=MaCleDeTest123</pre><p></p>
<h4>Récupérer un package</h4>
<p>Pour récupérer un package en particulier de votre Package Repository :</p>
<ul>
<li>Action : “/packages/{packageName}” (GET)</li>
<li>Paramètres : aucun</li>
</ul>
<p>Exemple :</p>
<p></p><pre class="crayon-plain-tag">http://localhost:8088/rest/management/packages/{packageName}?SentinelName=Management&amp;PackageName=Demo&amp;AccessKey=MaCleDeTest123</pre><p></p>
<h4>Renommer un package</h4>
<p>Pour renommer un package de votre Package Repository vous devez poster un objet JSON contenant son nouveau nom :</p>
<ul>
<li>Action : “/packages/{packageName}” (POST)</li>
<li>Paramètres : aucun</li>
<li>Corps de la requête (application/json) : { « newName »: newName }</li>
</ul>
<h4>Supprimer un package</h4>
<p>Pour supprimer package de votre Package Repository :</p>
<ul>
<li>Action : “/packages/{packageName}” (DELETE)</li>
<li>Paramètres : aucun</li>
</ul>
<h4>Récupérer l’icone d’un package</h4>
<p>Pour récupérer l’icone d’un package de votre Package Repository :</p>
<ul>
<li>Action : “/packages/{packageName}/icon” (GET)</li>
<li>Paramètres : aucun</li>
</ul>
<p>Vous obtiendrez l’icone au format “PNG”.</p>
<p>Exemple :</p>
<p></p><pre class="crayon-plain-tag">http://localhost:8088/rest/management/packages/{packageName}/icon?SentinelName=Management&amp;PackageName=Demo&amp;AccessKey=MaCleDeTest123</pre><p></p>
<h4>Récupérer le schéma XSD d’un paramètre de configuration d’un package</h4>
<p>Chaque package peut avoir des settings. Ces settings peuvent être de plusieurs types (types simples, objet JSON ou XML). Chaque package doit (ou devrait) <a href="/concepts/package-manifest/#Informations_sur_les_Settings_du_package">déclarer la liste des settings</a> qu’il utilise dans son “<a href="/concepts/package-manifest/">Package Manifest</a>”.</p>
<p>Si le setting est de type XML (“<em>ConfigurationSection</em>” ou “<em>XmlDocument</em>”) il peut être lié à un schéma XSD pour décrire le format XML du setting en question.</p>
<p>L’action ci-dessous permet de récupérer ce schema XSD pour un setting d’un package de votre Package Repository.</p>
<ul>
<li>Action : ”/packages/{package}/settings/{settingName}/xsd ” (GET)</li>
<li>Paramètres : aucun</li>
</ul>
<p>Exemple :</p>
<p></p><pre class="crayon-plain-tag">http://localhost:8088/rest/management/packages/{packageName}}/settings/{settingName}/xsd?SentinelName=Management&amp;PackageName=Demo&amp;AccessKey=MaCleDeTest123</pre><p></p>
<h4>Télécharger un package vers votre Package Repository</h4>
<p>Vous pouvez ordonner à votre serveur Constellation de télécharger un fichier vers le Package Repository.</p>
<p>Pour cela vous utiliserez l’action “/download-package” en spécifiant l’URL du fichier à télécharger.</p>
<ul>
<li style="list-style-type: none;">
<ul>
<li>Action : ”/download-package” (POST)</li>
<li>Paramètres : aucun</li>
<li>Corps de la requête (application/json) : { « url »: url}</li>
</ul>
</li>
</ul>
<p><!--EndFragment--></p>
<h4>Téléverser un package vers votre Package Repository</h4>
<p>Vous pouvez également envoyer un fichier vers votre Package Repository en utilisant l’action “/upload-package”.</p>
<ul>
<li>Action : ”/upload-package” (POST)</li>
<li>Paramètres : aucun</li>
<li>Corps de la requête (multipart/form-data) : les fichiers à enregistrer dans votre Package Repository.</li>
</ul>
<h3>Les RecoveryOptions</h3>
<p>Les <a href="/constellation-platform/constellation-server/fichier-de-configuration/#Section_recoveryOptions">Recovery Options</a> spécifient les options de récupération en cas de crash d’un package sur vos sentinelles.</p>
<p>Chaque package peut avoir ses propres options mais par défaut il hérite des options “globales”.</p>
<p>Pour récupérer ces options “globales” :</p>
<ul>
<li>Action : ”/configuration/recoveryoptions” (GET)</li>
<li>Paramètres : aucun</li>
</ul>
<p>Exemple :</p>
<p></p><pre class="crayon-plain-tag">http://localhost:8088/rest/management/configuration/recoveryoptions?SentinelName=Management&amp;PackageName=Demo&amp;AccessKey=MaCleDeTest123</pre><p></p>
<p>Vous pouvez également redéfinir ces options en postant sur cette même URI votre nouvel objet JSON :</p>
<ul>
<li>Action : ”/configuration/recoveryoptions” (POST)</li>
<li>Paramètres : aucun</li>
<li>Corps de la requête (application/json) : l’objet “RecoveryOptions” avec les nouvelles valeurs</li>
</ul>
<h3>Gestion des sentinelles</h3>
<h4>Lister les sentinelles</h4>
<p>Pour récupérer la liste des sentinelles de votre Constellation :</p>
<ul>
<li>Action : “/sentinels” (GET)</li>
<li>Paramètres : aucun</li>
</ul>
<p>Exemple :</p>
<p></p><pre class="crayon-plain-tag">http://localhost:8088/rest/management/sentinels?SentinelName=Management&amp;PackageName=Demo&amp;AccessKey=MaCleDeTest123</pre><p></p>
<h4>Ajouter ou modifier une sentinelle</h4>
<p>Pour ajouter ou modifier une sentinelle de votre Constellation :</p>
<ul>
<li>Action : “/sentinels” (POST)</li>
<li>Paramètres : aucun</li>
<li>Corps de la requête (application/json) : un objet JSON contenant deux propriétés :
<ul>
<li>“Name”  : le nom de la sentinelle</li>
<li>“Credential” : le nom du credential associé à cette sentinelle</li>
</ul>
</li>
</ul>
<h4>Supprimer une sentinelle</h4>
<p>Pour supprimer une sentinelle de votre Constellation :</p>
<ul>
<li>Action : “/sentinels/{sentinelName}” (DELETE)</li>
<li>Paramètres : aucun</li>
</ul>
<h3>Gestion des packages et des settings</h3>
<h4>Lister les packages d’une sentinelles</h4>
<p>Pour récupérer la liste des packages (virtuels ou non) d’une sentinelle (virtuelle ou non) de votre Constellation :</p>
<ul>
<li>Action : “/sentinels/{sentinelName}/packages” (GET)</li>
<li>Paramètres : aucun</li>
</ul>
<p>Exemple :</p>
<p></p><pre class="crayon-plain-tag">http://localhost:8088/rest/management/sentinels/{sentinelName}/packages?SentinelName=Management&amp;PackageName=Demo&amp;AccessKey=MaCleDeTest123</pre><p></p>
<h4>Récupérer une instance d’un package</h4>
<p>Pour récupérer le détail d’une instance de package sur une sentinelle donnée :</p>
<ul>
<li>Action : “/sentinels/{sentinelName}/packages/{packageName}” (GET)</li>
<li>Paramètres : aucun</li>
</ul>
<p>Exemple :</p>
<p></p><pre class="crayon-plain-tag">http://localhost:8088/rest/management/sentinels/{sentinelName}/packages/{packageName}?SentinelName=Management&amp;PackageName=Demo&amp;AccessKey=MaCleDeTest123</pre><p></p>
<h4>Ajouter ou modifier une instance d’un package</h4>
<p>Pour ajouter ou modifier un package sur une sentinelle de votre Constellation :</p>
<ul>
<li>Action : “/sentinels/{sentinel}/packages” (POST)</li>
<li>Paramètres : aucun</li>
<li>Corps de la requête (application/json) : un objet JSON contenant cinq propriétés :
<ul>
<li>“Name”: le nom de l’instance du package (obligatoire et unique)</li>
<li>“PackageFile” (facultatif) : le nom du fichier du package à utiliser dans le repository (<a href="https://developer.myconstellation.io/concepts/instance-package/">plus d’info</a>)</li>
<li>“Enable” (facultatif, par defaut <em>true</em>) : indique si le package est activé ou désactivé</li>
<li>“Credential” (facultatif, utilise par défaut du credential de sa sentinelle) : spécifie le <a href="https://developer.myconstellation.io/constellation-platform/constellation-server/fichier-de-configuration/#Section_credentials">credential</a> que le package va utiliser pour s’authentifier sur le serveur Constellation</li>
<li>“AutoStart” (facultatif, par defaut <em>true</em>) : indique si le package doit automatiquement démarrer lorsque sa sentinelle démarre</li>
</ul>
</li>
</ul>
<h4>Supprimer une instance d’un package</h4>
<p>Pour supprimer un package sur une sentinelle de votre Constellation :</p>
<ul>
<li>Action : “/sentinels/{sentinel}/packages/{packageName}” (DELETE)</li>
<li>Paramètres : aucun</li>
</ul>
<h4>Options de récupération d’une instance d’un package</h4>
<p>Pour récupérer les options de récupération d’une instance d&rsquo;un package :</p>
<ul>
<li>Action : “/sentinels/{sentinelName}/packages/{packageName}/recoveryoptions” (GET)</li>
<li>Paramètres : aucun</li>
</ul>
<p>Exemple :</p>
<p></p><pre class="crayon-plain-tag">http://localhost:8088/rest/management/sentinels/{sentinelName}/packages/{packageName}/recoveryoptions?SentinelName=Management&amp;PackageName=Demo&amp;AccessKey=MaCleDeTest123</pre><p></p>
<p>Pour les redéfinir vous devez poster la nouvelle valeur de votre objet “RecoveryOptions” sur cette même URI.</p>
<ul>
<li>Action : “/sentinels/{sentinelName}/packages/{packageName}/recoveryoptions” (POST)</li>
<li>Paramètres : aucun</li>
<li>Corps de la requête (application/json) : l’objet “RecoveryOptions” avec les nouvelles valeurs</li>
</ul>
<h4>Groupes d’une instance d’un package</h4>
<p>Pour récupérer les <a href="/constellation-platform/constellation-server/fichier-de-configuration/#Les_groupes">groupes d’une instance d’un package</a> :</p>
<ul><!--EndFragment--></ul>
<ul>
<li>Action : “/sentinels/{sentinelName}/packages/{packageName}/groups” (GET)</li>
<li>Paramètres : aucun</li>
</ul>
<p>Exemple :</p>
<p></p><pre class="crayon-plain-tag">http://localhost:8088/rest/management/sentinels/{sentinelName}/packages/{packageName}/groups?SentinelName=Management&amp;PackageName=Demo&amp;AccessKey=MaCleDeTest123</pre><p></p>
<p>Utilisez cette même URI pour poster la nouvelle liste des groupes de votre instance :</p>
<ul>
<li>Action : “/sentinels/{sentinelName}/packages/{packageName}/groups” (POST)</li>
<li>Paramètres : aucun</li>
<li>Corps de la requête (application/json) : la liste des groupes de votre instance<!--EndFragment--></li>
</ul>
<h4>Settings d’une instance d’un package</h4>
<p>Pour récupérer les settings d’une instance d’un package :</p>
<ul>
<li>Action : “/sentinels/{sentinelName}/packages/{packageName}/settings” (GET)</li>
<li>Paramètres : aucun</li>
</ul>
<p>Exemple :</p>
<p></p><pre class="crayon-plain-tag">http://localhost:8088/rest/management/sentinels/{sentinelName}/packages/{packageName}/settings?SentinelName=Management&amp;PackageName=Demo&amp;AccessKey=MaCleDeTest123</pre><p></p>
<p>Utilisez cette même URI pour poster le nouveau dictionnaire (clé/valeur) des settings :</p>
<ul>
<li>Action : “/sentinels/{sentinelName}/packages/{packageName}/settings” (POST)</li>
<li>Paramètres : aucun</li>
<li>Corps de la requête (application/json) : le dictionnaire (clé/valeur) des settings de votre instance</li>
</ul>
<h3>Gestion des credentials et autorisations</h3>
<h4>Lister les credentials</h4>
<p>Pour récupérer la liste des credentials de votre Constellation :</p>
<ul>
<li>Action : “/credentials” (GET)</li>
<li>Paramètres :
<ul>
<li>includeAccessKeys (optionnel – par défaut “false”) : indique si vous souhaitez inclure les AccessKeys de chaque credentials</li>
</ul>
</li>
</ul>
<p>Exemple :</p>
<p></p><pre class="crayon-plain-tag">http://localhost:8088/rest/management/credentials?includeAccessKeys=true&amp;SentinelName=Management&amp;PackageName=Demo&amp;AccessKey=MaCleDeTest123</pre><p></p>
<h4>Ajouter ou modifier un credential</h4>
<p>Pour ajouter ou modifier un credential de votre Constellation :</p>
<ul>
<li>Action : “/credentials” (POST)</li>
<li>Paramètres : aucun</li>
<li>Corps de la requête (application/json) : un objet JSON contenant six propriétés :
<ul>
<li>“Name” : le nom du credential</li>
<li>“AccessKey” : la clé d’accès du credential</li>
<li>“Enable” (<em>true</em> par défaut) : indique si le credential est activé ou désactivé</li>
<li>“EnableControlHub” (<em>false</em> par défaut) : indique si le credential peut se connecter sur le hub de contrôle (pour l’administration de la Constellation)</li>
<li>“EnableManagementAPI” (<em>false</em> par défaut) : indique si le credential peut se connecter à l’API de Management (pour l’édition de la configuration)</li>
<li>“EnableDeveloperAccess” (<em>false </em>par défaut) : indique si le credential peut utiliser la sentinelle virtuelle “Developer” pour debugger des packages (utilisé par le SDK Visual Studio)</li>
</ul>
</li>
</ul>
<h4>Supprimer un credential</h4>
<p>Pour supprimer un credential de votre Constellation :</p>
<ul>
<li>Action : “/credentials/{credentialName}” (DELETE)</li>
<li>Paramètres : aucun</li>
</ul>
<h4>Récupérer les autorisations d’un credential</h4>
<ul>
<li>Action : “/credentials/{credentialName}/authorizations” (GET)</li>
<li>Paramètres : aucun</li>
</ul>
<p>Vous récupérerez un objet de type “<em>CredentialAuthorizations</em>“ sérialisé en JSON</p>
<h4>Définir les autorisations d’un credential</h4>
<ul>
<li>Action : “/credentials/{credentialName}/authorizations” (POST)</li>
<li>Paramètres : aucun</li>
<li>Corps de la requête (application/json) : l’objet <em>CredentialAuthorizations</em> sérialisé en JSON</li>
</ul>
<p>The post <a rel="nofollow" href="https://developer.myconstellation.io/client-api/rest-api/interface-rest-management/">L&rsquo;interface REST « Management »</a> appeared first on <a rel="nofollow" href="https://developer.myconstellation.io">Constellation</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://developer.myconstellation.io/client-api/rest-api/interface-rest-management/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Mise en cache de page à l’aide de Disk: Enhanced 

Served from: developer.myconstellation.io @ 2026-01-22 02:10:34 by W3 Total Cache
-->