<?xml 
version="1.0" encoding="utf-8"?>
<rss version="2.0" 
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
>

<channel xml:lang="fr">
	<title>OpenID Connect OAuth Server d&#233;di&#233; </title>
	<link>https://oa.dnc.global/</link>
	<description>OAuth Server by DnC (OAuthSD) est un serveur d'authentification qui impl&#233;mente OAuth 2.0 et OpenID Connect.
Avec la connexion unique, une entit&#233; permet aux utilisateurs de ses applications de naviguer de l'une &#224; l'autre de fa&#231;on trans-parente. En centralisant l'authentification des applications et des utilisateurs, un serveur OpenID Connect permet de contr&#244;ler parfaitement l'acc&#232;s des applications et des utilisateurs aux informations sensibles.</description>
	<language>fr</language>
	<generator>SPIP - www.spip.net</generator>

	<image>
		<title>&lt;small&gt;OpenID Connect&lt;/small&gt; OAuth Server &lt;small&gt; d&#233;di&#233; &lt;/small&gt;</title>
		<url>https://static.oa.dnc.global/local/cache-vignettes/L144xH126/siteon0-a21bf.png?1733820003</url>
		<link>https://oa.dnc.global/</link>
		<height>126</height>
		<width>144</width>
	</image>



<item xml:lang="fr">
		<title>APACHE mod_auth_openidc</title>
		<link>https://static.oa.dnc.global/-Ressources-pour-les-developpeurs-.html#apachemod_auth_openidc</link>
		<guid isPermaLink="true">https://static.oa.dnc.global/-Ressources-pour-les-developpeurs-.html#apachemod_auth_openidc</guid>
		<dc:date>2024-11-07T13:55:00Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>DnC</dc:creator>



		<description>
&lt;p&gt;APACHE mod_auth_openidc est un module d'authentification pour le serveur HTTP Apache 2.x qui d&#233;l&#232;gue l'authentification des utilisateurs &#224; un fournisseur OpenID Connect. Cela permet de contr&#244;ler l'acc&#232;s &#224; tout ou partie d'un domaine Web. &lt;br class='autobr' /&gt;
Il est ainsi possible d'acc&#233;der &#224; des applications sans avoir &#224; les modifier pour OIDC. &lt;br class='autobr' /&gt;
Ce module permet &#224; un serveur Web Apache 2.x de fonctionner en tant que partie de confiance OpenID Connect (RP) ou 'client' d'un fournisseur OpenID Connect (OP). &lt;br class='autobr' /&gt;
Il d&#233;l&#232;gue (...)&lt;/p&gt;


-
&lt;a href="https://static.oa.dnc.global/-Ressources-pour-les-developpeurs-.html" rel="directory"&gt;Adaptation des applications&lt;/a&gt;


		</description>


 <content:encoded>&lt;img class='spip_logo spip_logo_right spip_logos' alt=&#034;&#034; style='float:right' src='https://static.oa.dnc.global/local/cache-vignettes/L150xH134/arton220-59307.png?1733820003' width='150' height='134' /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;APACHE mod_auth_openidc est un module d'authentification pour le serveur HTTP Apache 2.x qui d&#233;l&#232;gue l'authentification des utilisateurs &#224; un fournisseur OpenID Connect. Cela permet de contr&#244;ler l'acc&#232;s &#224; tout ou partie d'un domaine Web.&lt;/p&gt;
&lt;p&gt;Il est ainsi possible d'acc&#233;der &#224; des applications sans avoir &#224; les modifier pour OIDC.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;Ce module permet &#224; un serveur Web Apache 2.x de fonctionner en tant que partie de confiance OpenID Connect (RP) ou 'client' d'un fournisseur OpenID Connect (OP).&lt;/p&gt;
&lt;p&gt;Il d&#233;l&#232;gue l'authentification des utilisateurs &#224; l'OP, dont il re&#231;oit en retour un jeton d'identit&#233; (ID Token) contenant les informations d'identit&#233; de l'utilisateur. &lt;br class='autobr' /&gt;
Il transmet ces informations aux applications h&#233;berg&#233;es et prot&#233;g&#233;es par le serveur Web Apache.&lt;/p&gt;
&lt;p&gt;Le contenu et/ou les applications prot&#233;g&#233;s peuvent &#234;tre servis par le serveur Apache lui-m&#234;me ou peuvent &#234;tre servis depuis un autre endroit lorsqu'Apache est configur&#233; en tant que proxy inverse devant le(s) serveur(s) d'origine.&lt;/p&gt;
&lt;p&gt;See : &lt;a href=&#034;https://github.com/zmartzone/mod_auth_openidc&#034; class='spip_url spip_out auto' rel='nofollow external'&gt;https://github.com/zmartzone/mod_auth_openidc&lt;/a&gt;&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Pr&#233;paration&lt;/h3&gt;
&lt;p&gt;Tout d'abord il faut v&#233;rifier la pr&#233;sence du module mod_auth_openidc :&lt;/p&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;# apachectl -M&lt;br /&gt; ...&lt;br /&gt; auth_openidc_module (shared)&lt;br /&gt; ...&lt;/code&gt;&lt;/div&gt; &lt;p&gt;Si absent, il faut installer le module mod_auth_openidc.so :&lt;/p&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;# yum install mod_auth_openidc&lt;br /&gt; ...&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;et relancer Apache.&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Configurer un VirtualHost&lt;/h3&gt;
&lt;p&gt;Dans l'exemple qui suit, un serveur &#224; l'URL example.com comporte un r&#233;pertoire '/protected' prot&#233;g&#233; par OIDC.&lt;/p&gt;
&lt;p&gt;Il y a trois sections dans cet exemple : d'abord la d&#233;finition du serveur, puis la configuration OIDC et enfin la d&#233;finition d'un emplacement prot&#233;g&#233; par OIDC.&lt;/p&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;NameVirtualHost *:80&lt;br /&gt; &lt;br /&gt; &lt;VirtualHost *:80&gt;&lt;br /&gt; ServerAdmin webmaster@example.com&lt;br /&gt; ServerName example.com&lt;br /&gt; ServerAlias www.example.com&lt;br /&gt; DocumentRoot /home/example/public_html/&lt;br /&gt; DirectoryIndex index.html&lt;br /&gt; ErrorLog /var/log/oidc/error.log&lt;br /&gt; CustomLog /var/log/oidc/access.log&lt;br /&gt; &lt;br /&gt; OIDCProviderMetadataURL https://oa.dnc.global/.well-known/openid-configuration&lt;br /&gt; OIDCClientID openidc_example&lt;br /&gt; OIDCClientSecret ...&lt;br /&gt; OIDCRedirectURI http://example.com/protected/redirect_uri&lt;br /&gt; OIDCCryptoPassphrase &lt;password&gt;&lt;br /&gt; OIDCJWKSRefreshInterval 3600&lt;br /&gt; &lt;br /&gt; &lt;Location /protected/&gt;&lt;br /&gt; AuthType openid-connect&lt;br /&gt; Require valid-user&lt;br /&gt; &lt;/Location&gt;&lt;br /&gt; &lt;br /&gt; &lt;/VirtualHost&gt;&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; OIDCProviderMetadataURL : URL du document de d&#233;couverte (Discovery metadata). Par convention il s'agit du fichier openid-configuration se trouvant &#224; la racine des documents de l'OP dans le r&#233;pertoire /.well-known/. &lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; OIDCClientID, OIDCClientSecret : les identifiants du module en tant que client de l'OP (ou relying party, RP).
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; OIDCRedirectURI : une URI factice qui doit pointer dans un r&#233;pertoire prot&#233;g&#233; par ce module (dans notre exemple &#224; l'int&#233;rieur du r&#233;pertoire 'protected') mais ne doit PAS pointer vers un contenu. Il faut l'enregistrer en tant qu'URI de redirection dans la configuration du client sur l'OP.
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; OIDCCryptoPassphrase : un mot de passe al&#233;atoire &#224; des fins de cryptage de la session.
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; OIDCJWKSRefreshInterval : Dur&#233;e de vie de l'authentification.&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;D&#233;clarations renvoy&#233;es depuis OpenID Connect via le module Apache&lt;/h3&gt;
&lt;p&gt;Le module passe les d&#233;clarations du jeton d'identit&#233; ID_TOKEN aux applications h&#233;berg&#233;es et prot&#233;g&#233;es par le serveur web Apache.&lt;/p&gt;
&lt;p&gt;Par d&#233;faut, le module d&#233;finit la variable REMOTE_USER sur la revendication id_token [sub], concat&#233;n&#233;e avec l'identifiant de l'&#233;metteur de l'OP ([sub]@[iss]).&lt;/p&gt;
&lt;p&gt;Les autres d&#233;clarations du jeton d'identit&#233; ID_TOKEN sont transmises dans les en-t&#234;tes HTTP et/ou les variables d'environnement avec celles (&#233;ventuellement) obtenues &#224; partir du point de terminaison UserInfo.&lt;/p&gt;
&lt;p&gt;La super globale $_SERVER contient ces d&#233;clarations sous la forme :&lt;br class='autobr' /&gt;
&lt;code class='spip_code' dir='ltr'&gt;OIDC_XXX&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;On peut par exemple les lister comme suit :&lt;br class='autobr' /&gt;
&lt;strong&gt;PHP&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#034;coloration_code code&#034;&gt;&lt;div class=&#034;spip_php code&#034;&gt;&lt;div class=&#034;php&#034;&gt;&lt;ol&gt;&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #b1b100;&#034;&gt;foreach&lt;/span&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #000088;&#034;&gt;$_SERVER&lt;/span&gt; &lt;span style=&#034;color: #b1b100;&#034;&gt;as&lt;/span&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$key&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;=&gt;&lt;/span&gt;&lt;span style=&#034;color: #000088;&#034;&gt;$value&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #b1b100;&#034;&gt;if&lt;/span&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt; &lt;a href=&#034;http://www.php.net/preg_match&#034;&gt;&lt;span style=&#034;color: #990000;&#034;&gt;preg_match&lt;/span&gt;&lt;/a&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt;&#034;/OIDC_/i&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$key&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #b1b100;&#034;&gt;echo&lt;/span&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;&#034;&lt;span style=&#034;color: #006699; font-weight: bold;&#034;&gt;$key&lt;/span&gt; : &lt;span style=&#034;color: #006699; font-weight: bold;&#034;&gt;$value&lt;/span&gt;&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;p class='download code_download'&gt;&lt;a href='https://static.oa.dnc.global/local/cache-code/c14292a2e185e5861872a1de693eda24.txt'&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;h3 class=&#034;spip&#034;&gt;Autorisation Apache Require&lt;/h3&gt;
&lt;p&gt;Les r&#232;gles d'autorisation Apache Require standard peuvent &#234;tre appliqu&#233;es avec l'ensemble des d&#233;clarations fournies par le jeton d'identit&#233;.&lt;/p&gt;
&lt;p&gt;...&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Principes et organisation g&#233;n&#233;rale d'un d&#233;ploiement OpenID Connect</title>
		<link>https://static.oa.dnc.global/-Ressources-pour-les-developpeurs-.html#principesetorganisationgeneraledundeploiementopenidconnect</link>
		<guid isPermaLink="true">https://static.oa.dnc.global/-Ressources-pour-les-developpeurs-.html#principesetorganisationgeneraledundeploiementopenidconnect</guid>
		<dc:date>2019-11-16T14:57:55Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>DnC</dc:creator>



		<description>
&lt;p&gt;Loin d'&#234;tre une contrainte pour les diff&#233;rentes parties d'une grande entit&#233;, la d&#233;l&#233;gation de l'authentification des utilisateurs et des applications &#224; un serveur unique permet de d&#233;ployer des applications et des serveurs de donn&#233;es prot&#233;g&#233;es, dans des lieux diff&#233;rents et sous des ma&#238;trise d'&#339;uvre diff&#233;rentes, tout en assurant la s&#233;curit&#233; des donn&#233;es. L'entit&#233; coordonnant ces lieux et ces autorit&#233;s devra cependant faire observer des r&#232;gles pour le d&#233;veloppement et le d&#233;ploiement des applications. &lt;br class='autobr' /&gt;
Principes (...)&lt;/p&gt;


-
&lt;a href="https://static.oa.dnc.global/-Ressources-pour-les-developpeurs-.html" rel="directory"&gt;Adaptation des applications&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;Loin d'&#234;tre une contrainte pour les diff&#233;rentes parties d'une grande entit&#233;, la d&#233;l&#233;gation de l'authentification des utilisateurs et des applications &#224; un serveur unique permet de d&#233;ployer des applications et des serveurs de donn&#233;es prot&#233;g&#233;es, dans des lieux diff&#233;rents et sous des ma&#238;trise d'&#339;uvre diff&#233;rentes, tout en assurant la s&#233;curit&#233; des donn&#233;es. &lt;br class='autobr' /&gt;
L'entit&#233; coordonnant ces lieux et ces autorit&#233;s devra cependant faire observer des r&#232;gles pour le d&#233;veloppement et le d&#233;ploiement des applications.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;h3 class=&#034;spip&#034;&gt;Principes auxquels doivent se conformer les applications&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;1.	Toutes les applications&lt;/strong&gt; ( au moins celles manipulant des donn&#233;es confidentielles ), &lt;strong&gt;doivent &#234;tre inscrites sur le serveur OpenID Connect de l'entit&#233; et lui d&#233;l&#233;guer l'authentification des utilisateurs.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2.	Toutes les donn&#233;es confidentielles doivent se trouver sur des serveur de ressources ( par exemple des web-services ) appartenant &#224; l'entit&#233; et dont l'acc&#232;s est s&#233;curis&#233; &#224; l'aide d'OpenID Connect. &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Un tel service est d'ailleurs int&#233;gr&#233; au serveur OpenID Connect sous le nom &#034;UserInfos&#034;. &lt;br class='autobr' /&gt;
On notera que cette obligation autorisera la bonne pratique de saisie unique des donn&#233;es. &lt;br class='autobr' /&gt;
Elle permettra &#233;galement de tracer avec exactitude l'utilisation des donn&#233;es confidentielles. &lt;br class='autobr' /&gt;
Enfin, il sera possible de r&#233;pondre de fa&#231;on pr&#233;cise et exhaustive aux obligations du RGPD, notamment &#224; une demande d'information de la part d'un utilisateur sur la d&#233;tention et l'emploi de ses donn&#233;es personnelles.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3.	On se limitera aux applications qui interrogent les serveurs de ressources confidentielles depuis un serveur priv&#233; de l'entit&#233;.&lt;/strong&gt; &lt;br class='autobr' /&gt;
En effet, toutes les &lt;a href='https://static.oa.dnc.global/-Authentifier-l-application-.html' class='spip_in'&gt;configurations d'applications, de serveurs et de ressources&lt;/a&gt; ne permettent pas d'identifier avec certitude une application cliente, et donc de distinguer les applications malveillantes. Sauf &#224; admettre un risque de compromission.&lt;br class='autobr' /&gt;
Ce principe, en apparence anodin, impose en r&#233;alit&#233; une grande contrainte dans les flux d'authentification &#224; utiliser selon la configuration des applications et des utilisateurs. Certaines configurations devront &#234;tre interdites, sans c&#233;der &#224; la commodit&#233; ou &#224; la popularit&#233; de solutions admises par le grand public. Pour approfondir le sujet, voyez : &lt;a href='https://static.oa.dnc.global/-Authentifier-l-application-.html' class='spip_in'&gt;Authentifier l'application&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Pour une meilleure s&#233;curit&#233;, l'application devra &#234;tre de type &#034;web&#034; et mettre en &#339;uvre le &lt;a href='https://static.oa.dnc.global/-Demarrer-.html' class='spip_in'&gt;flux d'autorisation avec code ( Authorization Code Grant )&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Impl&#233;mentation du monitoring avec Javascript : exemples pour SPIP et WordPress</title>
		<link>https://static.oa.dnc.global/-Ressources-pour-les-developpeurs-.html#implementationdumonitoringavecjavascriptexemplespourspipetwordpress</link>
		<guid isPermaLink="true">https://static.oa.dnc.global/-Ressources-pour-les-developpeurs-.html#implementationdumonitoringavecjavascriptexemplespourspipetwordpress</guid>
		<dc:date>2019-11-16T08:51:08Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>DnC</dc:creator>



		<description>
&lt;p&gt;Impl&#233;mentation du monitoring dans le plugin OpenID Connect client pour SPIP &lt;br class='autobr' /&gt;
Le site oa.dnc.global utilise ce plugin (il est client OIDC, le serpent se mord la queue !). Vous pouvez donc voir une &#233;tiquette en haut &#224; gauche de la fen&#234;tre qui traduit l'&#233;tat du jeton d'acc&#232;s li&#233; &#224; la connexion courante : ic&#244;ne Signification La connexion de l'utilisateur final n'est pas &#233;tablie avec le serveur OIDC. Notez que l'utilisateur peut s'&#234;tre connect&#233; &#224; l'application &#224; l'aide de la m&#233;thode de connexion classique (...)&lt;/p&gt;


-
&lt;a href="https://static.oa.dnc.global/-Ressources-pour-les-developpeurs-.html" rel="directory"&gt;Adaptation des applications&lt;/a&gt;


		</description>


 <content:encoded>&lt;img class='spip_logo spip_logo_right spip_logos' alt=&#034;&#034; style='float:right' src='https://static.oa.dnc.global/local/cache-vignettes/L150xH75/arton171-0fd8e.jpg?1733972199' width='150' height='75' /&gt;
		&lt;div class='rss_texte'&gt;&lt;h3 class=&#034;spip&#034;&gt;Impl&#233;mentation du monitoring dans le plugin OpenID Connect client pour SPIP&lt;/h3&gt;
&lt;p&gt;Le site oa.dnc.global utilise ce plugin (il est client OIDC, le serpent se mord la queue !). Vous pouvez donc voir une &#233;tiquette en haut &#224; gauche de la fen&#234;tre qui traduit l'&#233;tat du jeton d'acc&#232;s li&#233; &#224; la connexion courante :&lt;/p&gt;
&lt;table class=&#034;spip&#034;&gt;
&lt;tbody&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;ic&#244;ne&lt;/td&gt;
&lt;td&gt;Signification&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;&lt;span class='spip_document_54 spip_documents spip_documents_center'&gt;
&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L39xH26/monitoring_deconnecte-4ec35.png?1733817783' width='39' height='26' alt=&#034;&#034; /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;La connexion de l'utilisateur final n'est pas &#233;tablie avec le serveur OIDC. Notez que l'utilisateur peut s'&#234;tre connect&#233; &#224; l'application &#224; l'aide de la m&#233;thode de connexion classique de SPIP.&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;&lt;span class='spip_document_53 spip_documents spip_documents_center'&gt;
&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L39xH26/monitoring_ok-79b0c.png?1733817783' width='39' height='26' alt=&#034;&#034; /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;L'utilisateur final et l'application sont connect&#233;s par OIDC.&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;&lt;span class='spip_document_52 spip_documents spip_documents_center'&gt;
&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L35xH26/monitoring_error-63f7f.png?1733817783' width='35' height='26' alt=&#034;&#034; /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;Erreur g&#233;n&#233;rale, traduit malheureusement de multiples situations :
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; perte de communication Internet,
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; d&#233;faut de configuration du plugin,
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; d&#233;faut d'inscription de l'application cliente sur le serveur OAuthSD,
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; inscription de l'application sur un autre serveur, non compatible OAuthSD,
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; login inconnu du serveur OAuthSD (l'utilisateur final n'est pas inscrit sur ce serveur),
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; etc.&lt;br class='autobr' /&gt;
Le message peut &#233;ventuellement &#234;tre plus explicite : &#034;authentication error&#034;, ...&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Le Monitoring permet &#233;galement de &lt;strong&gt;manager la session OIDC&lt;/strong&gt; et notamment d'effectuer la d&#233;connexion globale (SLO).&lt;br class='autobr' /&gt;
En cliquant sur l'ic&#244;ne, des popups apparaissent selon l'&#233;tat de connexion.&lt;/p&gt;
&lt;p&gt;Exemple du code Javascript (avec jQuery) utilis&#233; pour SPIP. Le plugin ins&#232;re ce code en pied de chaque page.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;[SPIP]&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#034;coloration_code code&#034;&gt;&lt;div class=&#034;spip_javascript code&#034;&gt;&lt;div class=&#034;javascript&#034;&gt;&lt;ol&gt;&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #006600; font-style: italic;&#034;&gt;/**&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #006600; font-style: italic;&#034;&gt;* Plugin OpenID Connect client pour SPIP&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #006600; font-style: italic;&#034;&gt;* OIDC Client Monitoring&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #006600; font-style: italic;&#034;&gt;* Interroge le contr&#244;leur OIDC Authorize avec prompt=none pour afficher l'&#233;tat de connexion.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #006600; font-style: italic;&#034;&gt;* Voir &#233;galement action_logout() dans oidcclient_options.php.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #006600; font-style: italic;&#034;&gt;* Auteur : B.Degoy DnC&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #006600; font-style: italic;&#034;&gt;* Copyright (c) 2019 B.Degoy&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #006600; font-style: italic;&#034;&gt;* Licence GPL v3.0&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #006600; font-style: italic;&#034;&gt;*/&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #006600; font-style: italic;&#034;&gt;// OIDC Client Monitoring&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #339933;&#034;&gt;&lt;?&lt;/span&gt;php &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; include_spip&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;'inc/oidcclient_configuration'&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;?&gt;&lt;/span&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; $&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;document&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&#034;color: #660066;&#034;&gt;ready&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #000066; font-weight: bold;&#034;&gt;function&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #006600; font-style: italic;&#034;&gt;// Ajouter l'&#233;tiquette si elle n'existe pas&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #000066; font-weight: bold;&#034;&gt;if&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;$&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;'#oidc'&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&#034;color: #660066;&#034;&gt;length&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;===&lt;/span&gt; &lt;span style=&#034;color: #CC0000;&#034;&gt;0&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; $&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;'&lt;div id=&#034;oidc&#034;&gt; OIDC &lt;/div&gt; '&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; .&lt;span style=&#034;color: #660066;&#034;&gt;appendTo&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;'nav'&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; .&lt;span style=&#034;color: #660066;&#034;&gt;css&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;'position'&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;'absolute'&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; .&lt;span style=&#034;color: #660066;&#034;&gt;css&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;'top'&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;'12px'&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; .&lt;span style=&#034;color: #660066;&#034;&gt;css&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;'left'&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;'3px'&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; .&lt;span style=&#034;color: #660066;&#034;&gt;css&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;'color'&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;'white'&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; .&lt;span style=&#034;color: #660066;&#034;&gt;css&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;'padding'&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;'3px'&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #000066; font-weight: bold;&#034;&gt;var&lt;/span&gt; login &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;&lt;?php echo @$GLOBALS['visiteur_session']['login']; ?&gt;&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #000066; font-weight: bold;&#034;&gt;var&lt;/span&gt; state &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;&lt;?php echo @$GLOBALS['visiteur_session']['state']; ?&gt;&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #000066; font-weight: bold;&#034;&gt;if&lt;/span&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt; login &lt;span style=&#034;color: #339933;&#034;&gt;!==&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;&#034;&lt;/span&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #006600; font-style: italic;&#034;&gt;// Si on est log&#233; localement, surveiller qu'on l'est &#233;galement sur OIDC&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; setInterval&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #000066; font-weight: bold;&#034;&gt;function&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; $.&lt;span style=&#034;color: #660066;&#034;&gt;ajax&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; type &lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;get&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; url &lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;&lt;?php echo OIDC_AUTHORIZATION_ENDPOINT; ?&gt;&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; data &lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#123;&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;'response_type'&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;'code'&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;'client_id'&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;&lt;?php echo OIDC_CLIENT_ID; ?&gt;&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;'user_id'&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; login&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;'state'&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; state&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;'scope'&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;'openid'&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;'prompt'&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;'none'&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#125;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; statusCode &lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #CC0000;&#034;&gt;401&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #000066; font-weight: bold;&#034;&gt;function&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #006600; font-style: italic;&#034;&gt;// Non authentifi&#233; sur OIDC, d&#233;connecter localement&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #000066; font-weight: bold;&#034;&gt;var&lt;/span&gt; url_logout_public &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;&lt;?php echo '?action=logout&amp;logout=local&amp;url=' . $GLOBALS['REQUEST_URI']; ?&gt;&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; window.&lt;span style=&#034;color: #660066;&#034;&gt;location&lt;/span&gt;.&lt;span style=&#034;color: #660066;&#034;&gt;replace&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;url_logout_public&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#125;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #CC0000;&#034;&gt;200&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #000066; font-weight: bold;&#034;&gt;function&lt;/span&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #006600; font-style: italic;&#034;&gt;// Signaler la connexion &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; $&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;'#oidc'&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&#034;color: #660066;&#034;&gt;css&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;'background-color'&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;'#8f8'&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; $&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;'#oidc'&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&#034;color: #660066;&#034;&gt;text&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;' OIDC '&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#125;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#125;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; error &lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #000066; font-weight: bold;&#034;&gt;function&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;obj&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;textStatus&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;errorThrown&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #006600; font-style: italic;&#034;&gt;// Signaler qu'on ne sait pas &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; $&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;'#oidc'&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&#034;color: #660066;&#034;&gt;css&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;'background-color'&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;'red'&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; $&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;'#oidc'&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&#034;color: #660066;&#034;&gt;text&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;textStatus &lt;span style=&#034;color: #339933;&#034;&gt;+&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;' '&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;+&lt;/span&gt; errorThrown&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#125;&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#125;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt; &lt;span style=&#034;color: #CC0000;&#034;&gt;2000&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#125;&lt;/span&gt; &lt;span style=&#034;color: #000066; font-weight: bold;&#034;&gt;else&lt;/span&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#123;&lt;/span&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #006600; font-style: italic;&#034;&gt;// Signaler la d&#233;connexion &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; $&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;'#oidc'&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&#034;color: #660066;&#034;&gt;css&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;'background-color'&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;'orange'&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; $&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;'#oidc'&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&#034;color: #660066;&#034;&gt;text&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;' OIDC '&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#125;&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;p class='download code_download'&gt;&lt;a href='https://static.oa.dnc.global/local/cache-code/8e44e87bec7851832490d100c1075357.txt'&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;h3 class=&#034;spip&#034;&gt;Impl&#233;mentation du monitoring dans une &lt;a href='https://static.oa.dnc.global/-Ressources-pour-les-developpeurs-.html#extensionpourwordpressopenidconnectgenericclient' class='spip_in'&gt;extension Wordpress&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#034;https://github.com/bdegoy?utf8=%E2%9C%93&amp;tab=repositories&amp;q=OAuthSD&#034;&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L24xH24/github_24-28c1d.png?1733817782' width='24' height='24' /&gt;&lt;/a&gt; Le plugin est &lt;a href=&#034;https://github.com/bdegoy/openid-connect-generic&#034; class='spip_out' rel='external'&gt;disponible sur Github&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Le code Javascript est ins&#233;r&#233; dans un hook appel&#233; par la fonction bootstrap() de l'extension : &lt;br class='autobr' /&gt;
&lt;strong&gt;[PHP]&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#034;coloration_code code&#034;&gt;&lt;div class=&#034;spip_php code&#034;&gt;&lt;div class=&#034;php&#034;&gt;&lt;ol&gt;&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #009933; font-style: italic;&#034;&gt;/**&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #009933; font-style: italic;&#034;&gt; * OAuthSD project https://oa.dnc.global&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #009933; font-style: italic;&#034;&gt; * OAuthSD OIDC plugin for WordPress&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #009933; font-style: italic;&#034;&gt; * Insert monitoring code in footer&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #009933; font-style: italic;&#034;&gt; * dnc1&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #009933; font-style: italic;&#034;&gt; * Author : bdegoy DnC https://degoy.com&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #009933; font-style: italic;&#034;&gt; * copyright (c) 2019 B.Degoy DnC&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #009933; font-style: italic;&#034;&gt; * Licence GPL v3.0&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #009933; font-style: italic;&#034;&gt; */&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #000000; font-weight: bold;&#034;&gt;function&lt;/span&gt; insert_monitoring&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #666666; font-style: italic;&#034;&gt;// Enqueue some jQuery UIs&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; wp_enqueue_script&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt;'jquery-ui-dialog'&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt; &lt;span style=&#034;color: #666666; font-style: italic;&#034;&gt;// from WP core&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #666666; font-style: italic;&#034;&gt;// get registered script object for jquery-ui&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #000000; font-weight: bold;&#034;&gt;global&lt;/span&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$wp_scripts&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$ui&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$wp_scripts&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;-&gt;&lt;/span&gt;&lt;span style=&#034;color: #004000;&#034;&gt;query&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt;'jquery-ui-core'&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #666666; font-style: italic;&#034;&gt;// load the Smoothness theme from Google CDN &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$protocol&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; is_ssl&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt; ? &lt;span style=&#034;color: #0000ff;&#034;&gt;'https'&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;'http'&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$url&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;&#034;&lt;span style=&#034;color: #006699; font-weight: bold;&#034;&gt;$protocol&lt;/span&gt;://ajax.googleapis.com/ajax/libs/jqueryui/&lt;span style=&#034;color: #006699; font-weight: bold;&#034;&gt;{$ui-&gt;ver}&lt;/span&gt;/themes/smoothness/jquery-ui.min.css&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; wp_enqueue_style&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt;'jquery-ui-smoothness'&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$url&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt; &lt;span style=&#034;color: #009900; font-weight: bold;&#034;&gt;false&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt; &lt;span style=&#034;color: #009900; font-weight: bold;&#034;&gt;null&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #666666; font-style: italic;&#034;&gt;// OIDC Client Monitoring&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$thisuri&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$_SERVER&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt;'REQUEST_URI'&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$absolutepath_this_plugin&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; plugin_dir_path&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt; &lt;span style=&#034;color: #009900; font-weight: bold;&#034;&gt;__FILE__&lt;/span&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$url_this_plugin&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; plugins_url&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt;''&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt; &lt;a href=&#034;http://www.php.net/dirname&#034;&gt;&lt;span style=&#034;color: #990000;&#034;&gt;dirname&lt;/span&gt;&lt;/a&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #009900; font-weight: bold;&#034;&gt;__FILE__&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;.&lt;/span&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;&#034;/openid-connect-generic&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$state&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; &lt;a href=&#034;http://www.php.net/md5&#034;&gt;&lt;span style=&#034;color: #990000;&#034;&gt;md5&lt;/span&gt;&lt;/a&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;wp_get_session_token&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #666666; font-style: italic;&#034;&gt;// Server URLs&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$settings&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$this&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;-&gt;&lt;/span&gt;&lt;span style=&#034;color: #004000;&#034;&gt;settings&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$url_endpoint_login&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$settings&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;-&gt;&lt;/span&gt;&lt;span style=&#034;color: #004000;&#034;&gt;endpoint_login&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$url_endpoint_token&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$settings&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;-&gt;&lt;/span&gt;&lt;span style=&#034;color: #004000;&#034;&gt;endpoint_token&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$url_endpoint_userinfo&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$settings&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;-&gt;&lt;/span&gt;&lt;span style=&#034;color: #004000;&#034;&gt;endpoint_userinfo&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$url_endpoint_logout&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$settings&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;-&gt;&lt;/span&gt;&lt;span style=&#034;color: #004000;&#034;&gt;endpoint_end_session&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$parts&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; &lt;a href=&#034;http://www.php.net/parse_url&#034;&gt;&lt;span style=&#034;color: #990000;&#034;&gt;parse_url&lt;/span&gt;&lt;/a&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #000088;&#034;&gt;$url_endpoint_login&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$url_server&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$parts&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt;'scheme'&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#93;&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;.&lt;/span&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;'://'&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;.&lt;/span&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$parts&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt;'host'&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #666666; font-style: italic;&#034;&gt;// OIDC user&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$clientID&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$settings&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;-&gt;&lt;/span&gt;&lt;span style=&#034;color: #004000;&#034;&gt;client_id&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #666666; font-style: italic;&#034;&gt;// $userID = ??? &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #666666; font-style: italic;&#034;&gt;// WP user&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$user&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; get_user_by&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt;'id'&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt; get_current_user_id&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$login&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$user&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;-&gt;&lt;/span&gt;&lt;span style=&#034;color: #004000;&#034;&gt;user_login&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$nom_auteur&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt;&lt;span style=&#034;color: #000088;&#034;&gt;$user&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;-&gt;&lt;/span&gt;&lt;span style=&#034;color: #004000;&#034;&gt;display_name&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #666666; font-style: italic;&#034;&gt;// for info popup&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$infos&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;'&lt;br/&gt;'&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;.&lt;/span&gt; __&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt;'oidcclient:serveur_url'&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt;'openid-connect-generic'&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;.&lt;/span&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;' : &lt;a href=&#034;'&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;.&lt;/span&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$url_server&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;.&lt;/span&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;'&#034;&gt;'&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;.&lt;/span&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$url_server&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;.&lt;/span&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;'&lt;/a&gt;'&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;'&lt;br/&gt;'&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;.&lt;/span&gt; __&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt;'oidcclient:client_id'&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt;'openid-connect-generic'&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;.&lt;/span&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;' : '&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;.&lt;/span&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$clientID&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;.&lt;/span&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;'&lt;br/&gt;'&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;.&lt;/span&gt; __&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt;'oidcclient:login_wp'&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt;'openid-connect-generic'&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;.&lt;/span&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;' : '&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;.&lt;/span&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$login&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #666666; font-style: italic;&#034;&gt;//'&lt;br/&gt;' . __('oidcclient:login_oidc_court','openid-connect-generic') . ' : ' . $userID . &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;'&lt;br/&gt;'&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;.&lt;/span&gt; __&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt;'oidcclient:nom_auteur'&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt;'openid-connect-generic'&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;.&lt;/span&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;' : '&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;.&lt;/span&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$nom_auteur&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #666666; font-style: italic;&#034;&gt;// labels and messages&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$msg_session_connected_no&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; __&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt;'oidcclient:session_connected_no'&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt;'openid-connect-generic'&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$msg_session_connected_yes&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; __&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt;'oidcclient:session_connected_yes'&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt;'openid-connect-generic'&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$msg_session_connected_error&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; __&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt;'oidcclient:session_connected_error'&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt;'openid-connect-generic'&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$msg_session_open&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; __&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt;'oidcclient:session_open'&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt;'openid-connect-generic'&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$msg_session_extend&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; __&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt;'oidcclient:session_extend'&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt;'openid-connect-generic'&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$msg_session_close&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; __&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt;'oidcclient:session_close'&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt;'openid-connect-generic'&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$msg_session_expires&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; __&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt;'oidcclient:session_expires'&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt;'openid-connect-generic'&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$lbl_yes&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; __&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt;'oidcclient:item_yes'&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt;'openid-connect-generic'&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$lbl_no&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; __&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt;'oidcclient:item_no'&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt;'openid-connect-generic'&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$lbl_t_session_restant&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; __&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt;'oidcclient:t_session_restant'&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt;'openid-connect-generic'&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$lbl_delai_reponse&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; __&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt;'oidcclient:delai_reponse'&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt;'openid-connect-generic'&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$lbl_infos_titre&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; __&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt;'oidcclient:lbl_infos_titre'&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt;'openid-connect-generic'&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #666666; font-style: italic;&#034;&gt;// link to OIDC login &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$link_login&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$this&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;-&gt;&lt;/span&gt;&lt;span style=&#034;color: #004000;&#034;&gt;client_wrapper&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;-&gt;&lt;/span&gt;&lt;span style=&#034;color: #004000;&#034;&gt;get_authentication_url&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #666666; font-style: italic;&#034;&gt;// link to logout page&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$url_logout&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; esc_url&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #000088;&#034;&gt;$url_this_plugin&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;.&lt;/span&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;&#034;/oidc_logout.php?url=&#034;&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;.&lt;/span&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$_SERVER&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt;'REQUEST_URI'&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #b1b100;&#034;&gt;echo&lt;/span&gt; &lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt;&lt;&lt;&lt;JSCODE&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt;&lt;script type=&#034;text/javascript&#034;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt;(function($) {&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; var login = &#034;$login&#034;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; var timeleft = 0;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; var connected = 0;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; var connectionMsg = '';&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; var interval = null;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; var pollperiod = 60000;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; var tagappendto = '#content';&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; var tagtop = '120px';&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; var tagleft = '16px';&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; var responseDelay = 'Unk';&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; $(document).on('ready',function(){&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; // Add OIDC labels&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; if($('#oidc').length === 0){&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; $('&lt;div id=&#034;oidc&#034;&gt;&lt;span id=&#034;oidctag&#034;&gt; OIDC &lt;/span&gt;&lt;span id=&#034;oidcinfo&#034;&gt; ? &lt;/span&gt;&lt;/div&gt;')&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; .appendTo(tagappendto);&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; //&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; $('#oidc')&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; .css('position','absolute')&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; .css('top',tagtop)&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; .css('left',tagleft);&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; //&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; $('#oidctag')&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; .css('color','white')&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; .css('padding','3px')&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; .css('z-index','10000')&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; .on('click', function(){&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; switch (connected) {&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; case 0 :&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; connectionMsg = &#034;$msg_session_connected_no&#034;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; SessionOpenDialog(connectionMsg);&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; break;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; case 1 :&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; connectionMsg = &#034;$msg_session_connected_yes&#034;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; SessionCloseDialog(connectionMsg);&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; break;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; default :&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; case -1 :&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; connectionMsg = &#034;$msg_session_connected_error&#034;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; break;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; }; &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; });&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; //&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; $('#oidcinfo') &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; .css('color','white')&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; .css('padding','3px')&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; .css('z-index','10001')&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; .css('background-color','#09f')&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; .on('click', function(){&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; $('&lt;div&gt;&lt;/div&gt;').appendTo('body')&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; .html('&lt;div&gt;&lt;h6&gt;$infos&lt;br/&gt;$lbl_t_session_restant : ' + timeleft + ' s&lt;br/&gt;$lbl_delai_reponse : ' + responseDelay + ' ms&lt;/h6&gt;&lt;/div&gt;')&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; .dialog({&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; modal: true, title: &#034;$lbl_infos_titre&#034;, zIndex: 10000, autoOpen: true,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; width: 'auto', resizable: false,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; close: function (event, ui) {&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; $(this).remove();&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; interval = setInterval(pollOidc,pollperiod);&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; }&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; });&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; } &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; ); &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; }&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; // If user is logged locally, verify the OIDC session is valid. &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; if ( login !== &#034;&#034; ) {&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; pollOidc();&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; interval = setInterval(pollOidc,pollperiod);&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; } else {&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; connected = 0; &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; // Show not OIDC connected. &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; $('#oidctag').css('background-color', 'orange');&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; $('#oidctag').text(' OIDC ');&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; }&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; function SessionCloseDialog(message) { //[dnc28d]&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; clearInterval(interval);&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; $('&lt;div&gt;&lt;/div&gt;').appendTo('body')&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; .html('&lt;div&gt;&lt;h6&gt;'+message+'?&lt;/h6&gt;&lt;/div&gt;')&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; .dialog({&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; modal: true, title: &#034;$msg_session_close&#034;, zIndex: 10000, autoOpen: true,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; width: 'auto', resizable: false,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; buttons: [&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; text: &#034;$lbl_yes&#034;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; click: function () {&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; // Close the OIDC session.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; window.location.replace(&#034;$url_logout&#034;);&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; $(this).dialog(&#034;close&#034;);&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; }&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; },{&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; text: &#034;$lbl_no&#034;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; click: function () { &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; $(this).dialog(&#034;close&#034;);&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; interval = setInterval(pollOidc,pollperiod);&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; }&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; }&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; ],&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; close: function (event, ui) {&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; $(this).remove();&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; interval = setInterval(pollOidc,pollperiod);&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; }&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; });&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; };&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; function SessionOpenDialog(message) { //[dnc28d]&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; clearInterval(interval);&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; $('&lt;div&gt;&lt;/div&gt;').appendTo('body')&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; .html('&lt;div&gt;&lt;h6&gt;'+message+'?&lt;/h6&gt;&lt;/div&gt;')&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; .dialog({&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; modal: true, title: &#034;$msg_session_open&#034;, zIndex: 10000, autoOpen: true,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; width: 'auto', resizable: false,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; buttons: [&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; text: &#034;$lbl_yes&#034;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; click: function () {&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; // Se connecter&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; window.location.replace(&#034;$link_login&#034;);&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; $(this).dialog(&#034;close&#034;);&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; }&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; },{&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; text: &#034;$lbl_no&#034;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; click: function () { &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; $(this).dialog(&#034;close&#034;);&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; interval = setInterval(pollOidc,pollperiod);&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; }&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; }&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; ],&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; close: function (event, ui) {&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; $(this).remove();&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; interval = setInterval(pollOidc,pollperiod);&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; }&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; });&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; };&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; function ExtendDialog(message) { //[dnc28d]&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; if ( !$(&#034;#extenddialog&#034;).size() ) { //[dnc28f]&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; clearInterval(interval);&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; $('&lt;div id=&#034;extendeddialog&#034;&gt;&lt;/div&gt;').appendTo('body')&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; .html('&lt;div&gt;&lt;h6&gt;'+message+'?&lt;/h6&gt;&lt;/div&gt;')&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; .dialog({&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; modal: true, title: &#034;$msg_session_extend&#034;, zIndex: 10000, autoOpen: true,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; width: 'auto', resizable: false,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; buttons: [&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; {&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; text: &#034;$lbl_yes&#034;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; click: function () {&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; // Extend session&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; $.ajax({&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; type : &#034;get&#034;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; url : &#034;$url_endpoint_login&#034;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; data : { 'response_type' : 'code',&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; 'client_id' : &#034;$clientID&#034;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; 'user_id' : login,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; 'state' : &#034;$state&#034;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; 'scope' : 'openid sli',&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; } &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; });&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; $(this).dialog(&#034;close&#034;);&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; interval = setInterval(pollOidc,pollperiod);&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; }&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; },{&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; text: &#034;$lbl_no&#034;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; click: function () { &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; $(this).dialog(&#034;close&#034;);&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; interval = setInterval(pollOidc,pollperiod);&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; },&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; }&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; ],&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; close: function (event, ui) {&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; $(this).remove();&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; interval = setInterval(pollOidc,pollperiod);&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; },&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; });&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; }&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; };&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; // Test OIDC connection.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; function pollOidc(){&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; connected = -1;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; var d = new Date();&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; var timeStart = d.getTime();&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; var timeStop = 0;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; $.ajax({&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; type : &#034;get&#034;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; url : &#034;$url_endpoint_login&#034;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; data : { 'response_type' : 'code',&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; 'client_id' : &#034;$clientID&#034;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; 'user_id' : login,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; 'state' : &#034;$state&#034;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; 'scope' : 'openid',&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; 'prompt' : 'none',&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; },&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; statusCode : {&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; 401 : function(){&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; connected = 0;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; var d = new Date();&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; timeStop = d.getTime();&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; // Not (or no longer) connected on OIDC, disconnect locally&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; window.location.replace(&#034;$url_logout&#034; +&#034;&amp;logout=local&#034;);&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; },&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; 200 : function ( data, textStatus, jqXHR){&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; connected = 1;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; var d = new Date();&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; timeStop = d.getTime();&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; // Show OIDC connected &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; $('#oidctag').css('background-color', '#8f8');&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; $('#oidctag').text(' OIDC ');&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; timeleft = data['timeleft'];&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; if ( timeleft &lt; 600 ) { //[dnc28d]&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; // Approaching OIDC session end.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; clearInterval(interval); &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; ExtendDialog(&#034;$msg_session_expires&#034;);&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; interval = setInterval(pollOidc,pollperiod);&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; }&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; },&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; },&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; error : function(obj,textStatus,errorThrown){&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; connected = -1;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; // Show error (OIDC state is unknown)&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; $('#oidctag').css('background-color', 'red');&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; $('#oidctag').text(textStatus + ' ' + errorThrown);&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; },&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; complete : function ( data, textStatus, jqXHR){&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; if ( timeStop &amp;&amp; timeStart ) {&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; responseDelay = timeStop - timeStart; &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; } else {&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; responseDelay = 'Unk';&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; }&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; },&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; }); &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; } &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt; });&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt;})( jQuery );&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt;&lt;/script&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000cc; font-style: italic;&#034;&gt;JSCODE&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&#125;&lt;/span&gt; &lt;span style=&#034;color: #666666; font-style: italic;&#034;&gt;//function&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;p class='download code_download'&gt;&lt;a href='https://static.oa.dnc.global/local/cache-code/c27567e2fc4016e381f1b86fa239038f.txt'&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;Notons qu'il faut ins&#233;rer un bloc div en bas de page, ce qui est fait au moyen d'une action dans la fonction bootstrap en m&#234;me temps que le hook de la fonction pr&#233;c&#233;dente :&lt;br class='autobr' /&gt;
&lt;strong&gt;[PHP]&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#034;coloration_code code&#034;&gt;&lt;div class=&#034;spip_php code&#034;&gt;&lt;div class=&#034;php&#034;&gt;&lt;ol&gt;&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #666666; font-style: italic;&#034;&gt;//OIDC Monitoring&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; wp_enqueue_script&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt;&#034;jquery&#034;&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; add_action&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt;'wp_footer'&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt; &lt;a href=&#034;http://www.php.net/array&#034;&gt;&lt;span style=&#034;color: #990000;&#034;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$plugin&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;'insert_monitoring'&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt; &lt;span style=&#034;color: #cc66cc;&#034;&gt;5&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;p class='download code_download'&gt;&lt;a href='https://static.oa.dnc.global/local/cache-code/cc2592e2e29058c4c2e465186c8cad15.txt'&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>API HTTP REST + TreeQL</title>
		<link>https://static.oa.dnc.global/-Techniques-et-code-du-serveur-OAuthSD-.html#apihttpresttreeql</link>
		<guid isPermaLink="true">https://static.oa.dnc.global/-Techniques-et-code-du-serveur-OAuthSD-.html#apihttpresttreeql</guid>
		<dc:date>2019-10-11T06:27:21Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>DnC</dc:creator>



		<description>
&lt;p&gt;OAuthSD expose maintenant une deuxi&#232;me API HTTP REST. Comme la premi&#232;re (qui reste disponible) cette API permet d'automatiser certaines t&#226;ches autour du serveur d'authentification. Une application d'administration (supervision) peut ainsi contr&#244;ler les donn&#233;es du serveur.
&lt;br class='autobr' /&gt;
Cette nouvelle API s'appuie sur php-crud-api. Les objets sont manipul&#233;s sous des format scalaires ou json simples. Elle offre plus de possibilit&#233;s de requ&#234;tes en suivant le format TreeQL. &lt;br class='autobr' /&gt;
Remarque : Cette API pourrait remplacer l'API (...)&lt;/p&gt;


-
&lt;a href="https://static.oa.dnc.global/-Techniques-et-code-du-serveur-OAuthSD-.html" rel="directory"&gt;Techniques et code du serveur OAuthSD&lt;/a&gt;


		</description>


 <content:encoded>&lt;img class='spip_logo spip_logo_right spip_logos' alt=&#034;&#034; style='float:right' src='https://static.oa.dnc.global/local/cache-vignettes/L141xH150/arton169-561fa.jpg?1733972200' width='141' height='150' /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;OAuthSD expose maintenant une deuxi&#232;me API HTTP REST. Comme la premi&#232;re (qui reste disponible) cette API permet d'automatiser certaines t&#226;ches autour du serveur d'authentification. Une application d'administration (supervision) peut ainsi contr&#244;ler les donn&#233;es du serveur.&lt;br class='autobr' /&gt;
Cette nouvelle API s'appuie sur &lt;a href=&#034;https://github.com/mevdschee/php-crud-api&#034; class='spip_out' rel='external'&gt;php-crud-api&lt;/a&gt;. Les objets sont manipul&#233;s sous des format scalaires ou json simples. Elle offre plus de possibilit&#233;s de requ&#234;tes en suivant le format TreeQL.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;Remarque : Cette API pourrait remplacer l'&lt;a href='https://static.oa.dnc.global/-Techniques-et-code-du-serveur-OAuthSD-.html#apihttprest' class='spip_in'&gt;API HTTP REST&lt;/a&gt; &#224; moyen terme.&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;S&#233;curisation de l'acc&#232;s &#224; l'API et transmission du r&#244;le de l'utilisateur final&lt;/h3&gt;
&lt;p&gt;La s&#233;curisation de l'acc&#232;s &#224; l'API HTTP REST + TreeQL est effectu&#233; &#224; l'aide d'un jeton d'identit&#233; au format JWT &#233;mis par l'application cliente.&lt;/p&gt;
&lt;p&gt;Ce jeton transmet le r&#244;le de l'utilisateur au moyen de la d&#233;claration 'scope' prenant l'une des valeurs 'admin', 'writer', 'reader' and 'none'. Pour cela (voir &lt;a href='https://static.oa.dnc.global/-Sujets-communs-a-Oauth-2-et-OpenID-Connect-.html#definitiondesscopesoidcetgeneralitessurleurutilisationparlesapplications' class='spip_in'&gt;D&#233;finition des scopes OIDC et g&#233;n&#233;ralit&#233;s sur leur utilisation par les applications&lt;/a&gt;) :
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; l'application cliente doit utiliser OIDC et initialiser le flux d'autorisation avec code avec la demande d'autorisation (requested_scope) 'scope=privileges',
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; L'application cliente doit avoir &#233;t&#233; enregistr&#233;e avec la valeur 'privileges' dans la liste de Scopes disponibles (Available scopes),
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; une valeur parmi 'admin', 'writer', 'reader' and 'none' doit avoir &#233;t&#233; enregistr&#233;e dans la table users pour l'utilisateur final consid&#233;r&#233;.&lt;/p&gt;
&lt;p&gt;Le jeton peut &#234;tre pass&#233; dans l'URL (m&#233;thode GET), par POST ou par la m&#233;thode Authorization : Bearer.&lt;/p&gt;
&lt;p&gt;Exemple d'appel avec la m&#233;thode GET :&lt;/p&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;https://oa.dnc.global/http.api/api.php/records/spip_users/1/?token=eyJ0eXAiOiJKV...&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;L'API valide le jeton JWT par introspection. OAuthSD garantit ainsi l'authenticit&#233; de l'application cliente. Voir : &lt;a href='https://static.oa.dnc.global/-Authentifier-l-application-.html#verificationdeloriginedelarequeterecueparunserveurderessource' class='spip_in'&gt;V&#233;rification de l'origine de la requ&#234;te re&#231;ue par un serveur de ressource&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;En cas d'erreur d'authentification, l'API retourne un code HTTP 403 Forbidden et un corps vide.&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Limitation de l'acc&#232;s aux tables et aux champs&lt;/h3&gt;
&lt;p&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; seules les tables 'users', 'clients', 'scopes', 'oidc_logs' sont accessibles.&lt;/p&gt;
&lt;p&gt;L'authentification de l'utilisateur final conduit &#224; d&#233;finir les r&#244;les 'admin', 'writer', 'reader' et 'none'. Le r&#244;le 'admin' peut effectuer l'ensemble des op&#233;rations.&lt;/p&gt;
&lt;p&gt;Pour le r&#244;le &#034;writer&#034; : &lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; dans la table 'public_keys', la seule op&#233;ration permise est la lecture de la cl&#233; cl&#233; publique.
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; dans la table 'oauth_clients', l'acc&#232;s au champ password est interdit. &lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; dans la table 'oauth_users', l'acc&#232;s au champ client_secret est interdit.&lt;/p&gt;
&lt;p&gt;Pour le r&#244;le 'reader' :
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; les restriction d'acc&#232;s sont les m&#234;mes que le r&#244;le 'writer',
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; seules les op&#233;rations 'read' et 'list' sont autoris&#233;es.&lt;/p&gt;
&lt;p&gt;Le r&#244;le 'none' ne peut que lire la table 'oidc_logs'.&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Op&#233;rations CRUD + List : R&#233;f&#233;rence de l'API&lt;/h3&gt;&lt;iframe src=&#034;https://oa.dnc.global/http.api/spec/swagger/static/&#034; width=&#034;100%&#034; height=&#034;10000&#034; frameborder=&#034;0&#034;
&gt;
&lt;/iframe&gt;
&lt;p&gt;&lt;strong&gt;Voyez &#233;galement :&lt;/strong&gt;
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; &lt;a href=&#034;https://oa.dnc.global/http.api/spec/swagger/static/&#034; class='spip_url spip_out auto' rel='nofollow external'&gt;https://oa.dnc.global/http.api/spec/swagger/static/&lt;/a&gt;
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; &lt;a href=&#034;https://editor.swagger.io/?url=https://oa.dnc.global/http.api/api.php/openapi&#034; class='spip_url spip_out auto' rel='nofollow external'&gt;https://editor.swagger.io/?url=https://oa.dnc.global/http.api/api.php/openapi&lt;/a&gt;&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;S&#233;lections avanc&#233;es&lt;/h3&gt;
&lt;p&gt;Sur les op&#233;rations de liste, vous pouvez appliquer des filtres et des jointures.&lt;/p&gt;
&lt;p&gt;Les exemples suivants supposent la table suivante :&lt;/p&gt;
&lt;table class=&#034;spip&#034;&gt;
&lt;thead&gt;&lt;tr class='row_first'&gt;&lt;th id='id247d_c0'&gt;posts &lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td headers='id247d_c0'&gt;id&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td headers='id247d_c0'&gt;titre&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td headers='id247d_c0'&gt;content&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;message&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;h3 class=&#034;spip&#034;&gt;Filtres&lt;/h3&gt;
&lt;p&gt;Les filtres fournissent une fonctionnalit&#233; de recherche sur les appels de liste, en utilisant le param&#232;tre &#034;filter&#034;. Vous devez sp&#233;cifier le nom de la colonne, une virgule, le type de correspondance, une autre virgule et la valeur que vous souhaitez filtrer.&lt;/p&gt;
&lt;p&gt;Types de match support&#233;s :&lt;/p&gt;
&lt;p&gt;&#034;cs&#034; : contient une cha&#238;ne (la cha&#238;ne contient une valeur)&lt;br class='autobr' /&gt;
&#034;sw&#034; : commence par (cha&#238;ne commence par valeur)&lt;br class='autobr' /&gt;
&#034;ew&#034; : se termine par (cha&#238;ne se termine par valeur)&lt;br class='autobr' /&gt;
&#034;eq&#034; : &#233;gal (la cha&#238;ne ou le nombre correspond exactement)&lt;br class='autobr' /&gt;
&#034;lt&#034; : inf&#233;rieur &#224; (nombre inf&#233;rieur &#224; la valeur)&lt;br class='autobr' /&gt;
&#034;le&#034; : inf&#233;rieur ou &#233;gal (le nombre est inf&#233;rieur ou &#233;gal &#224; la valeur)&lt;br class='autobr' /&gt;
&#034;ge&#034; : sup&#233;rieur ou &#233;gal (le nombre est sup&#233;rieur ou &#233;gal &#224; la valeur)&lt;br class='autobr' /&gt;
&#034;gt&#034; : sup&#233;rieur &#224; (nombre sup&#233;rieur &#224; la valeur)&lt;br class='autobr' /&gt;
&#034;bt&#034; : entre (le nombre est entre deux valeurs s&#233;par&#233;es par une virgule)&lt;br class='autobr' /&gt;
&#034;in&#034; : in (le nombre ou la cha&#238;ne est dans une liste de valeurs s&#233;par&#233;es par des virgules)&lt;br class='autobr' /&gt;
&#034;is&#034; : est null (le champ contient la valeur &#034;NULL&#034;)&lt;/p&gt;
&lt;p&gt;Vous pouvez annuler tous les filtres en ajoutant un caract&#232;re &#034;n&#034;, afin que &#034;eq&#034; devienne &#034;neq&#034;. Exemples d'utilisation du filtre :&lt;/p&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;GET / records / categories? Filter = nom, eq, Internet&lt;br /&gt;
GET / records / categories? Filter = nom, sw, Inter&lt;br /&gt;
GET / records / categories? Filter = id, le, 1&lt;br /&gt;
GET / records / categories? Filter = id, ngt, 2&lt;br /&gt;
GET / records / categories? Filter = id, bt, 1,1&lt;/code&gt;&lt;/div&gt;&lt;h3 class=&#034;spip&#034;&gt;Filtres multiples&lt;/h3&gt;
&lt;p&gt;Les filtres peuvent &#234;tre appliqu&#233;s en r&#233;p&#233;tant le param&#232;tre &#034;filter&#034; dans l'URL. Par exemple l'URL suivante :&lt;/p&gt;
&lt;pre&gt;GET / records / categories ? Filter = id, gt, 1 &amp; filter = id, lt, 3&lt;/pre&gt;
&lt;p&gt;demandera toutes les cat&#233;gories &#034;o&#249; id&gt; 1 et id &lt;3&#034;. Si vous vouliez &#034;o&#249; id = 2 ou id = 4&#034;, vous devriez &#233;crire :&lt;/p&gt;
&lt;pre&gt;GET / enregistrements / cat&#233;gories ? Filter1 = id, eq, 2 &amp; filter2 = id, eq, 4&lt;/pre&gt;
&lt;p&gt;Comme vous le voyez, nous avons ajout&#233; un num&#233;ro au param&#232;tre &#034;filter&#034; pour indiquer que &#034;OR&#034; au lieu de &#034;AND&#034; doit &#234;tre appliqu&#233;. Notez que vous pouvez &#233;galement r&#233;p&#233;ter &#034;filter1&#034; et cr&#233;er un &#034;ET&#034; dans un &#034;OU&#034;. Comme vous pouvez &#233;galement aller plus loin en ajoutant une lettre (a-f), vous pouvez cr&#233;er presque n'importe quel arbre de conditions relativement complexe.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Notes :&lt;/strong&gt;
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; Vous ne pouvez filtrer que sur la table demand&#233;e (pas sur la table incluse) et les filtres ne sont appliqu&#233;s qu'aux appels de liste.&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;S&#233;lection de colonne&lt;/h3&gt;
&lt;p&gt;Par d&#233;faut, toutes les colonnes sont s&#233;lectionn&#233;es. Avec le param&#232;tre &#034;include&#034;, vous pouvez s&#233;lectionner des colonnes sp&#233;cifiques. Vous pouvez utiliser un point pour s&#233;parer le nom de la table du nom de la colonne. Plusieurs colonnes doivent &#234;tre s&#233;par&#233;es par des virgules. Un ast&#233;risque (&#034;*&#034;) peut &#234;tre utilis&#233; comme caract&#232;re g&#233;n&#233;rique pour indiquer &#034;toutes les colonnes&#034;. Semblable &#224; &#034;include&#034;, vous pouvez utiliser le param&#232;tre &#034;exclude&#034; pour supprimer certaines colonnes :&lt;/p&gt;
&lt;pre&gt;
GET / enregistrements / cat&#233;gories / 1 ? Include = nom
GET /records/categories/1 ?include=categories.name
GET /records/categories/1 ?exclude=categories.id
&lt;/pre&gt;
&lt;p&gt;Sortie :&lt;/p&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt; {&lt;br /&gt; &#034;nom&#034;: &#034;Internet&#034;&lt;br /&gt; }&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Notes :&lt;/strong&gt;
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; Les colonnes utilis&#233;es pour inclure des entit&#233;s associ&#233;es sont automatiquement ajout&#233;es et ne peuvent pas &#234;tre omises de la sortie.&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Tri&lt;/h3&gt;
&lt;p&gt;Avec le param&#232;tre &#034;order&#034;, vous pouvez trier. Par d&#233;faut, le tri s'effectue par ordre croissant, mais en sp&#233;cifiant &#034;desc&#034;, cela peut &#234;tre invers&#233; :&lt;/p&gt;
&lt;pre&gt;GET / records / categories ? Order = nom, desc&lt;/pre&gt;&lt;pre&gt;GET / enregistrements / cat&#233;gories ? Order = id, desc &amp; order = name&lt;/pre&gt;
&lt;p&gt;Sortie :&lt;/p&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt; {&lt;br /&gt; &#034;records&#034;: [&lt;br /&gt; {&lt;br /&gt; &#034;id&#034;: 3&lt;br /&gt; &#034;name&#034;: &#034;d&#233;veloppement Web&#034;&lt;br /&gt; },&lt;br /&gt; {&lt;br /&gt; &#034;id&#034;: 1&lt;br /&gt; &#034;nom&#034;: &#034;Internet&#034;&lt;br /&gt; }&lt;br /&gt; ]&lt;br /&gt; }&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Notes :&lt;/strong&gt;
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; Vous pouvez trier sur plusieurs champs en utilisant plusieurs param&#232;tres &#034;ordre&#034;. Vous ne pouvez pas commander sur des colonnes &#034;jointes&#034;.&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Taille limite&lt;/h3&gt;
&lt;p&gt;Le param&#232;tre &#034;size&#034; limite le nombre d'enregistrements renvoy&#233;s. Ceci peut &#234;tre utilis&#233; pour les N premi&#232;res listes avec le param&#232;tre &#034;order&#034; (utilisez l'ordre d&#233;croissant).&lt;/p&gt;
&lt;pre&gt;GET / records / categories ? Order = id, desc &amp; size = 1&lt;/pre&gt;
&lt;p&gt;Sortie :&lt;/p&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt; {&lt;br /&gt; &#034;records&#034;: [&lt;br /&gt; {&lt;br /&gt; &#034;id&#034;: 3&lt;br /&gt; &#034;name&#034;: &#034;d&#233;veloppement Web&#034;&lt;br /&gt; }&lt;br /&gt; ]&lt;br /&gt; }&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Notes :&lt;/strong&gt;
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; Si vous souhaitez &#233;galement conna&#238;tre le nombre total d'enregistrements, vous pouvez utiliser le param&#232;tre &#034;page&#034;.&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Pagination&lt;/h3&gt;
&lt;p&gt;Le param&#232;tre &#034;page&#034; contient la page demand&#233;e. La taille de page par d&#233;faut est 20, mais peut &#234;tre ajust&#233;e (par exemple &#224; 50).&lt;/p&gt;
&lt;pre&gt;GET / records / categories ? Order = id &amp; page = 1&lt;/pre&gt;&lt;pre&gt;GET / records / categories ? Order = id &amp; page = 1,50&lt;/pre&gt;
&lt;p&gt;Sortie :&lt;/p&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt; {&lt;br /&gt; &#034;records&#034;: [&lt;br /&gt; {&lt;br /&gt; &#034;id&#034;: 1&lt;br /&gt; &#034;nom&#034;: &#034;Internet&#034;&lt;br /&gt; },&lt;br /&gt; {&lt;br /&gt; &#034;id&#034;: 3&lt;br /&gt; &#034;name&#034;: &#034;d&#233;veloppement Web&#034;&lt;br /&gt; }&lt;br /&gt; ],&lt;br /&gt; &#034;r&#233;sultats&#034;: 2&lt;br /&gt; }&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Notes :&lt;/strong&gt;
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; les pages non command&#233;es ne pouvant pas &#234;tre pagin&#233;es, elles seront class&#233;es par cl&#233; primaire.&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Jointures&lt;/h3&gt;
&lt;p&gt;Supposons que vous ayez une table des publications qui comporte des commentaires (formul&#233;s par les utilisateurs) et que les publications puissent avoir des balises. Les exemples suivants supposent le jeu de tables suivant :&lt;/p&gt;
&lt;table class=&#034;spip&#034;&gt;
&lt;thead&gt;&lt;tr class='row_first'&gt;&lt;th id='id1c65_c0'&gt;posts &lt;/th&gt;&lt;th id='id1c65_c1'&gt;commentaires &lt;/th&gt;&lt;th id='id1c65_c2'&gt;utilisateurs &lt;/th&gt;&lt;th id='id1c65_c3'&gt;post_tags &lt;/th&gt;&lt;th id='id1c65_c4'&gt;tags&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td headers='id1c65_c0'&gt;id&lt;/td&gt;
&lt;td headers='id1c65_c1'&gt;id&lt;/td&gt;
&lt;td headers='id1c65_c2'&gt;id&lt;/td&gt;
&lt;td headers='id1c65_c3'&gt;id&lt;/td&gt;
&lt;td headers='id1c65_c4'&gt;id&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td headers='id1c65_c0'&gt;titre&lt;/td&gt;
&lt;td headers='id1c65_c1'&gt;post_id&lt;/td&gt;
&lt;td headers='id1c65_c2'&gt;nom d'utilisateur&lt;/td&gt;
&lt;td headers='id1c65_c3'&gt;post_id&lt;/td&gt;
&lt;td headers='id1c65_c4'&gt;nom&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td headers='id1c65_c0'&gt;content&lt;/td&gt;
&lt;td headers='id1c65_c1'&gt;user_id&lt;/td&gt;
&lt;td headers='id1c65_c2'&gt;phone&lt;/td&gt;
&lt;td headers='id1c65_c3'&gt;tag_id&lt;/td&gt;
&lt;td headers='id1c65_c4'&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td headers='id1c65_c0'&gt;message&lt;/td&gt;
&lt;td headers='id1c65_c1'&gt;cr&#233;&#233;&lt;/td&gt;
&lt;td headers='id1c65_c2'&gt;&lt;/td&gt;
&lt;td headers='id1c65_c3'&gt;&lt;/td&gt;
&lt;td headers='id1c65_c4'&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Lorsque vous souhaitez r&#233;pertorier les publications avec leurs commentaires, les utilisateurs et les balises, vous pouvez demander deux chemins &#034;arborescents&#034; :&lt;/p&gt;
&lt;p&gt;messages -&gt; commentaires -&gt; utilisateurs&lt;br class='autobr' /&gt;
posts -&gt; post_tags -&gt; tags&lt;br class='autobr' /&gt;
Ces chemins ont la m&#234;me racine et cette demande peut &#234;tre &#233;crite au format URL comme suit :&lt;/p&gt;
&lt;pre&gt;GET / records / posts ? Join = commentaires, utilisateurs &amp; tags = join&lt;/pre&gt;
&lt;p&gt;Ici, vous &#234;tes autoris&#233; &#224; laisser de c&#244;t&#233; la table interm&#233;diaire qui lie les publications aux balises. Dans cet exemple, les trois types de relation de table (hasMany, belongsTo et hasAndBelongsToMany) sont en jeu :&lt;/p&gt;
&lt;p&gt;&#034;post&#034; a beaucoup de &#034;commentaires&#034;&lt;br class='autobr' /&gt;
&#034;commentaire&#034; appartient &#224; &#034;utilisateur&#034;&lt;br class='autobr' /&gt;
&#034;post&#034; a et appartient &#224; beaucoup de &#034;tags&#034;&lt;/p&gt;
&lt;p&gt;Cela peut entra&#238;ner les donn&#233;es JSON suivantes :&lt;/p&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;{&lt;br /&gt; &#034;records&#034;: [&lt;br /&gt; {&lt;br /&gt; &#034;id&#034;: 1,&lt;br /&gt; &#034;title&#034;: &#034;Bonjour tout le monde!&#034;,&lt;br /&gt; &#034;content&#034;: &#034;Bienvenue dans le premier message.&#034;,&lt;br /&gt; &#034;created&#034;: &#034;2018-03-05T20: 12: 56Z&#034;,&lt;br /&gt; &#034;commentaires&#034;: [&lt;br /&gt; {&lt;br /&gt; id: 1,&lt;br /&gt; post_id: 1,&lt;br /&gt; identifiant d'utilisateur: {&lt;br /&gt; id: 1,&lt;br /&gt; nom d'utilisateur: &#034;mevdschee&#034;,&lt;br /&gt; t&#233;l&#233;phone: null,&lt;br /&gt; },&lt;br /&gt; message: &#034;Salut!&#034;&lt;br /&gt; },&lt;br /&gt; {&lt;br /&gt; id: 2,&lt;br /&gt; post_id: 1,&lt;br /&gt; identifiant d'utilisateur: {&lt;br /&gt; id: 1,&lt;br /&gt; nom d'utilisateur: &#034;mevdschee&#034;,&lt;br /&gt; t&#233;l&#233;phone: null,&lt;br /&gt; },&lt;br /&gt; message: &#034;Salut encore!&#034;&lt;br /&gt; }&lt;br /&gt; ],&lt;br /&gt; &#034;Mots cl&#233;s&#034;: []&lt;br /&gt; },&lt;br /&gt; {&lt;br /&gt; &#034;id&#034;: 2,&lt;br /&gt; &#034;title&#034;: &#034;Le noir est le nouveau rouge&#034;,&lt;br /&gt; &#034;content&#034;: &#034;Ceci est le deuxi&#232;me message.&#034;,&lt;br /&gt; &#034;created&#034;: &#034;2018-03-06T21: 34: 01Z&#034;,&lt;br /&gt; &#034;commentaires&#034;: [],&lt;br /&gt; &#034;Mots cl&#233;s&#034;: [&lt;br /&gt; {&lt;br /&gt; id: 1,&lt;br /&gt; message: &#034;dr&#244;le&#034;&lt;br /&gt; },&lt;br /&gt; {&lt;br /&gt; id: 2,&lt;br /&gt; message: &#034;informatif&#034;&lt;br /&gt; }&lt;br /&gt; ]&lt;br /&gt; }&lt;br /&gt; ]&lt;br /&gt;
}&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;Vous voyez que les relations &#034;belongsTo&#034; sont d&#233;tect&#233;es et la valeur de la cl&#233; &#233;trang&#232;re est remplac&#233;e par l'objet r&#233;f&#233;renc&#233;. Dans le cas de &#034;hasMany&#034; et &#034;hasAndBelongsToMany&#034;, le nom de la table est utilis&#233; comme nouvelle propri&#233;t&#233; de l'objet.&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Op&#233;rations par lots&lt;/h3&gt;
&lt;p&gt;Lorsque vous souhaitez cr&#233;er, lire, mettre &#224; jour ou supprimer, vous pouvez sp&#233;cifier plusieurs valeurs de cl&#233; primaire dans l'URL. Vous devez &#233;galement envoyer un tableau au lieu d'un objet dans le corps de la demande pour cr&#233;er et mettre &#224; jour.&lt;/p&gt;
&lt;p&gt;Pour lire un enregistrement de cette table, la demande peut &#234;tre &#233;crite au format URL sous la forme suivante :&lt;/p&gt;
&lt;pre&gt;GET / records / posts / 1,2&lt;/pre&gt;
&lt;p&gt;Le r&#233;sultat peut &#234;tre :&lt;/p&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;[&lt;br /&gt; {&lt;br /&gt; &#034;id&#034;: 1,&lt;br /&gt; &#034;title&#034;: &#034;Bonjour tout le monde!&#034;,&lt;br /&gt; &#034;content&#034;: &#034;Bienvenue dans le premier message.&#034;,&lt;br /&gt; &#034;created&#034;: &#034;2018-03-05T20: 12: 56Z&#034;&lt;br /&gt; },&lt;br /&gt; {&lt;br /&gt; &#034;id&#034;: 2,&lt;br /&gt; &#034;title&#034;: &#034;Le noir est le nouveau rouge&#034;,&lt;br /&gt; &#034;content&#034;: &#034;Ceci est le deuxi&#232;me message.&#034;,&lt;br /&gt; &#034;created&#034;: &#034;2018-03-06T21: 34: 01Z&#034;&lt;br /&gt; }&lt;br /&gt;
]&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;De m&#234;me, lorsque vous souhaitez effectuer une mise &#224; jour par lot, la demande au format URL est &#233;crite comme suit :&lt;/p&gt;
&lt;pre&gt;PUT / records / posts / 1,2&lt;/pre&gt;
&lt;p&gt;O&#249; &#034;1&#034; et &#034;2&#034; sont les valeurs des cl&#233;s primaires des enregistrements que vous souhaitez mettre &#224; jour. Le corps devrait contenir le m&#234;me nombre d'objets qu'il y a de cl&#233;s primaires dans l'URL :&lt;/p&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;[&lt;br /&gt; {&lt;br /&gt; &#034;titre&#034;: &#034;Titre ajust&#233; pour ID 1&#034;&lt;br /&gt; },&lt;br /&gt; {&lt;br /&gt; &#034;titre&#034;: &#034;Titre ajust&#233; pour ID 2&#034;&lt;br /&gt; }&lt;br /&gt;
]&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;Ceci ajuste les titres des messages. Et les valeurs de retour sont le nombre de lignes d&#233;finies :&lt;/p&gt;
&lt;p&gt;1,1&lt;/p&gt;
&lt;p&gt;Ce qui signifie qu'il y avait deux op&#233;rations de mise &#224; jour et que chacune d'entre elles avait d&#233;fini une ligne. Les op&#233;rations en mode batch utilisent des transactions de base de donn&#233;es, de sorte qu'elles r&#233;ussissent ou &#233;chouent (les transactions r&#233;ussies sont renvoy&#233;es).&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>API HTTP REST</title>
		<link>https://static.oa.dnc.global/-Techniques-et-code-du-serveur-OAuthSD-.html#apihttprest</link>
		<guid isPermaLink="true">https://static.oa.dnc.global/-Techniques-et-code-du-serveur-OAuthSD-.html#apihttprest</guid>
		<dc:date>2019-06-25T17:30:00Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>DnC</dc:creator>



		<description>
&lt;p&gt;OAuthSD expose une API HTTP REST qui permet d'automatiser certaines t&#226;ches autour du serveur d'authentification. Une application d'administration (supervision) peut ainsi contr&#244;ler les donn&#233;es du serveur. L'API s'appuie sur HTTPFoundation de Symphony. Les objets sont manipul&#233;s au format Collection+JSON ou sous un format json simple. &lt;br class='autobr' /&gt;
Remarque : Il existe &#233;galement une API HTTP REST + TreeQL. &lt;br class='autobr' /&gt;
L'API r&#233;pond &#224; une unique action &#171; http.api &#187; qui va g&#233;rer trois param&#232;tres : &lt;br class='autobr' /&gt; - un format : c'est le nom de (...)&lt;/p&gt;


-
&lt;a href="https://static.oa.dnc.global/-Techniques-et-code-du-serveur-OAuthSD-.html" rel="directory"&gt;Techniques et code du serveur OAuthSD&lt;/a&gt;


		</description>


 <content:encoded>&lt;img class='spip_logo spip_logo_right spip_logos' alt=&#034;&#034; style='float:right' src='https://static.oa.dnc.global/local/cache-vignettes/L141xH150/arton88-bbb3e.jpg?1733972200' width='141' height='150' /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;OAuthSD expose une API HTTP REST qui permet d'automatiser certaines t&#226;ches autour du serveur d'authentification. Une application d'administration (supervision) peut ainsi contr&#244;ler les donn&#233;es du serveur.&lt;br class='autobr' /&gt;
L'API s'appuie sur HTTPFoundation de Symphony. Les objets sont manipul&#233;s au format &lt;a href=&#034;https://github.com/collection-json/spec#6-data-types&#034; class='spip_out' rel='external'&gt;Collection+JSON&lt;/a&gt; ou sous un format json simple.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;Remarque : Il existe &#233;galement une &lt;a href='https://static.oa.dnc.global/-Techniques-et-code-du-serveur-OAuthSD-.html#apihttpresttreeql' class='spip_in'&gt;API HTTP REST + TreeQL&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;L'API r&#233;pond &#224; une unique &lt;strong&gt;action&lt;/strong&gt; &#171; http.api &#187; qui va g&#233;rer trois param&#232;tres :&lt;/p&gt;
&lt;p&gt; - un &lt;strong&gt;format&lt;/strong&gt; : c'est le nom de l'API r&#233;ellement impl&#233;ment&#233;e : json, collectionjson.&lt;br class='autobr' /&gt; - un &lt;strong&gt;type&lt;/strong&gt; (ou une collection) : le type des donn&#233;es qu'on veut utiliser : auteurs, users, clients ...&lt;br class='autobr' /&gt; - une &lt;strong&gt;ressource&lt;/strong&gt; : l'identifiant unique d'un contenu (un nombre entier).&lt;/p&gt;
&lt;p&gt;Ces trois param&#232;tres sont tout simplement ajout&#233;s &#224; la suite dans l'URL, s&#233;par&#233;s par des &#171; / &#187;. Seul le premier est toujours obligatoire, les autres sont ajout&#233;s suivant ce que l'on veut manipuler. On se retrouve alors avec trois familles d'Url de requ&#234;tes.&lt;/p&gt;
&lt;p&gt;Exemple de requ&#234;te d'action :&lt;/p&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;https://oa.dnc.global/web/http.api/collectionjson/users/3&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;La deuxi&#232;me forme peut &#233;galement &#234;tre compl&#233;t&#233;e par des param&#232;tres d'URL. Exemple :&lt;/p&gt;
&lt;p&gt;Exemple de requ&#234;te avec param&#232;tres :&lt;/p&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;https://oa.dnc.global/web/http.api/collectionjson/users/?offset=10&amp;length=10&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;L'API permet d'effectuer les op&#233;rations CRUD&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href='#nb1' class='spip_note' rel='appendix' title='En r&#233;alit&#233; ce n'est pas &#233;quivalent. Voir :' id='nh1'&gt;1&lt;/a&gt;]&lt;/span&gt; sur une table de la base de donn&#233;es en fonction de la m&#233;thode de la requ&#234;te HTTP GET, POST, PUT ou DELETE, si toutefois les permissions sont accord&#233;es.&lt;/p&gt;
&lt;p&gt;L'API s'efforce de r&#233;pondre &#224; la &lt;a href=&#034;https://tools.ietf.org/html/draft-ietf-httpbis-p2-semantics-16&#034; class='spip_out' rel='external'&gt;sp&#233;cification de s&#233;mantique HTTP 1.1&lt;/a&gt;.&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Types&lt;/h3&gt;
&lt;p&gt;Pour s'interfacer avec une application de supervision, OAuth SD expose les types :
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; oidc_logs, &lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; users, &lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; clients
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; auteurs. &lt;br class='autobr' /&gt;
D'une fa&#231;on g&#233;n&#233;rale, les types correspondent aux tables &#233;ponymes.&lt;br class='autobr' /&gt;
Sauf exception (voir la constante de configuration API_HTTP_CHAMPS_SENSIBLES), tous les champs d'une table peuvent &#234;tre manipul&#233;s.&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Formats&lt;/h3&gt;
&lt;p&gt;Dans le cadre d'OAuthSD, les objets sont manipul&#233;s aux formats suivants :&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;collectionjson&lt;/strong&gt;&lt;br class='autobr' /&gt;
Ce format est assez lourd, retournant les donn&#233;es sous forme d'arrays associatifs et d'objets, ce qui permet de nombreuses applications. Voir : &lt;a href=&#034;https://github.com/collection-json/spec&#034; class='spip_out' rel='external'&gt;Collection+JSON&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Exemple : la requ&#234;te :&lt;/p&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;https://oa.dnc.global/web/http.api/collectionjson/oidc_logs/?offset=3000&amp;length=2&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;retourne :&lt;/p&gt;
&lt;div class=&#034;coloration_code code&#034;&gt;&lt;div class=&#034;spip_javascript code&#034;&gt;&lt;div class=&#034;javascript&#034;&gt;&lt;ol&gt;&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;collection&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;version&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;1.0&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;href&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;https://oa.dnc.global/web/http.api/collectionjson/oidc_logs/?offset=3000&amp;length=2&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;items&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&amp;#91;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;href&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;https://oa.dnc.global/web/http.api/collectionjson/&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;links&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&amp;#91;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;rel&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;edit&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;href&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;https://oa.dnc.global/web/http.api/collectionjson/&#034;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#125;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;rel&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;alternate&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;type&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;text/html&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;href&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;https://oa.dnc.global/web/urls_propres2_dist&#034;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;data&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&amp;#91;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;name&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;id_oidc_log&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;value&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;3400&#034;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#125;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;name&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;remote_addr&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;value&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;173.208.157.186&#034;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#125;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;name&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;state&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;value&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;&#034;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#125;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;name&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;client_id&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;value&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;testopenid4&#034;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#125;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;name&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;user_id&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;value&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;Unk&#034;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#125;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;name&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;datetime&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;value&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;2019-03-06 03:04:09&#034;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#125;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;name&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;origin&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;value&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;Authorize&#034;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#125;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;name&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;message&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;value&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;2019-03-06 03:04:09 - 173.208.157.186 - Information : Authorize : Begin&lt;span style=&#034;color: #000099; font-weight: bold;&#034;&gt;\n&lt;/span&gt;&lt;span style=&#034;color: #000099; font-weight: bold;&#034;&gt;\n&lt;/span&gt;&#034;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#125;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;name&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;level&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;value&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;1&#034;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#125;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;name&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;weight&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;value&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;0&#034;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#125;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;name&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;errnum&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;value&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;1&#034;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&amp;#93;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#125;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;href&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;https://oa.dnc.global/web/http.api/collectionjson/&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;links&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&amp;#91;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;rel&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;edit&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;href&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;https://oa.dnc.global/web/http.api/collectionjson/&#034;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#125;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;rel&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;alternate&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;type&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;text/html&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;href&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;https://oa.dnc.global/web/urls_propres2_dist&#034;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;data&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&amp;#91;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;name&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;id_oidc_log&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;value&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;3401&#034;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#125;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;name&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;remote_addr&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;value&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;173.208.157.186&#034;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#125;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;name&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;state&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;value&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;fc06ce8d03c189c7af1167d2e16e4a9a&#034;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#125;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;name&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;client_id&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;value&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;testopenid4&#034;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#125;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;name&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;user_id&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;value&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;Unk&#034;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#125;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;name&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;datetime&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;value&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;2019-03-06 03:04:09&#034;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#125;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;name&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;origin&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;value&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;Authorize&#034;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#125;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;name&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;message&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;value&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;2019-03-06 03:04:09 - 173.208.157.186 - Information : Authorize : Begin authentification for client = testopenid4&lt;span style=&#034;color: #000099; font-weight: bold;&#034;&gt;\n&lt;/span&gt;&lt;span style=&#034;color: #000099; font-weight: bold;&#034;&gt;\n&lt;/span&gt;&#034;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#125;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;name&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;level&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;value&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;1&#034;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#125;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;name&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;weight&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;value&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;1&#034;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#125;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;name&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;errnum&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;value&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;110&#034;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&amp;#93;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;objects&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&amp;#91;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;id_oidc_log&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;3400&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;remote_addr&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;173.208.157.186&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;state&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;client_id&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;testopenid4&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;user_id&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;Unk&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;datetime&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;2019-03-06 03:04:09&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;origin&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;Authorize&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;message&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;2019-03-06 03:04:09 - 173.208.157.186 - Information : Authorize : Begin&lt;span style=&#034;color: #000099; font-weight: bold;&#034;&gt;\n&lt;/span&gt;&lt;span style=&#034;color: #000099; font-weight: bold;&#034;&gt;\n&lt;/span&gt;&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;level&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;1&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;weight&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;0&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;errnum&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;1&#034;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#125;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;id_oidc_log&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;3401&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;remote_addr&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;173.208.157.186&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;state&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;fc06ce8d03c189c7af1167d2e16e4a9a&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;client_id&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;testopenid4&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;user_id&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;Unk&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;datetime&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;2019-03-06 03:04:09&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;origin&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;Authorize&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;message&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;2019-03-06 03:04:09 - 173.208.157.186 - Information : Authorize : Begin authentification for client = testopenid4&lt;span style=&#034;color: #000099; font-weight: bold;&#034;&gt;\n&lt;/span&gt;&lt;span style=&#034;color: #000099; font-weight: bold;&#034;&gt;\n&lt;/span&gt;&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;level&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;1&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;weight&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;1&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;errnum&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;110&#034;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&amp;#93;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;p class='download code_download'&gt;&lt;a href='https://static.oa.dnc.global/local/cache-code/4d84f6f91b706ca93f5b21cde5399282.txt'&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Format json&lt;/strong&gt;&lt;br class='autobr' /&gt;
Retourne un simple array. Exemple : la requ&#234;te :&lt;/p&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;https://oa.dnc.global/web/http.api/json/oidc_logs/?offset=3000&amp;length=2&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;retourne les m&#234;mes &#233;l&#233;ments sous une forme tr&#232;s compacte :&lt;/p&gt;
&lt;div class=&#034;coloration_code code&#034;&gt;&lt;div class=&#034;spip_javascript code&#034;&gt;&lt;div class=&#034;javascript&#034;&gt;&lt;ol&gt;&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#91;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&#123;&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;id_oidc_log&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;3400&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;remote_addr&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;173.208.157.186&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;state&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;client_id&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;testopenid4&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;user_id&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;Unk&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;datetime&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;2019-03-06 03:04:09&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;origin&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;Authorize&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;message&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;2019-03-06 03:04:09 - 173.208.157.186 - Information : Authorize : Begin&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;level&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;1&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;weight&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;0&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;errnum&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;1&#034;&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&#123;&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;id_oidc_log&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;3401&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;remote_addr&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;173.208.157.186&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;state&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;fc06ce8d03c189c7af1167d2e16e4a9a&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;client_id&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;testopenid4&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;user_id&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;Unk&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;datetime&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;2019-03-06 03:04:09&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;origin&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;Authorize&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;message&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;2019-03-06 03:04:09 - 173.208.157.186 - Information : Authorize : Begin authentification for client = testopenid4&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;level&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;1&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;weight&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;1&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;errnum&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;110&#034;&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#93;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;p class='download code_download'&gt;&lt;a href='https://static.oa.dnc.global/local/cache-code/299f57c1348140a1ecd20c2815a650d1.txt'&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;Le format collectionjson est int&#233;ressant en lecture. En &#233;criture, on pr&#233;f&#233;rera le format json qui suffit &#224; d&#233;crire les objets &#224; enregistrer.&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Actions&lt;/h3&gt;
&lt;p&gt;Suivant le paradigme HTTP Rest, les actions d&#233;coulent de la m&#233;thode HTTP utilis&#233;e pour appeler l'API : get, post, put ou delete.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Formes g&#233;n&#233;rales des requ&#234;tes GET&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; Afficher la liste des collections disponibles sous le format indiqu&#233; :&lt;/p&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;https://oa.dnc.global/web/http.api/&lt;format&gt;&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; Liste le contenu de la collection &#034;type&#034; :&lt;/p&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;https://oa.dnc.global/web/http.api/&lt;format&gt;/&lt;type&gt;&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; Liste les &#233;l&#233;ments s&#233;lectionn&#233;s &#224; l'aide des param&#232;tres d'URL indiqu&#233;s :&lt;/p&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;https://oa.dnc.global/web/http.api/&lt;format&gt;/&lt;type&gt;?&lt;param&#232;tres&gt;&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; Acc&#232;s &#224; une ressource pr&#233;cise :&lt;/p&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;https://oa.dnc.global/web/http.api/collectionjson/&lt;type&gt;/NN&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;NN est la valeur de l'identifiant (champ id_type, cl&#233; unique) de l'enregistrement dans la table.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Requ&#234;tes avec POST, PUT et DELETE&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Ces requ&#234;tes doivent &#234;tre g&#233;n&#233;r&#233;es programmatiquement : par exemple avec cURL c&#244;t&#233; serveur ou en Javascript c&#244;t&#233; client. On trouve couramment des biblioth&#232;que exposant des fonctions de ce type :&lt;/p&gt;
&lt;p&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; post_collection($requete, $reponse)&lt;br class='autobr' /&gt;
Cr&#233;er une nouvelle ressource dans la collection (cr&#233;er un nouvel enregistrement dans la table).&lt;/p&gt;
&lt;p&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; put_ressource($requete, $reponse)&lt;br class='autobr' /&gt;
Ce cas est sensiblement le m&#234;me que le pr&#233;c&#233;dent, &#224; ceci pr&#232;s que l'on travaille sur la modification d'une ressource pr&#233;cise.&lt;/p&gt;
&lt;p&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; delete_ressource($requete, $reponse)&lt;br class='autobr' /&gt;
Supprimer d&#233;finitivement une ressource.&lt;/p&gt;
&lt;p&gt;Pour la transmission des donn&#233;es aux requ&#234;tes avec POST et PUT, deux formats sont possibles :
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; application/json :&lt;/p&gt;
&lt;div class=&#034;coloration_code code&#034;&gt;&lt;div class=&#034;spip_php code&#034;&gt;&lt;div class=&#034;php&#034;&gt;&lt;ol&gt;&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #000088;&#034;&gt;$data&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; &lt;a href=&#034;http://www.php.net/array&#034;&gt;&lt;span style=&#034;color: #990000;&#034;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;'client_id'&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&gt;&lt;/span&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;'testtest'&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;'client_secret'&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&gt;&lt;/span&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;'TheBigSecret'&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;'redirect_uri'&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&gt;&lt;/span&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;'https://oa.dnc.global/web/?action=oauth'&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;'grant_types'&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&gt;&lt;/span&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;'authorization_code'&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;'scope'&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&gt;&lt;/span&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;'openid sli'&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #000088;&#034;&gt;$h&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; &lt;a href=&#034;http://www.php.net/curl_init&#034;&gt;&lt;span style=&#034;color: #990000;&#034;&gt;curl_init&lt;/span&gt;&lt;/a&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt;&#034;https://oa.dnc.global/web/http.api/json/clients/&#034;&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;a href=&#034;http://www.php.net/curl_setopt&#034;&gt;&lt;span style=&#034;color: #990000;&#034;&gt;curl_setopt&lt;/span&gt;&lt;/a&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #000088;&#034;&gt;$h&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt; CURLOPT_RETURNTRANSFER&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt; &lt;span style=&#034;color: #009900; font-weight: bold;&#034;&gt;true&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;a href=&#034;http://www.php.net/curl_setopt&#034;&gt;&lt;span style=&#034;color: #990000;&#034;&gt;curl_setopt&lt;/span&gt;&lt;/a&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #000088;&#034;&gt;$h&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt; CURLOPT_TIMEOUT&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt; &lt;span style=&#034;color: #cc66cc;&#034;&gt;10&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;a href=&#034;http://www.php.net/curl_setopt&#034;&gt;&lt;span style=&#034;color: #990000;&#034;&gt;curl_setopt&lt;/span&gt;&lt;/a&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #000088;&#034;&gt;$h&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt; CURLOPT_POST&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt; &lt;span style=&#034;color: #009900; font-weight: bold;&#034;&gt;true&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #000088;&#034;&gt;$data_string&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; &lt;a href=&#034;http://www.php.net/json_encode&#034;&gt;&lt;span style=&#034;color: #990000;&#034;&gt;json_encode&lt;/span&gt;&lt;/a&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #000088;&#034;&gt;$data&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;a href=&#034;http://www.php.net/curl_setopt&#034;&gt;&lt;span style=&#034;color: #990000;&#034;&gt;curl_setopt&lt;/span&gt;&lt;/a&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #000088;&#034;&gt;$h&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt; CURLOPT_POSTFIELDS&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$data_string&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;a href=&#034;http://www.php.net/curl_setopt&#034;&gt;&lt;span style=&#034;color: #990000;&#034;&gt;curl_setopt&lt;/span&gt;&lt;/a&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #000088;&#034;&gt;$h&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt; CURLOPT_HTTPHEADER&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt; &lt;a href=&#034;http://www.php.net/array&#034;&gt;&lt;span style=&#034;color: #990000;&#034;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;'Content-Type: application/json'&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;'Content-Length: '&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;.&lt;/span&gt; &lt;a href=&#034;http://www.php.net/strlen&#034;&gt;&lt;span style=&#034;color: #990000;&#034;&gt;strlen&lt;/span&gt;&lt;/a&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #000088;&#034;&gt;$data_string&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;'Accept: application/json'&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;p class='download code_download'&gt;&lt;a href='https://static.oa.dnc.global/local/cache-code/753882bf5ce1ddee7e3016858bdc6d81.txt'&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; application/x-www-form-urlencoded :&lt;/p&gt;
&lt;div class=&#034;coloration_code code&#034;&gt;&lt;div class=&#034;spip_php code&#034;&gt;&lt;div class=&#034;php&#034;&gt;&lt;ol&gt;&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #339933;&#034;&gt;...&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;a href=&#034;http://www.php.net/curl_setopt&#034;&gt;&lt;span style=&#034;color: #990000;&#034;&gt;curl_setopt&lt;/span&gt;&lt;/a&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #000088;&#034;&gt;$h&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt; CURLOPT_HTTPHEADER&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt; &lt;a href=&#034;http://www.php.net/array&#034;&gt;&lt;span style=&#034;color: #990000;&#034;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;'Content-Type: application/x-www-form-urlencoded'&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;'Accept: application/json'&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;a href=&#034;http://www.php.net/curl_setopt&#034;&gt;&lt;span style=&#034;color: #990000;&#034;&gt;curl_setopt&lt;/span&gt;&lt;/a&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #000088;&#034;&gt;$h&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt; CURLOPT_POSTFIELDS&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt; &lt;a href=&#034;http://www.php.net/http_build_query&#034;&gt;&lt;span style=&#034;color: #990000;&#034;&gt;http_build_query&lt;/span&gt;&lt;/a&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #000088;&#034;&gt;$data&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;p class='download code_download'&gt;&lt;a href='https://static.oa.dnc.global/local/cache-code/d5522cba063ca434dd736313eaa83667.txt'&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Actions possibles&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Toutes les combinaisons format/type/action ne sont pas disponibles.&lt;/p&gt;
&lt;p&gt;En premier lieu, l'acc&#232;s &#224; l'API est subordonn&#233; &#224; l'authentification de l'application cliente et de l'utilisateur final par OAuthSD.&lt;/p&gt;
&lt;p&gt;Ensuite, toutes les combinaisons type/action ne sont pas autoris&#233;es. Des droits sont d&#233;finis pour chaque action en fonction du profil de l'auteur (administrateur d'applications) authentifi&#233;.&lt;/p&gt;
&lt;p&gt;Enfin, certaines actions ne sont pas (ou pas encore) impl&#233;ment&#233;es.&lt;/p&gt;
&lt;p&gt;&lt;span class='spip_document_50 spip_documents spip_documents_center'&gt;
&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L500xH158/api_http_tableau-d0088.png?1733972200' width='500' height='158' alt=&#034;&#034; /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Protection des donn&#233;es&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Les donn&#233;es tr&#232;s sensibles (conditionnant la s&#233;curit&#233; de l'authentification) sont prot&#233;g&#233;es, elles ne peuvent &#234;tre vues ni a fortiori modifi&#233;es &#224; l'aide de l'API.&lt;/p&gt;
&lt;p&gt;Dans l'&#233;tat actuel, les champs suivants, d&#233;finis par la constante API_HTTP_CHAMPS_SENSIBLES, ne sont pas transmis : client_secret, client_ip, password'.&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;clients (Applications clientes)&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Requ&#234;tes GET&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Le type clients permet de nombreuses requ&#234;tes GET avec les formats collectionjson et json, notamment avec les param&#232;tres offset et length. La requ&#234;te suivante est pratique pour g&#233;n&#233;rer des tableaux pagin&#233;s :&lt;/p&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;https://oa.dnc.global/web/http.api/collectionjson/clients/?offset=100&amp;length=10&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;Pour assurer la s&#233;curit&#233; de l'authentification :
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; les donn&#233;e sensibles &#034;client_secret&#034; et &#034;client_ip&#034; ne seront pas retourn&#233;es,
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; les paires de cl&#233;s publiques/priv&#233;es associ&#233;es ne peuvent &#234;tre atteintes,&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Edition : requ&#234;tes POST, PUT, DELETE&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Exemple d'&#233;criture d'un nouvel enregistrement en PHP avec cURL. Les donn&#233;es sont transmises au format application/x-www-form-urlencoded&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href='#nb2' class='spip_note' rel='appendix' title='Un int&#233;r&#234;t de ce format est de permettre de transmettre l'identifiant de (...)' id='nh2'&gt;2&lt;/a&gt;]&lt;/span&gt; :&lt;/p&gt;
&lt;div class=&#034;coloration_code code&#034;&gt;&lt;div class=&#034;spip_php code&#034;&gt;&lt;div class=&#034;php&#034;&gt;&lt;ol&gt;&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #000088;&#034;&gt;$data&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; &lt;a href=&#034;http://www.php.net/array&#034;&gt;&lt;span style=&#034;color: #990000;&#034;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;'client_id'&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&gt;&lt;/span&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;'testtest'&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;'client_secret'&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&gt;&lt;/span&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;'TheBigSecret'&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;'redirect_uri'&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&gt;&lt;/span&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;'https://oa.dnc.global/web/?action=oauth'&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;'grant_types'&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&gt;&lt;/span&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;'authorization_code'&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;'scope'&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&gt;&lt;/span&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;'openid sli'&lt;/span&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #000088;&#034;&gt;$h&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; &lt;a href=&#034;http://www.php.net/curl_init&#034;&gt;&lt;span style=&#034;color: #990000;&#034;&gt;curl_init&lt;/span&gt;&lt;/a&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt;&#034;https://oa.dnc.global/web/http.api/json/clients/&#034;&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;a href=&#034;http://www.php.net/curl_setopt&#034;&gt;&lt;span style=&#034;color: #990000;&#034;&gt;curl_setopt&lt;/span&gt;&lt;/a&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #000088;&#034;&gt;$h&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt; CURLOPT_RETURNTRANSFER&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt; &lt;span style=&#034;color: #009900; font-weight: bold;&#034;&gt;true&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;a href=&#034;http://www.php.net/curl_setopt&#034;&gt;&lt;span style=&#034;color: #990000;&#034;&gt;curl_setopt&lt;/span&gt;&lt;/a&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #000088;&#034;&gt;$h&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt; CURLOPT_TIMEOUT&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt; &lt;span style=&#034;color: #cc66cc;&#034;&gt;10&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;a href=&#034;http://www.php.net/curl_setopt&#034;&gt;&lt;span style=&#034;color: #990000;&#034;&gt;curl_setopt&lt;/span&gt;&lt;/a&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #000088;&#034;&gt;$h&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt; CURLOPT_POST&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt; &lt;span style=&#034;color: #009900; font-weight: bold;&#034;&gt;true&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;a href=&#034;http://www.php.net/curl_setopt&#034;&gt;&lt;span style=&#034;color: #990000;&#034;&gt;curl_setopt&lt;/span&gt;&lt;/a&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #000088;&#034;&gt;$h&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt; CURLOPT_HTTPHEADER&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt; &lt;a href=&#034;http://www.php.net/array&#034;&gt;&lt;span style=&#034;color: #990000;&#034;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt;'&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt; Content-Type: application/x-www-form-urlencoded'&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;'Accept: application/json'&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;a href=&#034;http://www.php.net/curl_setopt&#034;&gt;&lt;span style=&#034;color: #990000;&#034;&gt;curl_setopt&lt;/span&gt;&lt;/a&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #000088;&#034;&gt;$h&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt; CURLOPT_POSTFIELDS&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt; &lt;a href=&#034;http://www.php.net/http_build_query&#034;&gt;&lt;span style=&#034;color: #990000;&#034;&gt;http_build_query&lt;/span&gt;&lt;/a&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #000088;&#034;&gt;$data&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #000088;&#034;&gt;$res&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; &lt;a href=&#034;http://www.php.net/curl_exec&#034;&gt;&lt;span style=&#034;color: #990000;&#034;&gt;curl_exec&lt;/span&gt;&lt;/a&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #000088;&#034;&gt;$h&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #339933;&#034;&gt;...&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;p class='download code_download'&gt;&lt;a href='https://static.oa.dnc.global/local/cache-code/6553dcfc6be53552cf0969c46e670dd9.txt'&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;En HTML cela &#233;quivaudrait &#224; :&lt;/p&gt;
&lt;div class=&#034;coloration_code code&#034;&gt;&lt;div class=&#034;spip_php code&#034;&gt;&lt;div class=&#034;php&#034;&gt;&lt;ol&gt;&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #000000; font-weight: bold;&#034;&gt;&lt;?php&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #000088;&#034;&gt;$data&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; &lt;a href=&#034;http://www.php.net/array&#034;&gt;&lt;span style=&#034;color: #990000;&#034;&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;'client_id'&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&gt;&lt;/span&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;'testtest'&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;'client_secret'&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&gt;&lt;/span&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;'TheBigSecret'&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;'redirect_uri'&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&gt;&lt;/span&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;'https://oidc.dnc.global/web/?action=oauth'&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;'grant_types'&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&gt;&lt;/span&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;'authorization_code'&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;'scope'&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&gt;&lt;/span&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;'openid sli'&lt;/span&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #000000; font-weight: bold;&#034;&gt;?&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;form id=&#034;test_api_post&#034; name=&#034;test_api_post&#034; method=&#034;post&#034; action=&#034;https://oidc.dnc.global/web/http.api/json/clients/&#034;&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;input type=&#034;hidden&#034; name=&#034;DBGSESSID&#034; value=&#034;435347910947900005@127.0.0.1;d=1&#034;&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #000000; font-weight: bold;&#034;&gt;&lt;?php&lt;/span&gt; &lt;span style=&#034;color: #b1b100;&#034;&gt;foreach&lt;/span&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$data&lt;/span&gt; &lt;span style=&#034;color: #b1b100;&#034;&gt;as&lt;/span&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$name&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&gt;&lt;/span&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$value&lt;/span&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#123;&lt;/span&gt; &lt;span style=&#034;color: #000000; font-weight: bold;&#034;&gt;?&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;input type=&#034;hidden&#034; id=&#034;&lt;span style=&#034;color: #000000; font-weight: bold;&#034;&gt;&lt;?php&lt;/span&gt; &lt;span style=&#034;color: #b1b100;&#034;&gt;echo&lt;/span&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$name&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;span style=&#034;color: #000000; font-weight: bold;&#034;&gt;?&gt;&lt;/span&gt;&#034; name=&#034;&lt;span style=&#034;color: #000000; font-weight: bold;&#034;&gt;&lt;?php&lt;/span&gt; &lt;span style=&#034;color: #b1b100;&#034;&gt;echo&lt;/span&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$name&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;span style=&#034;color: #000000; font-weight: bold;&#034;&gt;?&gt;&lt;/span&gt;&#034; value=&#034;&lt;span style=&#034;color: #000000; font-weight: bold;&#034;&gt;&lt;?php&lt;/span&gt; &lt;span style=&#034;color: #b1b100;&#034;&gt;echo&lt;/span&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$value&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;span style=&#034;color: #000000; font-weight: bold;&#034;&gt;?&gt;&lt;/span&gt;&#034;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #000000; font-weight: bold;&#034;&gt;&lt;?php&lt;/span&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#125;&lt;/span&gt; &lt;span style=&#034;color: #000000; font-weight: bold;&#034;&gt;?&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;input type=&#034;submit&#034;&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;/form&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;p class='download code_download'&gt;&lt;a href='https://static.oa.dnc.global/local/cache-code/47d3199e53c3a4ce78c60a0d0ead7fff.txt'&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;En cas de succ&#232;s, la table clients est mise &#224; jour et l'API retourne dans le corps de la r&#233;ponse un array Json avec le client_id et l'id_client (index unique de la table clients) :&lt;/p&gt;
&lt;div class=&#034;coloration_code code&#034;&gt;&lt;div class=&#034;spip_javascript code&#034;&gt;&lt;div class=&#034;javascript&#034;&gt;&lt;ol&gt;&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&#123;&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt; client_id&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt;&lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;testtest&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;id_client&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt;&lt;span style=&#034;color: #CC0000;&#034;&gt;43&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;p class='download code_download'&gt;&lt;a href='https://static.oa.dnc.global/local/cache-code/1c4256fec19064740a49ce85823048a9.txt'&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;En cas de duplication, la r&#233;ponse suivante est retourn&#233;e :&lt;/p&gt;
&lt;div class=&#034;coloration_code code&#034;&gt;&lt;div class=&#034;spip_javascript code&#034;&gt;&lt;div class=&#034;javascript&#034;&gt;&lt;ol&gt;&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;collection&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;version&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;1.0&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;href&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;https://oa.dnc.global/web/http.api/json/clients/&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;error&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;title&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;Erreur&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;code&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #CC0000;&#034;&gt;500&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#125;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;errors&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&amp;#91;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;title&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;Erreur SQL 1062 Duplicate entry 'testtest' for key 'client_id'&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #3366CC;&#034;&gt;&#034;code&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;span style=&#034;color: #CC0000;&#034;&gt;500&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&amp;#93;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;p class='download code_download'&gt;&lt;a href='https://static.oa.dnc.global/local/cache-code/a2fb06a44f1dafa55139ea2a41f7ff34.txt'&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;h3 class=&#034;spip&#034;&gt;users (Utilisateurs finaux)&lt;/h3&gt;
&lt;p&gt;Le type users permet de nombreuses requ&#234;tes GET avec les formats collectionjson et json, notamment avec les param&#232;tres offset et length. La requ&#234;te suivante est pratique pour g&#233;n&#233;rer des tableaux pagin&#233;s :&lt;/p&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;https://oa.dnc.global/web/http.api/collectionjson/users/?offset=100&amp;length=10&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;Notez que la donn&#233;e sensible &#034;password&#034; ne sera pas retourn&#233;e.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Enregistrement d'un utilisateur final sur le serveur OIDC&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Le type users permet l'&#233;criture (requ&#234;tes POST, PUT et DELETE).&lt;/p&gt;
&lt;p&gt;Pour fonctionner, le contr&#244;leur Authorize du serveur serveur OIDC n'a besoin que d'un username (ou d'un e-mail) et d'un mot de passe. Le contr&#244;leur exploite &#233;galement le contenu des autres champs fournis s'ils existent dans la table users et ne sont pas nuls. &lt;br class='autobr' /&gt;
En particulier, le champ scope peut &#234;tre utilis&#233; pour transmettre des autorisations propres &#224; l'utilisateur.&lt;/p&gt;
&lt;p&gt;Pour assurer la s&#233;curit&#233; de l'authentification :
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; lors de l'&#233;criture, le secret client transmis en clair est enregistr&#233; sous forme de password_hash avec l'algorithme PASSWORD_BCRYPT.&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;auteurs (Administrateurs d'applications ou &#034;superviseurs&#034;)&lt;/h3&gt;&lt;h3 class=&#034;spip&#034;&gt;oidc_logs (&#233;v&#233;nements)&lt;/h3&gt;
&lt;p&gt;Le type oidc_logs n'autorise que les requ&#234;tes suivantes, sous les formats json et collectionjson :&lt;/p&gt;
&lt;p&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; Les &#233;v&#233;nements &#233;tant tri&#233;s par date d&#233;croissante, retourne length evenements depuis le rang 0 (donc les derniers &#233;v&#233;nements) :&lt;/p&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;https://.../http.api/&lt;format&gt;/oidc_logs/?length=&lt;nombre&gt;&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; Les &#233;v&#233;nements &#233;tant tri&#233;s par date d&#233;croissante, retourne length evenements depuis le rang offset :&lt;/p&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;https://.../http.api/&lt;format&gt;/oidc_logs/?offset=&lt;rang&gt;&amp;length=&lt;nombre&gt; &lt;/code&gt;&lt;/div&gt;
&lt;p&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; Les &#233;v&#233;nements &#233;tant tri&#233;s par date d&#233;croissante, retourne length &#233;v&#233;nements autour du plus proche du temps indiqu&#233; par le timeserial ts :&lt;/p&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;https://.../http.api/&lt;format&gt;/oidc_logs/?ts=&lt;timeserial&gt;&amp;length=&lt;nombre&gt;&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; Retourne les &#233;v&#232;nements entre les timeserials tmin et tmax :&lt;/p&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;https://.../http.api/&lt;format&gt;/oidc_logs/?tmin=&lt;timeserial&gt;&amp;tmax=&lt;timeserial&gt;&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;Notes :
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; Il est interdit de lister l'ensemble de la collection.
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; length est limit&#233; &#224; 10000, sans g&#233;n&#233;ration d'erreur.&lt;/p&gt;
&lt;p&gt;&lt;a id=&#034;secuapirest&#034;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div style=&#034;clear:both;&#034;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 class=&#034;spip&#034;&gt;S&#233;curisation de l'acc&#232;s &#224; l'API&lt;/h3&gt;
&lt;p&gt;Deux configurations sont envisag&#233;es :
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; Le serveur qui porte l'API est accessible uniquement par des applications de confiance &#224; travers un canal s&#251;r (par exemple au sein d'un r&#233;seau local d'entreprise bien isol&#233;). Dans ce cas, la constante API_HTTP_AUTHENTICATE est fix&#233;e &#224; 'false' et des v&#233;rifications simples sont effectu&#233;es sur l'IP et/ou le domaine du client origine de la requ&#234;te. Les constantes API_HTTP_CLIENT_IP et API_HTTP_CLIENT_HOST d&#233;finissent les valeurs attendues.
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; Le serveur se trouve sur un r&#233;seau public. Dans ce cas, la constante API_HTTP_AUTHENTICATE est fix&#233;e &#224; 'true' et l'application cliente doit s'authentifier avec le protocole OAuth 2.0. Pour ce faire, l'application cliente devra &#234;tre enregistr&#233;e sur ce ce serveur OAuthSD avec les flux Authorization Code et &lt;a href='https://static.oa.dnc.global/-Autorisation-de-serveur-a-serveur-Client-Credentials-Grant-.html#oauth20autorisationdeserveuraserveurexemplecomplet' class='spip_in'&gt;Client Credentials&lt;/a&gt;. Notez que les contraintes d&#233;finies par les constantes API_HTTP_CLIENT_IP et API_HTTP_CLIENT_HOST s'appliquent &#233;galement.&lt;/p&gt;
&lt;p&gt;Lorsqu'une application cliente veut acc&#233;der &#224; l'API au nom d'un utilisateur final :
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; l'application authentifie son utilisateur final avec le flux &lt;a href='https://static.oa.dnc.global/-OpenID-Connect-Autorisation-via-un-code-Authorization-Code-Flow-.html' class='spip_in'&gt;Authorization Code&lt;/a&gt;,
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; si l'utilisateur final est authentifi&#233;, et seulement dans ce cas, l'application demande une autorisation d'acc&#232;s en son nom propre avec le flux &lt;a href='https://static.oa.dnc.global/-Autorisation-de-serveur-a-serveur-Client-Credentials-Grant-.html#oauth20autorisationdeserveuraserveurexemplecomplet' class='spip_in'&gt;Client Credentials&lt;/a&gt;, puis passe le jeton d'acc&#232;s obtenu dans l'appel &#224; l'API, &lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; l'API v&#233;rifie le jeton d'acc&#232;s par introspection.&lt;/p&gt;
&lt;p&gt;En fait, l'API peut aussi bien valider un jeton d'acc&#232;s qu'un jeton d'identification. L'application cliente peut donc s'authentifier directement avec le jeton d'identit&#233; obtenu avec le flux Authorization Code.&lt;/p&gt;
&lt;p&gt;Lorsqu'une application cliente veut acc&#233;der &#224; l'API en son nom propre :
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; l'application demande une autorisation d'acc&#232;s avec le flux Client Credentials, puis passe le jeton d'acc&#232;s obtenu dans l'appel &#224; l'API, &lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; l'API v&#233;rifie le jeton d'acc&#232;s par introspection.&lt;/p&gt;
&lt;p&gt;Le jeton peut &#234;tre pass&#233; &#224; l'API sous le nom 'token' par les m&#233;thode POST ou GET, mais il est recommand&#233; d'utiliser la m&#233;thode Auth Bearer.&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Options&lt;/h3&gt;
&lt;p&gt;Les options suivantes sont d&#233;finies dans le fichier collectionjsonoauthsd_options.php :&lt;/p&gt;
&lt;p&gt;/* Cette API permet l'acc&#232;s &#224; la plupart des donn&#233;es manipul&#233;es par SPIP, les &lt;br class='autobr' /&gt;
types correspondant aux tables &#233;ponymes de la base de donn&#233;es. Cependant, autant &lt;br class='autobr' /&gt;
pour des raisons pratiques que de s&#233;curit&#233;, les types servis sont limit&#233;s &#224; ceux &lt;br class='autobr' /&gt;
qui seront d&#233;finis ici.&lt;br class='autobr' /&gt;
Si la chaine est '', tous les types seront autoris&#233;s.&lt;br class='autobr' /&gt;
Attention : le type est au singulier !*/ &lt;br class='autobr' /&gt;
define('API_HTTP_TYPES_AUTORISES','oidc_log,user,client,auteur,credential') ;&lt;/p&gt;
&lt;p&gt;/* S'agissant d'un serveur d'authentification, certaines donn&#233;es sont particuli&#232;rement &lt;br class='autobr' /&gt;
sensibles et doivent rester sanctuaris&#233;es.*/ &lt;br class='autobr' /&gt;
define('API_HTTP_CHAMPS_SENSIBLES','client_secret,client_ip,password') ;&lt;/p&gt;
&lt;p&gt;/* Si l'API doit &#234;tre accessible autrement que par un client de confiance par &lt;br class='autobr' /&gt;
un canal s&#251;r, il faut authentifier l'origine de la requ&#234;te. &lt;br class='autobr' /&gt;
Cette constante peut aussi &#234;tre fix&#233;e &#224; false pendant le d&#233;veloppement */&lt;br class='autobr' /&gt;
define('API_HTTP_AUTHENTICATE', false) ;&lt;/p&gt;
&lt;p&gt;/* Si API_HTTP_AUTHENTICATE est fix&#233; &#224; true, l'authentification du client requiert &lt;br class='autobr' /&gt;
un jeton d'identit&#233; valide. Celui-ci contient la d&#233;claration sub &#233;gale &#224; l'id du &lt;br class='autobr' /&gt;
client (client_id). Si la constante suivante est non nulle, sub devra &#234;tre &#233;gal &#224; &lt;br class='autobr' /&gt;
la valeur indiqu&#233;e. */&lt;br class='autobr' /&gt;
define('API_HTTP_CLIENT_ID', '') ;&lt;/p&gt;
&lt;p&gt;/* Si API_HTTP_AUTHENTICATE a &#233;t&#233; fix&#233; &#224; false, il convient d'appliquer tout ou &lt;br class='autobr' /&gt;
partie des v&#233;rifications suivantes : */&lt;br class='autobr' /&gt;
define('API_HTTP_CLIENT_IP', '') ; // V&#233;rifier que la requ&#234;te vient de l'IP indiqu&#233;e si non nulle&lt;br class='autobr' /&gt;
define('API_HTTP_CLIENT_HOST', '') ; // V&#233;rifier que la requ&#234;te vient du host indiqu&#233; si non nul&lt;/p&gt;
&lt;p&gt;/* Si la requ&#234;te ne d&#233;finit pas le param&#232;tre limit, les requ&#234;tes acceptant le &lt;br class='autobr' /&gt;
param&#232;tre limit utiliseront la valeur suivante par d&#233;faut :*/&lt;br class='autobr' /&gt;
define ('API_DEFAULT_LENGTH', 100) ;&lt;/p&gt;
&lt;p&gt;/* Nombre maximum de lignes que peut retourner une requ&#234;te (dans le cas o&#249; le param&#232;tre &lt;br class='autobr' /&gt;
limit n'est pas requis, comme quand la requ&#234;te n'accepte que les param&#232;tres tmin et/ou tmax) :*/&lt;br class='autobr' /&gt;
define ('API_MAX_ITEMS_RETURNED', 1000) ;&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Utilisation de l'API par OAuthSD lui-m&#234;me&lt;/h3&gt;
&lt;p&gt;OAuthSD utilise l'API notamment pour :
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; La pr&#233;sentation des &#233;v&#233;nements : charger les donn&#233;es de la table oidc_logs avec Ajax pour les pr&#233;senter en scrolling continu. Voir le tableau de la page &lt;a href=&#034;https://oa.dnc.global/web/spip.php?page=evenements_stats&#034; class='spip_out' rel='external'&gt;Statistiques&lt;/a&gt;.
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; Permettre la supervision du serveur par une application ext&#233;rieure.&lt;/p&gt;&lt;/div&gt;
		&lt;hr /&gt;
		&lt;div class='rss_notes'&gt;&lt;div id='nb1'&gt;
&lt;p&gt;&lt;span class=&#034;spip_note_ref&#034;&gt;[&lt;a href='#nh1' class='spip_note' title='Notes 1' rev='appendix'&gt;1&lt;/a&gt;] &lt;/span&gt;En r&#233;alit&#233; ce n'est pas &#233;quivalent. Voir : &lt;a href=&#034;http://restcookbook.com/HTTP%20Methods/put-vs-post/&#034; class='spip_url spip_out auto' rel='nofollow external'&gt;http://restcookbook.com/HTTP%20Methods/put-vs-post/&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;&lt;div id='nb2'&gt;
&lt;p&gt;&lt;span class=&#034;spip_note_ref&#034;&gt;[&lt;a href='#nh2' class='spip_note' title='Notes 2' rev='appendix'&gt;2&lt;/a&gt;] &lt;/span&gt;Un int&#233;r&#234;t de ce format est de permettre de transmettre l'identifiant de session du debugger&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Extension pour Wordpress &#034;OpenID Connect Generic Client&#034;</title>
		<link>https://static.oa.dnc.global/-Ressources-pour-les-developpeurs-.html#extensionpourwordpressopenidconnectgenericclient</link>
		<guid isPermaLink="true">https://static.oa.dnc.global/-Ressources-pour-les-developpeurs-.html#extensionpourwordpressopenidconnectgenericclient</guid>
		<dc:date>2019-05-10T15:17:07Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>DnC</dc:creator>



		<description>
&lt;p&gt;Il existe diff&#233;rentes extensions de client OpenID Connect pour WordPress. Nous pr&#233;sentons ici OpenID Connect Generic Client de daggerhart qui nous parait compl&#232;te, bien construite et bien document&#233;e. &lt;br class='autobr' /&gt;
En cours de d&#233;veloppement : un fork incluant le monitoring et le management de la session. &lt;br class='autobr' /&gt; Installation L'extension peut &#234;tre trouv&#233;e sur GitHub : https://github.com/daggerhart/openid-connect-generic, https://github.com/bdegoy/openid-connect-generic (notre fork). Le plugin s'installe comme toute (...)&lt;/p&gt;


-
&lt;a href="https://static.oa.dnc.global/-Ressources-pour-les-developpeurs-.html" rel="directory"&gt;Adaptation des applications&lt;/a&gt;


		</description>


 <content:encoded>&lt;img class='spip_logo spip_logo_right spip_logos' alt=&#034;&#034; style='float:right' src='https://static.oa.dnc.global/local/cache-vignettes/L150xH118/arton111-858bf.png?1733972200' width='150' height='118' /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;Il existe diff&#233;rentes extensions de client OpenID Connect pour WordPress. Nous pr&#233;sentons ici &lt;a href=&#034;https://github.com/daggerhart/openid-connect-generic&#034; class='spip_out' rel='external'&gt;OpenID Connect Generic Client&lt;/a&gt; de &lt;a href=&#034;https://github.com/daggerhart&#034; class='spip_out' rel='external'&gt;daggerhart&lt;/a&gt; qui nous parait compl&#232;te, bien construite et bien document&#233;e.&lt;/p&gt;
&lt;p&gt;En cours de d&#233;veloppement : &lt;a href=&#034;https://github.com/bdegoy/openid-connect-generic&#034; class='spip_out' rel='external'&gt;un fork&lt;/a&gt; incluant le monitoring et le management de la session.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;div style=&#034;clear:both;&#034;&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3 class=&#034;spip&#034;&gt;Installation&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#034;https://github.com/bdegoy?utf8=%E2%9C%93&amp;tab=repositories&amp;q=OAuthSD&#034;&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L24xH24/github_24-28c1d.png?1733817782' width='24' height='24' /&gt;&lt;/a&gt; L'extension peut &#234;tre trouv&#233;e sur GitHub : &lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; &lt;a href=&#034;https://github.com/daggerhart/openid-connect-generic&#034; class='spip_url spip_out auto' rel='nofollow external'&gt;https://github.com/daggerhart/openid-connect-generic&lt;/a&gt;,
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; &lt;a href=&#034;https://github.com/bdegoy/openid-connect-generic&#034; class='spip_url spip_out auto' rel='nofollow external'&gt;https://github.com/bdegoy/openid-connect-generic&lt;/a&gt; (notre fork).&lt;br class='autobr' /&gt;
Le plugin s'installe comme toute extension, de fa&#231;on classique ou avec Composer. Voyez &lt;a href=&#034;https://github.com/daggerhart/openid-connect-generic#installation&#034; class='spip_out' rel='external'&gt;la documentation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Notes :&lt;/strong&gt; &lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; La source Github est mieux tenue &#224; jour que celle du site WP (version test&#233;e jusqu'&#224; 5.1.1 en mai 2019).&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Inscription de l'application sur le serveur OAuthSD&lt;/h3&gt;
&lt;p&gt;Il s'agit des &#233;tapes 1 et 2 de la proc&#233;dure d&#233;crite ici : &lt;a href='https://static.oa.dnc.global/-OpenID-Connect-6-.html#openidconnectlieruneapplicationclienteauserveuroauthsd' class='spip_in'&gt;OpenID Connect : Lier une application cliente au serveur OAuthSD&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;S'inscrire en tant qu'auteur&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;En suivant cette proc&#233;dure vous commencerez par vous inscrire en tant qu'auteur sur le serveur OAuthSD.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Inscrire l'application&lt;/strong&gt;&lt;br class='autobr' /&gt;
Vous devez d&#233;signer votre application WordPress comme client du serveur OpenID Connect. Pour cela, acc&#233;dez &#224; l'URL : &lt;a href=&#034;https://oa.dnc.global/web/?page=creer-client&amp;lang=fr&#034; class='spip_url spip_out' rel='external'&gt;https://oa.dnc.global/web/?page=cre...&lt;/a&gt; :&lt;/p&gt;
&lt;p&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; Client Id : Entrez un nom court, sans espace ni caract&#232;re sp&#233;cial autre que '_'. Ce n'est li&#233; &#224; aucune d&#233;signation de votre application.&lt;/p&gt;
&lt;p&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; Client secret (obligatoire) : une courte cha&#238;ne assimilable &#224; un mot de passe fort. Ce code doit rester secret.&lt;/p&gt;
&lt;p&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; Redirect uri (obligatoire) : URI de retour &#224; l'application cliente. Si l'URL de votre application WP est &#034;http://votre_application.ext&#034;, inscrivez &#034;http://votre_application.ext/wp-admin/admin-ajax.php?action=openid-connect-authorize.&lt;/p&gt;
&lt;p&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; Grant Type (obligatoire) : s&#233;lectionnez &#034;Authorization Code&#034;.&lt;/p&gt;
&lt;p&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; Scopes (obligatoire) : Inscrivez &#034;openid profile email&#034;.&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Configuration de WP &lt;/h3&gt;
&lt;p&gt;Il s'agit de l'&#233;tape 3 de la proc&#233;dure.&lt;/p&gt;
&lt;p&gt;Acc&#233;dez au menu R&#233;glages -&gt; OpenID Connect Client.&lt;/p&gt;
&lt;p&gt;Votre application Wordpress doit &#234;tre configur&#233;e comme ci-apr&#232;s, o&#249; Client ID et Client Secret Key sont les valeurs inscrites pr&#233;c&#233;demment sur le serveur :&lt;/p&gt;
&lt;p&gt;&lt;span class='spip_document_60 spip_documents spip_documents_center'&gt;
&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L500xH2008/wp_oidcgc_configuration-42f12.png?1733972200' width='500' height='2008' alt=&#034;&#034; /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Inscription d'un utilisateur sur OAuthSD&lt;/h3&gt;
&lt;p&gt;Le principe de l'inscription unique (Single Sign On, SSO) permet &#224; un utilisateur de se connecter &#224; diff&#233;rentes applications avec les m&#234;mes identifiants (login, mot de passe ...).&lt;br class='autobr' /&gt;
Il faut donc d'abord inscrire un utilisateur sur OAuthSD (ou utiliser un utilisateur OAuthSD existant). Faire l'inverse (cr&#233;er l'utilisateur sur votre application WP et l'inscrire sur le serveur OpenID Connect) irait &#224; l'encontre du principe.&lt;/p&gt;
&lt;p&gt;L'inscription d'un utilisateur se fait ici : &lt;a href=&#034;https://oa.dnc.global/web/spip.php?page=user&amp;lang=fr&#034; class='spip_url spip_out' rel='external'&gt;https://oa.dnc.global/web/spip.php?...&lt;/a&gt;&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Cr&#233;ation de l'utilisateur par WP&lt;/h3&gt;
&lt;p&gt;Si l'utilisateur n'existe pas du c&#244;t&#233; WP, l'extension le cr&#233;era.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Notes :&lt;/strong&gt;
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; Si on tente de se loger avec un identifiant de l'utilisateur OIDC qui existe d&#233;j&#224; pour un utilisateur WP, le plugin cr&#233;e un utilisateur WP avec un identifiant incr&#233;ment&#233; ; par exemple si le login est &#034;admin&#034;, l'utilisateur WP d'identifiant &#034;admin2&#034; sera cr&#233;&#233; avec un r&#244;le &#034;abonn&#233;&#034;. Il appartiendra &#224; l'administrateur du site WP de modifier &#233;ventuellement ce r&#244;le.
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; Dans le cas o&#249; l'e-mail de l'utilisateur OpenID existe d&#233;j&#224; pour un utilisateur WP diff&#233;rent, c'est OpenID qui est ma&#238;tre : le plus logique sera de changer l'identifiant de cet utilisateur WP pour celui de l'utilisateur OpenID (puisque l'e-mail d&#233;signe une personne de fa&#231;on non ambigu&#235;).&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Erreurs provenant de la configuration&lt;/h3&gt;
&lt;p&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; &lt;strong&gt;Missing state&lt;/strong&gt; - La plupart du temps, cette erreur provient du fait que l'utilisateur a &#233;t&#233; trop long pour s'identifier, ou est retourn&#233; sur un formulaire ancien. Il suffit de recommencer.&lt;/p&gt;
&lt;p&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; &lt;strong&gt;User claim incomplete&lt;/strong&gt; - Se produit quand la liste des d&#233;clarations (claims) retourn&#233;es par Userinfo, en fonction des port&#233;es d&#233;finies pour l'application (scopes) ne contient pas celles qui sont d&#233;finies dans le format. &lt;br class='autobr' /&gt;
Par exemple :&lt;/p&gt;
&lt;ul class=&#034;spip&#034;&gt;&lt;li&gt; l'application a &#233;t&#233; configur&#233;e sans le scope email (champ de configuration OpenID Scope) et le format Email Formatting est &lt;i&gt;email&lt;/i&gt;.&lt;/li&gt;&lt;li&gt; Display Name Formatting a &#233;t&#233; fix&#233; &#224; &lt;i&gt;name&lt;/i&gt; alors que ce champ est null dans le serveur OpenID pour l'utillisateur consid&#233;r&#233; et que le nom de l'utilisateur figure dans la d&#233;claration family_name.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; &lt;strong&gt;Failed user creation&lt;/strong&gt; - Se produit le plus souvent quand WP tente de cr&#233;er un nouvel utilisateur et que l'e-mail d&#233;clar&#233; par l'utilisateur OIDC existe d&#233;j&#224; du c&#244;t&#233; de WP.&lt;/p&gt;
&lt;p&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; &lt;strong&gt;redirect_uri_mismatch : The redirect URI provided is missing or does not match&lt;/strong&gt; - Cette erreur est g&#233;n&#233;r&#233;e par le serveur OAuthSD en r&#233;ponse &#224; la requ&#234;te au contr&#244;leur Authorize. Elle se produit lorsque l'URL de retour (Redirect URI) enregistr&#233;e sur le serveur OAuthSD n'est pas conforme &#224; ce qui est indiqu&#233; en bas du formulaire R&#233;glages -&gt; OpenID Connect - Generic Client. En particulier, OAuthSD impose le protocole de transfert s&#233;curis&#233; (https).&lt;/p&gt;
&lt;p&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; &lt;strong&gt;ERREUR : les cookies sont bloqu&#233;s ou ne sont pas reconnus par votre navigateur. Vous devez activer les cookies pour utiliser WordPress.&lt;/strong&gt; - Il est probable que vous ayez omis 'https://' dans la barre d'adresse.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Erreur CORS (visible dans le debugger du navigateur)&lt;/strong&gt;&lt;br class='autobr' /&gt;
C'est une erreur tr&#232;s courante que de lancer l'application de test avec http:// au lieu de https://. Cela peut &#233;galement conduirte &#224; une erreur CORS :&lt;br class='autobr' /&gt;
&#034;(index):1 Access to XMLHttpRequest at '&lt;a href=&#034;https://oa.dnc.global/authorize?response_type=code&amp;client_id=wpdemo&amp;user_id=wpadmin&amp;state=124979a12478&amp;scope=openid&amp;prompt=none&#034; class='spip_url spip_out auto' rel='nofollow external'&gt;https://oa.dnc.global/authorize?response_type=code&amp;client_id=wpdemo&amp;user_id=wpadmin&amp;state=124979a12478&amp;scope=openid&amp;prompt=none&lt;/a&gt;' from origin '&lt;a href=&#034;http://wp.dnc.global&#034; class='spip_url spip_out auto' rel='nofollow external'&gt;http://wp.dnc.global&lt;/a&gt;' has been blocked by CORS policy : The 'Access-Control-Allow-Origin' header has a value '&lt;a href=&#034;https://wp.dnc.global&#034; class='spip_url spip_out auto' rel='nofollow external'&gt;https://wp.dnc.global&lt;/a&gt;' that is not equal to the supplied origin.&#034;&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;D&#233;monstration&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#034;https://wp.dnc.global/2019/05/11/extension-pour-wordpress-openid-connect-generic-client-de-daggerhart/&#034; class='spip_url spip_out' rel='external'&gt;https://wp.dnc.global/2019/05/11/ex...&lt;/a&gt; est un d&#233;monstrateur d'une application WP li&#233;e &#224; OAuthSD avec cette extension.&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Monitoring : d&#233;veloppement en cours&lt;/h3&gt;
&lt;p&gt;&lt;span class='spip_document_61 spip_documents spip_documents_left' style='float:left;'&gt;
&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L462xH388/wp_monitoring_infos-277bb.png?1733817783' width='462' height='388' alt=&#034;&#034; /&gt;&lt;/span&gt; Nous d&#233;veloppons un fork qui inclut le monitoring. &lt;br class='autobr' /&gt;
&lt;a href=&#034;https://github.com/bdegoy?utf8=%E2%9C%93&amp;tab=repositories&amp;q=OAuthSD&#034;&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L24xH24/github_24-28c1d.png?1733817782' width='24' height='24' /&gt;&lt;/a&gt; Le code est visible ici : &lt;a href=&#034;https://github.com/bdegoy/openid-connect-generic&#034; class='spip_url spip_out' rel='external'&gt;https://github.com/bdegoy/openid-co...&lt;/a&gt;. Le fonctionnement est semblable &#224; ce qui a &#233;t&#233; d&#233;crit pour &lt;a href='https://static.oa.dnc.global/-Ressources-pour-les-developpeurs-.html#pluginopenidconnectclientpourspip' class='spip_in'&gt;Plugin OpenID Connect Client pour SPIP&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Plugin OpenID Connect Client pour SPIP</title>
		<link>https://static.oa.dnc.global/-Ressources-pour-les-developpeurs-.html#pluginopenidconnectclientpourspip</link>
		<guid isPermaLink="true">https://static.oa.dnc.global/-Ressources-pour-les-developpeurs-.html#pluginopenidconnectclientpourspip</guid>
		<dc:date>2019-04-26T07:46:14Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>DnC</dc:creator>



		<description>
&lt;p&gt;Un client OIDC pour SPIP. Permet &#224; une application SPIP de proposer l'authentification avec OpenID Connect, &#224; c&#244;t&#233; de l'authentification classique. &lt;br class='autobr' /&gt;
Les d&#233;veloppeurs d'application SPIP pourront renforcer la protection de l'acc&#232;s aux fonctionnalit&#233;s r&#233;serv&#233;es et &#224; l'espace priv&#233; en limitant l'acc&#232;s aux seules personnes enregistr&#233;es sur le serveur OIDC configur&#233; [1]. Pr&#233;requis &lt;br class='autobr' /&gt; v 1.0.3 : SPIP 3.0, 3.1 ; v 1.0.4 : SPIP 3.2, &lt;br class='autobr' /&gt; syst&#232;me Linux + PHP 5.6 ou 7.1,
&lt;br class='autobr' /&gt; ionCube PHP Loader install&#233; sur le serveur de (...)&lt;/p&gt;


-
&lt;a href="https://static.oa.dnc.global/-Ressources-pour-les-developpeurs-.html" rel="directory"&gt;Adaptation des applications&lt;/a&gt;


		</description>


 <content:encoded>&lt;img class='spip_logo spip_logo_right spip_logos' alt=&#034;&#034; style='float:right' src='https://static.oa.dnc.global/local/cache-vignettes/L113xH102/arton61-dc658.png?1733817783' width='113' height='102' /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;Un client OIDC pour SPIP. Permet &#224; une application SPIP de proposer l'authentification avec OpenID Connect, &#224; c&#244;t&#233; de l'authentification classique.&lt;/p&gt;
&lt;p&gt;Les d&#233;veloppeurs d'application SPIP pourront renforcer la protection de l'acc&#232;s aux fonctionnalit&#233;s r&#233;serv&#233;es et &#224; l'espace priv&#233; en limitant l'acc&#232;s aux seules personnes enregistr&#233;es sur le serveur OIDC configur&#233;&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href='#nb3-1' class='spip_note' rel='appendix' title='Pour l'instant, ce plugin n'a &#233;t&#233; valid&#233; que sur le serveur OAuthSD (ce (...)' id='nh3-1'&gt;1&lt;/a&gt;]&lt;/span&gt;.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;h3 class=&#034;spip&#034;&gt;Pr&#233;requis&lt;/h3&gt;
&lt;p&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; v 1.0.3 : SPIP 3.0, 3.1 ; v 1.0.4 : SPIP 3.2, &lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; syst&#232;me Linux + PHP 5.6 ou 7.1,
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; ionCube PHP Loader install&#233; sur le serveur de l'application SPIP (IonCube est install&#233; par d&#233;faut sur la plupart des configurations Linux).
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; Attention ! le fonctionnement d'OIDC exige une application cliente install&#233;e sur un serveur s&#233;curis&#233; (protocole https://).&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Inscription de l'application sur le serveur OAuthSD&lt;/h3&gt;
&lt;p&gt;L'application recevant le plugin doit &#234;tre enregistr&#233;e en tant que client du serveur OAuthSD.&lt;br class='autobr' /&gt;
La proc&#233;dure est d&#233;crite ici : &lt;a href='https://static.oa.dnc.global/-OpenID-Connect-6-.html#openidconnectlieruneapplicationclienteauserveuroauthsd' class='spip_in'&gt;OpenID Connect : Lier une application cliente au serveur OAuthSD&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;En suivant cette proc&#233;dure :
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; vous vous inscrirez en tant qu'auteur sur le serveur OAuthSD,&lt;/p&gt;
&lt;p&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; vous enregistrerez votre application. L'enregistrement se fait ici : &lt;a href=&#034;https://oa.dnc.global/?page=creer-client&#034; class='spip_out' rel='external'&gt;Inscrire une application cliente&lt;/a&gt;.&lt;br class='autobr' /&gt;
Vous devrez :&lt;/p&gt;
&lt;ul class=&#034;spip&#034;&gt;&lt;li&gt; configurer l'adresse de retour (Redirect URI) sous la forme suivante : https://mon_application.com/?action=auth&lt;/li&gt;&lt;li&gt; Inscrire au moins le scope &#034;openid&#034;.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; l'installation et la configuration du plugin r&#233;pond &#224; l'&#233;tape 3 :&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Installation et configuration du plugin&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#034;https://github.com/bdegoy?utf8=%E2%9C%93&amp;tab=repositories&amp;q=OAuthSD&#034;&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L24xH24/github_24-28c1d.png?1733817782' width='24' height='24' /&gt;&lt;/a&gt; Le plugin se trouve sur GitHub : &lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; &lt;a href=&#034;https://github.com/bdegoy/oidcclient&#034; class='spip_url spip_out auto' rel='nofollow external'&gt;https://github.com/bdegoy/oidcclient&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Le plugin s'installe selon la proc&#233;dure d'installation manuelle de tout plugin SPIP :&lt;/p&gt;
&lt;ul class=&#034;spip&#034;&gt;&lt;li&gt; transf&#233;rer le r&#233;pertoire oidcclient dans le r&#233;pertoire plugins,&lt;/li&gt;&lt;li&gt; activer le plugin dans l'administration.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; ouvrir le formulaire de configuration et indiquer l'ID de l'application cliente et son secret fournis lors de l'&lt;a href=&#034;https://oa.dnc.global/spip.php?page=creer-client&#034; class='spip_out' rel='external'&gt;enregistrement de l'application&lt;/a&gt; sur le serveur OAuthSD :&lt;/p&gt;
&lt;p&gt;&lt;span class='spip_document_18 spip_documents spip_documents_center'&gt;
&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L500xH347/plugin_oidc_spip_config-c4073.png?1733972200' width='500' height='347' alt=&#034;&#034; /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Inscription en tant qu'utilisateur OpenID Connect&lt;/h3&gt;
&lt;p&gt;Pour enregistrer votre application, vous vous &#234;tes inscrit sur ce serveur en tant qu'auteur. Pour utiliser le SSO OpenID Connect&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href='#nb3-2' class='spip_note' rel='appendix' title='Ne pas confondre avec OpenID' id='nh3-2'&gt;2&lt;/a&gt;]&lt;/span&gt;, vous devez vous inscrire en tant qu'utilisateur sur un serveur d'authentification compatible. Les deux inscriptions sont distinctes.&lt;/p&gt;
&lt;p&gt;Si vous n'&#234;tes pas d&#233;j&#224; inscrit sur OAuthSD, vous devez vous &lt;a href='https://static.oa.dnc.global/?page=editer_user_ext'&gt;s'inscrire sur ce serveur en tant qu'utilisateur&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Il faut ensuite &#233;tablir une correspondance entre OpenID Connect et SPIP.&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Correspondance entre l'utilisateur OpenID Connect et l'auteur (l'utilisateur) SPIP &lt;/h3&gt;
&lt;p&gt;Si vous tentez la connexion OpenID Connect avec un utilisateur inconnu de l'application, vous obtiendrez un message d'erreur comme celui-ci :&lt;/p&gt;
&lt;p&gt;&lt;span class='spip_document_43 spip_documents spip_documents_center'&gt;
&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L500xH132/spipclient_oidc_nok-686b1.png?1733972200' width='500' height='132' alt=&#034;&#034; /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Il faut que l'utilisateur OpenID Connect soit li&#233; &#224; un compte d'auteur de l'application SPIP pour que celle-ci accepte la connexion. &lt;strong&gt;Ceci est r&#233;alis&#233; en inscrivant le login OIDC dans le champ oidc de la fiche de l'auteur&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Bien entendu, pour faire cette modification, vous devrez fournir le mot de passe du compte d'auteur&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href='#nb3-3' class='spip_note' rel='appendix' title='Y compris si l'op&#233;ration est effectu&#233;e par l'administrateur, afin de prot&#233;ger (...)' id='nh3-3'&gt;3&lt;/a&gt;]&lt;/span&gt; :&lt;/p&gt;
&lt;p&gt;&lt;span class='spip_document_41 spip_documents spip_documents_center'&gt;
&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L500xH501/spipclient_password-17940.png?1733972200' width='500' height='501' alt=&#034;&#034; /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Notes :&lt;/strong&gt;
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; On pourrait imaginer de cr&#233;er un compte SPIP avec le m&#234;me login, mais cela n'est pas n&#233;cessaire.
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; On pourrait &#233;galement penser &#224; une autre solution : cr&#233;er un nouvel utilisateur OpenID Connect avec le login SPIP ; Mais cela irait &#224; l'encontre du principe de connexion unique (SSO) : si un utilisateur a une inscription sur OAuthSD, c'est pour pouvoir se connecter &#224; diff&#233;rents syst&#232;mes avec les m&#234;mes identifiants. La bonne solution est donc de lier un auteur SPIP &#224; un compte OIDC pr&#233;-existant, non l'inverse. &lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; Dans certaines applications, il peut &#234;tre opportun de cr&#233;er automatiquement l'utilisateur manquant. Il existe en d&#233;veloppement une version du plugin r&#233;alisant cela. Cette fa&#231;on de proc&#233;der est s&#251;re si l'inscription pr&#233;alable de l'utilisateur sur le serveur OIDC est suffisamment contr&#244;l&#233;e au regard des exigences de s&#233;curit&#233; de l'organisation.&lt;/p&gt;
&lt;p&gt;Une fois li&#233;s les utilisateurs OpenID Connect et SPIP, le formulaire de connexion fait appara&#238;tre le lien et propose la connexion avec OIDC :&lt;/p&gt;
&lt;p&gt;&lt;span class='spip_document_42 spip_documents spip_documents_center'&gt;
&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L414xH427/spipclient_oidc_ok-7b01d.png?1733817783' width='414' height='427' alt=&#034;&#034; /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt; Dans cette situation, il reste possible de se connecter &#034;normalement&#034; en actionnant le lien &#034;Ne pas utiliser OIDC, utiliser un mot de passe&#034;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Notes :&lt;/strong&gt;
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; Un seul utilisateur OpenID Connect peut-&#234;tre li&#233; &#224; un compte d'auteur de l'application SPIP. De m&#234;me, un seul compte d'auteur de l'application SPIP peut &#234;tre li&#233; &#224; un m&#234;me utilisateur OpenID Connect. &lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; Seul les logins servent &#224; &#233;tablir la correspondance, les mots de passe sont propres &#224; chaque syst&#232;me.&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Connexion &#224; l'application SPIP&lt;/h3&gt;
&lt;p&gt;Le plugin modifie le cadre de connexion de SPIP en ajoutant la possibilit&#233; d'utiliser OpenID Connect. La m&#233;thode classique reste disponible :&lt;/p&gt;
&lt;p&gt;&lt;span class='spip_document_21 spip_documents spip_documents_center'&gt;
&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L418xH516/oidc_connexion-2a9b7.png?1733817783' width='418' height='516' alt=&#034;&#034; /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Entrez votre email ou votre signature (pseudo) puis :&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pour vous identifier avec OpenID Connect&lt;/strong&gt;, assurez-vous que le champ &#034;Mot de passe&#034; est vide et actionnez le bouton &#034;Valider&#034;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pour vous connecter avec la m&#233;thode standard&lt;/strong&gt;, entrez le mot de passe d'auteur (ou utilisateur) SPIP avant d'appuyer sur le bouton &#034;Valider&#034;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Notes :&lt;/strong&gt;
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; Le plugin ajoute 'oidcclient' &#224; la liste des m&#233;thodes disponibles (variable $GLOBALS['liste_des_authentifications']). SPIP tente les diff&#233;rentes m&#233;thodes d'authentifications enregistr&#233;es en commen&#231;ant par la m&#233;thode standard. En cas d'&#233;chec, SPIP passe &#224; la m&#233;thode suivante.
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; Si vous vous connectez avec la m&#233;thode standard, et que votre login ou mot de passe est faux, vous serez redirig&#233; vers la connexion avec OpenID Connect. Dans cette situation, la &lt;a href='https://static.oa.dnc.global/-OpenID-Connect-SSO-management-de-session-etc-.html#slissosloetsrasontdansunbateauoauthsd' class='spip_in'&gt;fonctionnalit&#233; SLI&lt;/a&gt; pourrait aboutir &#224; une connexion automatique.
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; Si votre navigateur vous propose de m&#233;moriser les identifiants de connexion, il est inutile de le faire : le mot de passe vu par le navigateur est crypt&#233; et change &#224; chaque fois.&lt;/p&gt;
&lt;p&gt;&lt;a id=&#034;monitoring&#034;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Monitoring&lt;/h3&gt;
&lt;p&gt;Le &lt;a href='https://static.oa.dnc.global/-OpenID-Connect-SSO-management-de-session-etc-.html#monitoringdeletatdelauthentificationetslo' class='spip_in'&gt;monitoring de l'&#233;tat de l'authentification&lt;/a&gt; a pour but de synchroniser la connexion locale d'une application avec le jeton d'acc&#232;s correspondant. Il permet notamment de &lt;strong&gt;visualiser l'&#233;tat de connexion de l'utilisateur&lt;/strong&gt; :&lt;/p&gt;
&lt;table class=&#034;spip&#034;&gt;
&lt;tbody&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;ic&#244;ne&lt;/td&gt;
&lt;td&gt;Signification&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;&lt;span class='spip_document_54 spip_documents spip_documents_center'&gt;
&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L39xH26/monitoring_deconnecte-4ec35.png?1733817783' width='39' height='26' alt=&#034;&#034; /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;La connexion de l'utilisateur final n'est pas &#233;tablie avec le serveur OIDC. Notez que l'utilisateur peut s'&#234;tre connect&#233; &#224; l'application &#224; l'aide de la m&#233;thode de connexion classique de SPIP.&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;&lt;span class='spip_document_53 spip_documents spip_documents_center'&gt;
&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L39xH26/monitoring_ok-79b0c.png?1733817783' width='39' height='26' alt=&#034;&#034; /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;L'utilisateur final et l'application sont connect&#233;s par OIDC.&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;&lt;span class='spip_document_52 spip_documents spip_documents_center'&gt;
&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L35xH26/monitoring_error-63f7f.png?1733817783' width='35' height='26' alt=&#034;&#034; /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;Erreur g&#233;n&#233;rale, traduit malheureusement de multiples situations :
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; perte de communication Internet,
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; d&#233;faut de configuration du plugin,
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; d&#233;faut d'inscription de l'application cliente sur le serveur OAuthSD,
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; inscription de l'application sur un autre serveur, non compatible OAuthSD,
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; login inconnu du serveur OAuthSD (l'utilisateur final n'est pas inscrit sur ce serveur),
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; etc.&lt;br class='autobr' /&gt;
Le message peut &#233;ventuellement &#234;tre plus explicite : &#034;authentication error&#034;, ...&lt;br class='autobr' /&gt;
Notons que l'ic&#244;ne erreur peut appara&#238;tre bri&#232;vement au changement de page.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Le Monitoring permet &#233;galement de &lt;strong&gt;manager la session OIDC&lt;/strong&gt; et notamment d'effectuer la &lt;a href='https://static.oa.dnc.global/-OpenID-Connect-SSO-management-de-session-etc-.html#monitoringdeletatdelauthentificationetslo' class='spip_in'&gt;d&#233;connexion globale (SLO)&lt;/a&gt;.&lt;br class='autobr' /&gt;
En cliquant sur l'ic&#244;ne, des popups apparaissent selon l'&#233;tat de connexion :&lt;br class='autobr' /&gt;
&lt;span class='spip_document_55 spip_documents spip_documents_center'&gt;
&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L317xH150/ouvrir_session-b6039.png?1733817783' width='317' height='150' alt=&#034;&#034; /&gt;&lt;/span&gt;&lt;br class='autobr' /&gt;
&lt;span class='spip_document_56 spip_documents spip_documents_center'&gt;
&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L472xH167/clore_session-13cb8.png?1733817783' width='472' height='167' alt=&#034;&#034; /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Une fonctionnalit&#233; du monitoring consiste &#224; alerter l'utilisateur de la fin imminente de la session OIDC et lui permettre de la prolonger :&lt;/p&gt;
&lt;p&gt;&lt;span class='spip_document_59 spip_documents spip_documents_center'&gt;
&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L500xH173/prolonger_session-14f85.png?1733972200' width='500' height='173' alt=&#034;&#034; /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Notons que le monitoring a besoin pour fonctionner d'&#234;tre appel&#233; &#224; partir d'un bloc div dans toutes les pages de votre application, par exemple dans le pied de page :&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;SPIP&lt;/strong&gt;&lt;/p&gt;
&lt;div style='text-align: left;' class='spip_code' dir='ltr'&gt;&lt;code&gt;[(#REM) Monitoring OAuthSD]&lt;br /&gt; &lt;div id=&#034;oidc_connexion&#034;&gt;&lt;br /&gt; &lt;INCLURE{fond=inclure/oidc_monitor, env} /&gt;&lt;br /&gt; &lt;/div&gt;&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;Pour plus d'information sur le monitoring voyez :
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; &lt;a href='https://static.oa.dnc.global/-OpenID-Connect-SSO-management-de-session-etc-.html#monitoringdeletatdelauthentificationetslo' class='spip_in'&gt;Monitoring de l'&#233;tat de l'authentification et SLO&lt;/a&gt;
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; &lt;a href='https://static.oa.dnc.global/-OpenID-Connect-SSO-management-de-session-etc-.html#avertirdelafindesessionoidcetlaprolonger' class='spip_in'&gt;Avertir de la fin de session OIDC et la prolonger&lt;/a&gt;&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Informations sur le serveur et la connexion OIDC&lt;/h3&gt;
&lt;p&gt;Un clic sur le point d'interrogation fait appara&#238;tre une fen&#234;tre popup donnant les informations sur la connexion au serveur OIDC :&lt;/p&gt;
&lt;p&gt;&lt;span class='spip_document_58 spip_documents spip_documents_center'&gt;
&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L374xH309/infos_oidc-dca93.png?1733817783' width='374' height='309' alt=&#034;&#034; /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; Serveur : l'URL du serveur OIDC, cliquez pour atteindre le site support du serveur.
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; Client ID : l'ID de l'application courante sur le serveur.
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; Login SPIP : l'identifiant de connexion de l'utilisateur &#224; l'application SPIP. Nul si l'utilisateur n'est pas connect&#233;.
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; Login OIDC : l'identifiant d'enregistrement de l'utilisateur sur le serveur OIDC (peut-&#234;tre diff&#233;rent du pr&#233;c&#233;dent). Nul si l'utilisateur n'est pas connect&#233;.
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; T. session restant : la dur&#233;e de vie restante de la session OIDC.
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; D&#233;lai de r&#233;ponse : dur&#233;e de cycle de la derni&#232;re interrogation du contr&#244;leur Authorize. Un temps anormalement long (sup&#233;rieur &#224; la seconde) peut traduire une connexion de donn&#233;es lente, une erreur de communication ou une surcharge du serveur OIDC. Si vous pensez que votre connexion de donn&#233;es est bonne, et si une dur&#233;e anormalement longue persiste, contactez l'administrateur du serveur.&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Commentaires et avertissements : &lt;/h3&gt;
&lt;p&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; Ce plugin n'est pas un remplacement ou un &#233;quivalent du plugin OpenID.&lt;/p&gt;
&lt;p&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; Il reprend cependant le principe du plugin OpenID qui consiste &#224; donner le choix entre la connexion avec OpenID Connect ou la m&#233;thode login/mot de passe classique. Merci aux auteurs d'OpenID &#224; qui a &#233;t&#233; empr&#251;nt&#233;e la structure g&#233;n&#233;rale du plugin.&lt;/p&gt;
&lt;p&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; OpenID Connect (OIDC) ne doit pas &#234;tre confondu avec OpenID. La connexion automatique avec un identifiant OpenID universel n'existe pas dans le standard OIDC. OIDC offre une s&#233;curit&#233; sup&#233;rieure en permettant de construire un syst&#232;me propri&#233;taire dans lequel les applications clientes et les serveurs, ainsi que les utilisateurs, sont limit&#233;s &#224; un ensemble bien identifi&#233;.&lt;/p&gt;
&lt;p&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; Un utilisateur qui souhaite utiliser OIDC pour s'identifier doit &#234;tre enregistr&#233; sur un serveur OIDC que lui a d&#233;sign&#233; le concepteur de l'application et dont l'URL est configur&#233;e dans l'administration de ce plugin.&lt;/p&gt;
&lt;p&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; Un concepteur d'application qui utilise ce plugin doit enregistrer l'application en tant que client sur un serveur OpenID Connect.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Si vous voulez le faire sur ce serveur OAuthSD, il faut vous &lt;a href=&#034;https://oa.dnc.global/?page=inscription&#034; class='spip_out' rel='external'&gt;inscrire comme auteur et administrateur d'applications&lt;/a&gt; puis &lt;a href=&#034;https://oa.dnc.global/spip.php?page=creer-client&#034; class='spip_out' rel='external'&gt;enregistrer l'application&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; La version du plugin pr&#233;sent&#233;e ici date un peu. Depuis, une nouvelle version a &#233;t&#233; d&#233;velopp&#233;e et abondamment test&#233;e avec les applications &lt;a href=&#034;https://buy.dnc.global&#034; class='spip_out' rel='external'&gt;i-Tego SaaS&lt;/a&gt;. Il est notamment possible de pratiquer la connexion automatique.&lt;/p&gt;
&lt;p&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; Ce site web impl&#233;mente un d&#233;monstrateur d'OAuthSD ; le serveur peut &#234;tre indisponible et les donn&#233;es enregistr&#233;es effac&#233;es &#224; tout moment.&lt;/p&gt;
&lt;p&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; Aucune garantie d'aucune sorte n'est attach&#233;e &#224; l'utilisation de ce serveur, des plugins, du code et de la documentation fourni par i-Tego.&lt;/p&gt;
&lt;p&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; Le plugin est distribu&#233; sous licence GPL3.&lt;/p&gt;
&lt;p&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; une partie sensible du source du plugin n'est pas fournie pour des raisons de s&#233;curit&#233;.&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;FAQ&lt;/h3&gt;
&lt;p&gt;Erreur :&lt;br class='autobr' /&gt;
&lt;strong&gt;Le login OIDC xxx n'est pas li&#233; &#224; un compte de cette application.&lt;/strong&gt;&lt;br class='autobr' /&gt;
&lt;span class='spip_document_51 spip_documents spip_documents_center'&gt;
&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L500xH171/login_pas_lie-8649e.png?1733972200' width='500' height='171' alt=&#034;&#034; /&gt;&lt;/span&gt;&lt;br class='autobr' /&gt;
Cette erreur appara&#238;t apr&#232;s que vous avez valid&#233; le formulaire d'identification (ou en cas de connexion automatique &#224; une nouvelle application). Elle signifie que le login que vous avez indiqu&#233; dans ce formulaire (ou le login indiqu&#233; par le cookie en cas de reconnexion automatique) n'est pas un login d'auteur de l'application SPIP &#224; laquelle vous avez tent&#233; de vous connecter. Reportez-vous au paragraphe &#034;Correspondance entre l'utilisateur OpenID Connect et l'auteur (l'utilisateur) SPIP &#034; ci-dessus.&lt;/p&gt;
&lt;p&gt;Un conseil : faites simple, cr&#233;ez le login SPIP ou modifiez-le de fa&#231;on &#224; ce qu'il soit identique au login OIDC.&lt;br class='autobr' /&gt;
&lt;i&gt; &lt;strong&gt;Important :&lt;/strong&gt; Ne cr&#233;ez pas un nouvel utilisateur OpenID Connect avec le login SPIP, cela est contraire au principe m&#234;me de l'inscription unique (Single Sign On, SSO)&lt;/i&gt;.&lt;/p&gt;
&lt;p&gt;Question :&lt;br class='autobr' /&gt;
&lt;strong&gt;Quelle diff&#233;rence entre le lien &#034;Se d&#233;connecter&#034; et &#034;Clore la session OpenID Connect&#034; ?&lt;/strong&gt;&lt;br class='autobr' /&gt;
&lt;span class='spip_document_57 spip_documents spip_documents_center'&gt;
&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L500xH157/deconnexions-c1a12.png?1733972200' width='500' height='157' alt=&#034;&#034; /&gt;&lt;/span&gt;&lt;br class='autobr' /&gt;
Cela d&#233;pend de la fa&#231;on dont le lien &#034;Se d&#233;connecter&#034; a &#233;t&#233; &#233;crit par le d&#233;veloppeur de l'application SPIP :
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; si le lien contient le param&#232;tre d'URL &#034;logout=public&#034;, les deux m&#233;thodes sont &#233;quivalentes et conduiront &#224; la d&#233;connexion globale : toutes les applications actuellement connect&#233;es pour l'utilisateur authentifi&#233; seront d&#233;connect&#233;es et la session OpenID Connect sera d&#233;truite ;
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; si le lien contient le param&#232;tre d'URL &#034;logout=local&#034;, seule l'application courante sera d&#233;connect&#233;e, la session OpenID Connect &#233;tant pr&#233;serv&#233;e.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Notes :&lt;/strong&gt;
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; Le plugin surcharge la fonction action_logout_dist(). Par d&#233;faut, toute utilisation de cette fonction, sans pr&#233;ciser le param&#232;tre d'URL &#034;logout=local&#034; g&#233;n&#233;rera une demande de d&#233;connexion vers OIDC.
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; Il est peut-&#234;tre pr&#233;f&#233;rable de na pas pr&#233;ciser &#034;logout=local&#034; afin de provoquer syst&#233;matiquement la d&#233;connexion globale, ce qui va dans le sens de la s&#233;curit&#233;, particuli&#232;rement si une application est rest&#233;e connect&#233;e sur un mobile ou une autre station de travail.&lt;/p&gt;
&lt;p&gt;Question :&lt;br class='autobr' /&gt;
&lt;strong&gt;Et tout cela fonctionne avec un mobile ?&lt;/strong&gt;&lt;br class='autobr' /&gt;
Oui, bien s&#251;r, et pourquoi pas ? &lt;br class='autobr' /&gt;
En particulier, le mobile ob&#233;ira bien &#224; une d&#233;connexion globale venant d'une autre application.&lt;/p&gt;
&lt;p&gt;Question :&lt;br class='autobr' /&gt;
&lt;strong&gt;Est-ce que fermer le navigateur suffit &#224; provoquer une d&#233;connexion globale ?&lt;/strong&gt;&lt;br class='autobr' /&gt;
Non.&lt;br class='autobr' /&gt;
Il faut explicitement clore la session OIDC.&lt;br class='autobr' /&gt;
D'ailleurs, si vous relancez le navigateur sur l'application que vous venez de quitter alors qu'elle &#233;tait connect&#233;e, elle sera aussit&#244;t reconnect&#233;e.&lt;br class='autobr' /&gt;
Il en est de m&#234;me si on se contente de fermer l'onglet du navigateur dans lequel l'application &#233;tait lanc&#233;e et connect&#233;e.&lt;/p&gt;&lt;/div&gt;
		&lt;hr /&gt;
		&lt;div class='rss_notes'&gt;&lt;div id='nb3-1'&gt;
&lt;p&gt;&lt;span class=&#034;spip_note_ref&#034;&gt;[&lt;a href='#nh3-1' class='spip_note' title='Notes 3-1' rev='appendix'&gt;1&lt;/a&gt;] &lt;/span&gt;Pour l'instant, ce plugin n'a &#233;t&#233; valid&#233; que sur le serveur OAuthSD (ce serveur).&lt;/p&gt;
&lt;/div&gt;&lt;div id='nb3-2'&gt;
&lt;p&gt;&lt;span class=&#034;spip_note_ref&#034;&gt;[&lt;a href='#nh3-2' class='spip_note' title='Notes 3-2' rev='appendix'&gt;2&lt;/a&gt;] &lt;/span&gt;Ne pas confondre avec OpenID&lt;/p&gt;
&lt;/div&gt;&lt;div id='nb3-3'&gt;
&lt;p&gt;&lt;span class=&#034;spip_note_ref&#034;&gt;[&lt;a href='#nh3-3' class='spip_note' title='Notes 3-3' rev='appendix'&gt;3&lt;/a&gt;] &lt;/span&gt;Y compris si l'op&#233;ration est effectu&#233;e par l'administrateur, afin de prot&#233;ger parfaitement les int&#233;r&#234;ts de l'utilisateur.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Stylage des formulaires d'identification</title>
		<link>https://static.oa.dnc.global/-Techniques-et-code-du-serveur-OAuthSD-.html#stylagedesformulairesdidentification</link>
		<guid isPermaLink="true">https://static.oa.dnc.global/-Techniques-et-code-du-serveur-OAuthSD-.html#stylagedesformulairesdidentification</guid>
		<dc:date>2019-03-17T15:41:00Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>DnC</dc:creator>



		<description>
&lt;p&gt;OAuthSD offre deux moyens d'apdater les formulaires &#224; la charte graphique d'une organisation : my.css f&#233;finit les styles propres &#224; une organisation, qui s'appliqueront &#224; tous les clients inscrits sur le serveur, le champ css de la table Clients sera &#233;ventuellement utilis&#233; pour attribuer un stylage particulier &#224; une application. &lt;br class='autobr' /&gt;
Structure g&#233;n&#233;rale des formulaires &lt;br class='autobr' /&gt;
Le corps des formulaires pr&#233;sente la structure HTML suivante : &lt;br class='autobr' /&gt; ... ... ... (...)&lt;/p&gt;


-
&lt;a href="https://static.oa.dnc.global/-Techniques-et-code-du-serveur-OAuthSD-.html" rel="directory"&gt;Techniques et code du serveur OAuthSD&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;OAuthSD offre deux moyens d'apdater les formulaires &#224; la charte graphique d'une organisation :
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/squelettes-dist/puce.gif' width=&#034;8&#034; height=&#034;11&#034; class=&#034;puce&#034; alt=&#034;-&#034; /&gt; my.css f&#233;finit les styles propres &#224; une organisation, qui s'appliqueront &#224; tous les clients inscrits sur le serveur,
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/squelettes-dist/puce.gif' width=&#034;8&#034; height=&#034;11&#034; class=&#034;puce&#034; alt=&#034;-&#034; /&gt; le champ css de la table Clients sera &#233;ventuellement utilis&#233; pour attribuer un stylage particulier &#224; une application.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;h3 class=&#034;spip&#034;&gt;Structure g&#233;n&#233;rale des formulaires&lt;/h3&gt;
&lt;p&gt;Le corps des formulaires pr&#233;sente la structure HTML suivante :&lt;/p&gt;
&lt;div class=&#034;coloration_code code&#034;&gt;&lt;div class=&#034;spip_css code&#034;&gt;&lt;div class=&#034;css&#034;&gt;&lt;ol&gt;&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;...&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;div id&lt;span style=&#034;color: #00AA00;&#034;&gt;=&lt;/span&gt;&lt;span style=&#034;color: #ff0000;&#034;&gt;&#034;page&#034;&lt;/span&gt; class&lt;span style=&#034;color: #00AA00;&#034;&gt;=&lt;/span&gt;&lt;span style=&#034;color: #ff0000;&#034;&gt;&#034;(le nom de la m&#233;thode)&#034;&lt;/span&gt;&lt;span style=&#034;color: #00AA00;&#034;&gt;&gt;&lt;/span&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;div id&lt;span style=&#034;color: #00AA00;&#034;&gt;=&lt;/span&gt;&lt;span style=&#034;color: #ff0000;&#034;&gt;&#034;top&#034;&lt;/span&gt;&lt;span style=&#034;color: #00AA00;&#034;&gt;&gt;&lt;/span&gt;&lt;/div&lt;span style=&#034;color: #00AA00;&#034;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;div id&lt;span style=&#034;color: #00AA00;&#034;&gt;=&lt;/span&gt;&lt;span style=&#034;color: #ff0000;&#034;&gt;&#034;container&#034;&lt;/span&gt;&lt;span style=&#034;color: #00AA00;&#034;&gt;&gt;&lt;/span&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;h3 class&lt;span style=&#034;color: #00AA00;&#034;&gt;=&lt;/span&gt;&lt;span style=&#034;color: #ff0000;&#034;&gt;&#034;head-title&#034;&lt;/span&gt;&lt;span style=&#034;color: #00AA00;&#034;&gt;&gt;&lt;/span&gt; ... &lt;/h3&lt;span style=&#034;color: #00AA00;&#034;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; ...&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;div class&lt;span style=&#034;color: #00AA00;&#034;&gt;=&lt;/span&gt;&lt;span style=&#034;color: #ff0000;&#034;&gt;&#034;error&#034;&lt;/span&gt;&lt;span style=&#034;color: #00AA00;&#034;&gt;&gt;&lt;/span&gt; ... &lt;/div&lt;span style=&#034;color: #00AA00;&#034;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; ...&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;/div&lt;span style=&#034;color: #00AA00;&#034;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;div id&lt;span style=&#034;color: #00AA00;&#034;&gt;=&lt;/span&gt;&lt;span style=&#034;color: #ff0000;&#034;&gt;&#034;bottom&#034;&lt;/span&gt;&lt;span style=&#034;color: #00AA00;&#034;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; ...&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;/div&lt;span style=&#034;color: #00AA00;&#034;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;/div&lt;span style=&#034;color: #00AA00;&#034;&gt;&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;p class='download code_download'&gt;&lt;a href='https://static.oa.dnc.global/local/cache-code/16e66ce665d390344b13caa714e884fd.txt'&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;h3 class=&#034;spip&#034;&gt;Adaptation de la charte graphique&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Styles par d&#233;faut&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Par d&#233;faut, les styles des formulaires d'identification sont d&#233;finis dans la section head de chacun d'eux.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fichier my.css&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;S'il existe un fichier /my.css &#224; la racine du serveur, celui-ci est adopt&#233; comme feuille de style.&lt;/p&gt;
&lt;p&gt;Ce fichier pourra &#234;tre utilis&#233; pour ins&#233;rer un logo de l'organisation. Le champ #top est sans doute bien adapt&#233; &#224; recevoir une image en background.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Champ css de la table Clients&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Qu'il s'agisse de la feuille de style ou du d&#233;faut, les styles peuvent &#234;tre compl&#233;t&#233;s ou surcharg&#233;s par le contenu du champ css de la table clients. Dans l'exemple ci-dessous, la variable $thecss contient les donn&#233;es de ce champ.&lt;/p&gt;
&lt;p&gt;Ces styles intervenant en final, ils l'emportent sur les pr&#233;c&#233;dents.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Exemple&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Voici par exemple les d&#233;finitions de styles du formulaire de login :&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;PHP&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#034;coloration_code code&#034;&gt;&lt;div class=&#034;spip_php code&#034;&gt;&lt;div class=&#034;php&#034;&gt;&lt;ol&gt;&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #666666; font-style: italic;&#034;&gt;// Styles&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #000088;&#034;&gt;$thecss&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt; &lt;a href=&#034;http://www.php.net/empty&#034;&gt;&lt;span style=&#034;color: #990000;&#034;&gt;empty&lt;/span&gt;&lt;/a&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #000088;&#034;&gt;$data&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt;'css'&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;? &lt;span style=&#034;color: #0000ff;&#034;&gt;''&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;:&lt;/span&gt; &lt;a href=&#034;http://www.php.net/htmlspecialchars&#034;&gt;&lt;span style=&#034;color: #990000;&#034;&gt;htmlspecialchars&lt;/span&gt;&lt;/a&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #000088;&#034;&gt;$data&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt;'css'&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #b1b100;&#034;&gt;if&lt;/span&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt; &lt;a href=&#034;http://www.php.net/file_exists&#034;&gt;&lt;span style=&#034;color: #990000;&#034;&gt;file_exists&lt;/span&gt;&lt;/a&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt;'my.css'&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#123;&lt;/span&gt; &lt;span style=&#034;color: #666666; font-style: italic;&#034;&gt;//[dnc37]&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$style&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;'&lt;link rel=&#034;stylesheet&#034; type=&#034;text/css&#034; href=&#034;my.css&#034;&gt;&#034; .'&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #b1b100;&#034;&gt;if&lt;/span&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;!&lt;/span&gt;&lt;a href=&#034;http://www.php.net/empty&#034;&gt;&lt;span style=&#034;color: #990000;&#034;&gt;empty&lt;/span&gt;&lt;/a&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #000088;&#034;&gt;$thecss&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$style&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;.=&lt;/span&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$thecss&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&#125;&lt;/span&gt; &lt;span style=&#034;color: #b1b100;&#034;&gt;else&lt;/span&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#123;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$style&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;'&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt; &lt;style&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt; body {font-family: &#034;Century Gothic&#034;, Helvetica, Arial, sans-serif !important;}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt; #page {margin-left: auto; margin-right: auto; max-width: 360px; padding: 1.5em; border: solid 1px grey; border-radius: 10px; box-shadow: 10px 5px 5px silver;}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt; .head-title {text-align: center; background-color: gray; color: white; padding: 0.5em;}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt; .error {text_align: center; color : red; background-color : white; padding: 6px;}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt; .bouton {margin:15px; cursor:pointer;}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt; .tfacode {text-align: center;}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt; #champ_login {box-shadow: 10px 5px 5px silver; margin-bottom: 10px;}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt; #champ_password {border: none;};&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt; #btn_reset {float: left;}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt; #btn_submit {float: right;}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt; #submit {width:100px; font-size: 1.1em;}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt; #nologin {clear: both; margin-bottom: 0.5em;}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt; #ghostkeys {height: 120px; text-align: center;}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt; #ghostkeys &gt; img {box-shadow: 10px 5px 5px silver;}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt; #bottom {color : grey; font-size: .8em;}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt; #bottom a {color : grey;}&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt; '&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;.&lt;/span&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$thecss&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;.&lt;/span&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;'&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt; &lt;/style&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt; '&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;;&lt;/span&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #009900;&#034;&gt;&#125;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;p class='download code_download'&gt;&lt;a href='https://static.oa.dnc.global/local/cache-code/05fbdb90ee4571498aae77c90392354e.txt'&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;dl class='spip_document_75 spip_documents spip_documents_center'&gt;
&lt;dt&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L467xH622/login_std_fr-2-21614.png?1733821255' width='467' height='622' alt='' /&gt;&lt;/dt&gt;
&lt;dt class='crayon document-titre-75 spip_doc_titre' style='width:350px;'&gt;&lt;strong&gt;Formulaire d'identification avec GhostKeys&lt;/strong&gt;&lt;/dt&gt;
&lt;/dl&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Applications natives : un exemple avec Windev</title>
		<link>https://static.oa.dnc.global/-Ressources-pour-les-developpeurs-.html#applicationsnativesunexempleavecwindev</link>
		<guid isPermaLink="true">https://static.oa.dnc.global/-Ressources-pour-les-developpeurs-.html#applicationsnativesunexempleavecwindev</guid>
		<dc:date>2019-01-14T13:22:25Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>DnC</dc:creator>



		<description>
&lt;p&gt;Nous donnons ici un exemple d'une application Windows native r&#233;alis&#233;e avec Windev qui utilise l'authentification OpenID Connect. &lt;br class='autobr' /&gt;
Cette application met en oeuvre le flux d'autorisation avec code (Authorization Code Grant) d'OpenID Connect en passant par l'interface de bouclage (loopback) du r&#233;seau local. &lt;br class='autobr' /&gt;
Redirection par l'interface de bouclage du r&#233;seau &lt;br class='autobr' /&gt;
C'est l'une des trois m&#233;thodes d&#233;crites dans cet article : OAuth 2.0 (et OpenID Connect) pour les applications natives. &lt;br class='autobr' /&gt;
Traduction d'extraits de (...)&lt;/p&gt;


-
&lt;a href="https://static.oa.dnc.global/-Ressources-pour-les-developpeurs-.html" rel="directory"&gt;Adaptation des applications&lt;/a&gt;


		</description>


 <content:encoded>&lt;img class='spip_logo spip_logo_right spip_logos' alt=&#034;&#034; style='float:right' src='https://static.oa.dnc.global/local/cache-vignettes/L150xH150/arton86-77542.png?1733972201' width='150' height='150' /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;Nous donnons ici un exemple d'une application Windows native r&#233;alis&#233;e avec Windev qui utilise l'authentification OpenID Connect.&lt;/p&gt;
&lt;p&gt;Cette application met en oeuvre le &lt;a href='https://static.oa.dnc.global/-OpenID-Connect-Autorisation-via-un-code-Authorization-Code-Flow-.html#authentificationutilisantlefluxdecodedautorisationopenidconnect' class='spip_in'&gt;flux d'autorisation avec code (Authorization Code Grant) d'OpenID Connect&lt;/a&gt; en passant par l'interface de bouclage (loopback) du r&#233;seau local.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;h3 class=&#034;spip&#034;&gt;Redirection par l'interface de bouclage du r&#233;seau&lt;/h3&gt;
&lt;p&gt;C'est l'une des trois m&#233;thodes d&#233;crites dans cet article : &lt;a href='https://static.oa.dnc.global/-Authentifier-l-application-.html#oauth20etopenidconnectpourlesapplicationsnatives' class='spip_in'&gt;OAuth 2.0 (et OpenID Connect) pour les applications natives&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Traduction d'extraits de &lt;a href=&#034;https://datatracker.ietf.org/doc/rfc8252&#034; class='spip_out' rel='external'&gt;rfc8252&lt;/a&gt; :&lt;/p&gt;
&lt;blockquote class=&#034;spip&#034;&gt;
&lt;p&gt;Les applications natives capables d'ouvrir un port sur l'interface de bouclage du r&#233;seau peuvent utiliser l'interface de bouclage du r&#233;seau pour recevoir la redirection OAuth.&lt;/p&gt;
&lt;p&gt;Les URI de redirection de bouclage utilisent le sch&#233;ma HTTP et sont construits avec l'adresse IP litt&#233;rale de l'interface de bouclage et le port sur lequel le client &#233;coute. C'est-&#224;-dire &lt;code class='spip_code' dir='ltr'&gt;http://127.0.0.1:{port&#8249;/{path}&lt;/code&gt; pour IPv4 et &lt;code class='spip_code' dir='ltr'&gt;http: // [:: 1]: {port} / {chemin}&lt;/code&gt; pour IPv6.&lt;/p&gt;
&lt;/blockquote&gt;&lt;h3 class=&#034;spip&#034;&gt;Exemple avec Windev WD OAuth&lt;/h3&gt;
&lt;p&gt;Depuis la version 24, Windev permet de r&#233;aliser une authentification via le protocole OpenID Connect&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href='#nb4-1' class='spip_note' rel='appendix' title='PC Soft nomme &#034;OpenID&#034; ce qui est en fait OpenID Connect.' id='nh4-1'&gt;1&lt;/a&gt;]&lt;/span&gt; avec la composante wd240ggl.dll. Voir : &lt;a href=&#034;https://doc.pcsoft.fr/fr-FR/?1000022219#fonctionnement_l%E2%80%99authentification_openid_ELTPARAGRAPHE000140&#034; class='spip_out' rel='external'&gt;Fonction AuthIdentifie&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Cette impl&#233;mentation r&#233;pond aux &#233;l&#233;ments de sp&#233;cification pr&#233;sent&#233;s ci-dessus en employant comme il se doit le flux Authorization Grant (et non un flux implicite), en passant par l'interface de bouclage localhost, ainsi qu'un navigateur ext&#233;rieur &#224; l'application.&lt;/p&gt;
&lt;p&gt;Nous avons modifi&#233; l'exemple didactique (WINDEV) WD OAuth pour int&#233;grer une nouvelle classe OAuthSDLogin. Cette classe est absolument identique (au param&#233;trage pr&#232;s) &#224; la classe GoogleLogin, ce qui prouve la totale compatibilit&#233; du serveur OAuthSD.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ceci permet d'affirmer que toute application assurant l'authentification avec Google OpenID Connect pourra fonctionner avec OAuthSD&lt;/strong&gt;, pourvu que les param&#232;tres de connexion au serveur d'authentification puissent &#234;tre modifi&#233;s pour adopter ceux d'OAuthSD.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;WINDEV&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#034;coloration_code code&#034;&gt;&lt;div class=&#034;spip_php code&#034;&gt;&lt;div class=&#034;php&#034;&gt;&lt;ol&gt;&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #666666; font-style: italic;&#034;&gt;// Classe OAuthSDLogin&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #666666; font-style: italic;&#034;&gt;// G&#232;re l'authentification OpenID Connect via OAuthSD. Voir : https://oa.dnc.global/86&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; OAuthSDLogin est une Classe&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; h&#233;rite de OAuthAppLogin&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;FIN&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;PROC&#201;DURE Constructeur&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #666666; font-style: italic;&#034;&gt;// Appel du constructeur OAuthAppLogin&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;Constructeur OAuthAppLogin&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #0000ff;&#034;&gt;&#034;OAuthSD&#034;&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #666666; font-style: italic;&#034;&gt;// D&#233;crit l'application OAuth&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #666666; font-style: italic;&#034;&gt;// La cl&#233; et le code secret sont inscrits sur le serveur OAuthSD au moment de l'enregistrement de l'application.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;m_oServiceOAuth&lt;span style=&#034;color: #339933;&#034;&gt;..&lt;/span&gt;ClientID &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;&#034;WindevOAuthSDLogin&#034;&lt;/span&gt; &lt;span style=&#034;color: #666666; font-style: italic;&#034;&gt;// 'Client ID'&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;m_oServiceOAuth&lt;span style=&#034;color: #339933;&#034;&gt;..&lt;/span&gt;ClientSecret &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;&#034;uhkdfk7bUXWq!&#034;&lt;/span&gt; &lt;span style=&#034;color: #666666; font-style: italic;&#034;&gt;// 'Client secret'&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;dbgV&#233;rifieDiff&#233;rence&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;m_oServiceOAuth&lt;span style=&#034;color: #339933;&#034;&gt;..&lt;/span&gt;ClientID&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;&#034;&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;&#034;ClientID non renseign&#233;&#034;&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;dbgV&#233;rifieDiff&#233;rence&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;m_oServiceOAuth&lt;span style=&#034;color: #339933;&#034;&gt;..&lt;/span&gt;ClientSecret&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;&#034;&#034;&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;&#034;ClientSecret non renseign&#233;&#034;&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #666666; font-style: italic;&#034;&gt;// Le flux OAuth 2.0 requiert des 'Scopes'&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #666666; font-style: italic;&#034;&gt;// &#034;Space-delimited set of scope strings.&#034;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;m_oServiceOAuth&lt;span style=&#034;color: #339933;&#034;&gt;..&lt;/span&gt;Scope &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;&#034;openid profile sli&#034;&lt;/span&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #666666; font-style: italic;&#034;&gt;// Le flux OAuth 2.0 n&#233;cessite deux points d'acc&#232;s :&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #666666; font-style: italic;&#034;&gt;// - un point d'acc&#232;s pour authentifier l'utilisateur&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #666666; font-style: italic;&#034;&gt;// - un point d'acc&#232;s pour l'obtention d'un 'AccessToken'&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;m_oServiceOAuth&lt;span style=&#034;color: #339933;&#034;&gt;..&lt;/span&gt;URLAuth &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;&#034;https://oa.dnc.global/authorize&#034;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;m_oServiceOAuth&lt;span style=&#034;color: #339933;&#034;&gt;..&lt;/span&gt;URLToken &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;&#034;https://oa.dnc.global/token&#034;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;m_oServiceOAuth&lt;span style=&#034;color: #339933;&#034;&gt;..&lt;/span&gt;Param&#232;tresSuppl&#233;mentaires &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;&#034;response_type=code&#034;&lt;/span&gt; &lt;span style=&#034;color: #666666; font-style: italic;&#034;&gt;// &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #666666; font-style: italic;&#034;&gt;// L'URL de callback vers localhost permet &#224; l'application de recevoir le code d'autorisation.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;m_oServiceOAuth&lt;span style=&#034;color: #339933;&#034;&gt;..&lt;/span&gt;URLRedirection &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;&#034;http://localhost:9000/&#034;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;PROC&#201;DURE Destructeur&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #666666; font-style: italic;&#034;&gt;// R&#233;sum&#233; : Lit le profil utilisateur&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #666666; font-style: italic;&#034;&gt;// Syntaxe :&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #666666; font-style: italic;&#034;&gt;//[ &lt;R&#233;sultat&gt; = ] LectureProfilUtilisateur ()&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #666666; font-style: italic;&#034;&gt;//&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #666666; font-style: italic;&#034;&gt;// Param&#232;tres :&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #666666; font-style: italic;&#034;&gt;// Aucun&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #666666; font-style: italic;&#034;&gt;// Valeur de retour :&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #666666; font-style: italic;&#034;&gt;// OAuthWebUser : Informations sur l'utilisateur&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #666666; font-style: italic;&#034;&gt;//&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;PROC&#201;DURE VIRTUELLE PROT&#201;G&#201;E LectureProfilUtilisateur&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;clInfo est un OAuthWebUser&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;vInfo est un Variant&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;oRequ&#234;te est une httpRequ&#234;te&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;oR&#233;ponse est une httpR&#233;ponse&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;oRequ&#234;te&lt;span style=&#034;color: #339933;&#034;&gt;..&lt;/span&gt;URL &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;&#034;https://oa.dnc.global/userinfo&#034;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;oRequ&#234;te&lt;span style=&#034;color: #339933;&#034;&gt;..&lt;/span&gt;AuthToken &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; m_oToken&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;oRequ&#234;te&lt;span style=&#034;color: #339933;&#034;&gt;..&lt;/span&gt;M&#233;thode &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; httpGet&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;&lt;span style=&#034;color: #666666; font-style: italic;&#034;&gt;// Ex&#233;cute la requ&#234;te permettant d'obtenir les informations du profil de l'utilisateur connect&#233;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;oR&#233;ponse &lt;span style=&#034;color: #339933;&#034;&gt;&lt;-&lt;/span&gt; HTTPEnvoie&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;oRequ&#234;te&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;SI PAS ErreurD&#233;tect&#233;e _ET_ PAS oR&#233;ponse&lt;span style=&#034;color: #339933;&#034;&gt;..&lt;/span&gt;CodeEtat &lt;span style=&#034;color: #339933;&#034;&gt;&gt;=&lt;/span&gt; &lt;span style=&#034;color: #cc66cc;&#034;&gt;400&lt;/span&gt; ALORS&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #666666; font-style: italic;&#034;&gt;// D&#233;code la r&#233;ponse JSON contenu dans le message&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; vInfo &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; JSONVersVariant&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;oR&#233;ponse&lt;span style=&#034;color: #339933;&#034;&gt;..&lt;/span&gt;Contenu&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #666666; font-style: italic;&#034;&gt;// Recopie les donn&#233;es lues&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #666666; font-style: italic;&#034;&gt;// Attention, les cha&#238;nes sont au format ANSI / UTF-8&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;span style=&#034;color: #666666; font-style: italic;&#034;&gt;// Pour les afficher, il est n&#233;cessaire d'utiliser AnsiVersUnicode(&lt;cha&#238;ne&gt;, alphabetUTF8)&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; clInfo&lt;span style=&#034;color: #339933;&#034;&gt;.&lt;/span&gt;ID &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; vInfo&lt;span style=&#034;color: #339933;&#034;&gt;.&lt;/span&gt;id&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; clInfo&lt;span style=&#034;color: #339933;&#034;&gt;.&lt;/span&gt;Nom &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; vInfo&lt;span style=&#034;color: #339933;&#034;&gt;.&lt;/span&gt;name&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; clInfo&lt;span style=&#034;color: #339933;&#034;&gt;.&lt;/span&gt;NomAffich&#233; &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; vInfo&lt;span style=&#034;color: #339933;&#034;&gt;.&lt;/span&gt;given_name&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; clInfo&lt;span style=&#034;color: #339933;&#034;&gt;.&lt;/span&gt;Image &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; vInfo&lt;span style=&#034;color: #339933;&#034;&gt;.&lt;/span&gt;picture&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; clInfo&lt;span style=&#034;color: #339933;&#034;&gt;.&lt;/span&gt;Email &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; vInfo&lt;span style=&#034;color: #339933;&#034;&gt;.&lt;/span&gt;email&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;FIN&lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt; &lt;/div&gt;&lt;/li&gt;
&lt;li style=&#034;font-weight: normal; vertical-align:top;&#034;&gt;&lt;div style=&#034;&#034;&gt;RENVOYER clInfo&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;p class='download code_download'&gt;&lt;a href='https://static.oa.dnc.global/local/cache-code/47b245aeca1b5abbda4a818d6d6848be.txt'&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;Dans le param&#233;trage de la demande d'autorisation, noter :
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; m_oServiceOAuth..Scope = &#034;openid profile sli&#034; : le scope openid entra&#238;ne l'utilisation du protocole OpenID Connect.
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; m_oServiceOAuth..Param&#232;tresSuppl&#233;mentaires = &#034;response_type=code&#034; qui entra&#238;ne la mise en oeuvre du flux Authorization Code Grant.&lt;/p&gt;
&lt;p&gt;&lt;span class='spip_document_48 spip_documents spip_documents_center'&gt;
&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L500xH297/windev_oauthsd_1-60973.png?1733972201' width='500' height='297' alt=&#034;&#034; /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Comme d'habitude, le login est &#034;bebert&#034;, le mot de passe &#034;012345678&#034;&lt;/p&gt;
&lt;p&gt;Apr&#232;s login, l'exemple effectue l'&#233;change des jetons puis une requ&#234;te userinfo, dont le r&#233;sultat, gu&#232;re impressionnant, est cependant probant du bon fonctionnement :&lt;/p&gt;
&lt;p&gt;&lt;span class='spip_document_49 spip_documents spip_documents_center'&gt;
&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L500xH330/windev_oauthsd_2-045b4.png?1733972201' width='500' height='330' alt=&#034;&#034; /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;On peut &#233;galement v&#233;rifier le bon fonctionnement de la &lt;a href='https://static.oa.dnc.global/-OpenID-Connect-SSO-management-de-session-etc-.html#slissosloetsrasontdansunbateauoauthsd' class='spip_in'&gt;connexion unique (SLI)&lt;/a&gt; avec cette application.&lt;/p&gt;&lt;/div&gt;
		&lt;hr /&gt;
		&lt;div class='rss_notes'&gt;&lt;div id='nb4-1'&gt;
&lt;p&gt;&lt;span class=&#034;spip_note_ref&#034;&gt;[&lt;a href='#nh4-1' class='spip_note' title='Notes 4-1' rev='appendix'&gt;1&lt;/a&gt;] &lt;/span&gt;PC Soft nomme &#034;OpenID&#034; ce qui est en fait OpenID Connect.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Extension OpenID Connect pour phpBB</title>
		<link>https://static.oa.dnc.global/-Ressources-pour-les-developpeurs-.html#extensionopenidconnectpourphpbb</link>
		<guid isPermaLink="true">https://static.oa.dnc.global/-Ressources-pour-les-developpeurs-.html#extensionopenidconnectpourphpbb</guid>
		<dc:date>2018-12-21T10:00:58Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>DnC</dc:creator>



		<description>
&lt;p&gt;Un client OIDC pour phpBB. Permet &#224; phpBB d'utiliser OpenID Connect au lieu de l'authentification classique. (Attention : &#224; ne pas confondre avec les extension pour OpenID !) &lt;br class='autobr' /&gt;
Les d&#233;veloppeurs d'application phpBB pourront faciliter l'int&#233;gration des forums dans leurs autres applications Web en permettant l'acc&#232;s des utilisateurs avec une inscription unique configur&#233;e sur le serveur OIDC (Single Sign-On, SSO). &lt;br class='autobr' /&gt;
OAuthSD vous offre plus que l'inscription unique. La connexion unique (Single Login-In, SLI) (...)&lt;/p&gt;


-
&lt;a href="https://static.oa.dnc.global/-Ressources-pour-les-developpeurs-.html" rel="directory"&gt;Adaptation des applications&lt;/a&gt;


		</description>


 <content:encoded>&lt;img class='spip_logo spip_logo_right spip_logos' alt=&#034;&#034; style='float:right' src='https://static.oa.dnc.global/local/cache-vignettes/L150xH47/arton68-521c0.png?1733972201' width='150' height='47' /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;Un client OIDC pour phpBB. Permet &#224; phpBB d'utiliser OpenID Connect au lieu de l'authentification classique. (Attention : &#224; ne pas confondre avec les extension pour OpenID !)&lt;/p&gt;
&lt;p&gt;Les d&#233;veloppeurs d'application phpBB pourront faciliter l'int&#233;gration des forums dans leurs autres applications Web en permettant l'acc&#232;s des utilisateurs avec une &lt;a href=&#034;https://oa.dnc.global/-OAuthSD-sujets-avances-.html#slisloetsrasontdansunbateauoauthsd&#034; class='spip_out' rel='external'&gt;inscription unique configur&#233;e sur le serveur OIDC&lt;/a&gt; (Single Sign-On, SSO).&lt;/p&gt;
&lt;p&gt;OAuthSD vous offre plus que l'inscription unique. La connexion unique (Single Login-In, SLI) : une fois connect&#233; &#224; une application, vous serez connect&#233; de mani&#232;re transparente aux autres (&#224; condition bien s&#251;r qu'elles soient enregistr&#233;es sur le serveur).&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;h3 class=&#034;spip&#034;&gt;Pr&#233;requis&lt;/h3&gt;
&lt;p&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; phpBB 3.x &lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; syst&#232;me Linux + PHP 5.6 ou 7.1.
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; Attention ! le fonctionnement d'OIDC exige une application cliente install&#233;e sur un serveur s&#233;curis&#233; (protocole https://).&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Inscription sur le serveur OAuthSD&lt;/h3&gt;
&lt;p&gt;L'application recevant l'extension doit &#234;tre enregistr&#233;e sur le serveur OAuthSD&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href='#nb5-1' class='spip_note' rel='appendix' title='Dans l'&#233;tat actuel du d&#233;veloppement, l'extension ne permet que la connexion &#224; (...)' id='nh5-1'&gt;1&lt;/a&gt;]&lt;/span&gt;.&lt;br class='autobr' /&gt;
La proc&#233;dure est d&#233;crite ici : &lt;a href='https://static.oa.dnc.global/-OpenID-Connect-6-.html#openidconnectlieruneapplicationclienteauserveuroauthsd' class='spip_in'&gt;OpenID Connect : Lier une application cliente au serveur OAuthSD&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;En suivant cette proc&#233;dure :
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; vous vous inscrirez en tant qu'auteur sur le serveur,&lt;/p&gt;
&lt;p&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; vous enregistrerez votre application. L'enregistrement se fait ici : &lt;a href=&#034;https://oa.dnc.global/?page=creer-client&#034; class='spip_out' rel='external'&gt;Inscrire une application cliente&lt;/a&gt;.&lt;br class='autobr' /&gt;
Vous devrez :&lt;/p&gt;
&lt;ul class=&#034;spip&#034;&gt;&lt;li&gt; configurer l'adresse de retour (Redirect URI) sous la forme suivante : https://mon_application.com/ucp.php?mode=login&amp;login=external&amp;oauth_service=oauthsd&lt;/li&gt;&lt;li&gt; Inscrire les scopes &#034;openid sli&#034;.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Notez les valeurs de &#034;Client id&#034; (qui correspondra &#224; &#034;Key&#034; dans phpBB) et &#034;Client secret&#034;.&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Installation et configuration sur phpBB&lt;/h3&gt;
&lt;p&gt;1. Le client OIDC pour phpBB s'installe comme toute extension de phpBB :
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; t&#233;l&#233;charger l'&lt;a href='https://static.oa.dnc.global/web/downloads/oidcclient_phpbb.zip'&gt;extension OIDC client for phpBB&lt;/a&gt; (se trouve aussi &lt;a href=&#034;https://github.com/bdegoy/oauthsd-phpbb&#034; class='spip_out' rel='external'&gt;sur GitHub&lt;/a&gt;),
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; d&#233;compresser l'archive,
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; installer le code dans /ext/bdegoy/oauthsd,
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; dans phpBB, installez l'extension &#034;DnC OIDC client for OAuthSD&#034; (section Customize -&gt; Extension Manager).&lt;/p&gt;
&lt;p&gt;2. Installez le service OAuthSD pour Lusitanian / PHPoAuthLib :&lt;br class='autobr' /&gt;
phpBB utilise la biblioth&#232;que &lt;a href='https://static.oa.dnc.global/-Ressources-pour-les-developpeurs-.html#serviceoauthsdpourlusitanianphpoauthlib' class='spip_in'&gt;Lusitanian / PHPoAuthLib&lt;/a&gt; pour mettre en &#339;uvre le SSO avec OIDC. Nous devons compl&#233;ter cette biblioth&#232;que avec le service Oauthsd. Le service OAuthSD est fourni avec le fichier ... /oauthsd-phpbb/OAuth/OAuth2/Service/Oauthsd.php qui doit &#234;tre copi&#233; dans le r&#233;pertoire .../vendor/lusitanian/oauth/src/OAuth/OAuth2/Service/.&lt;/p&gt;
&lt;p&gt;3. dans phpBB, section Client Communication -&gt; Authentication, s&#233;lectionnez la m&#233;thode d'authentification Oauth :&lt;br class='autobr' /&gt;
&lt;span class='spip_document_37 spip_documents spip_documents_center'&gt;
&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L500xH112/phpbbclient_i1-40f44.png?1733972201' width='500' height='112' alt=&#034;&#034; /&gt;&lt;/span&gt; &lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; Entrez les param&#232;tres pour OAuthSD :&lt;br class='autobr' /&gt; &lt;span class='spip_document_38 spip_documents spip_documents_center'&gt;
&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L496xH120/phpbbclient_i2-62a32.png?1733817782' width='496' height='120' alt=&#034;&#034; /&gt;&lt;/span&gt;
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; puis actionnez le bouton &#034;Submit&#034;.&lt;/p&gt;
&lt;p&gt;Si tout s'est bien pass&#233;, un bouton &#034;OAuthSD&#034; doit appara&#238;tre dans la page de Connexion :&lt;br class='autobr' /&gt;
&lt;span class='spip_document_39 spip_documents spip_documents_center'&gt;
&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L500xH304/phpbbclient_i3-f495d.png?1733972201' width='500' height='304' alt=&#034;&#034; /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Notes :&lt;/strong&gt;
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; Le bouton &#034;OAuthSD&#034; n'apparait pas partout o&#249; la connexion est possible. Par exemple, on s'attendrait &#224; voir le bouton sur la page de connexion &#224; l'administration, mais ce n'est pas le cas. Cela d&#233;pend de phpBB&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href='#nb5-2' class='spip_note' rel='appendix' title='La connexion &#224; l'aide d'un syst&#232;me ext&#233;rieur n'est g&#233;r&#233;e que dans le script (...)' id='nh5-2'&gt;2&lt;/a&gt;]&lt;/span&gt;, pas de l'extension.&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;phpBB : Tentative de connexion avec un compte inconnu du forum&lt;/h3&gt;
&lt;p&gt;Si on tente de se connecter avec un login (un &#034;Nom d'utilisateur&#034; dans le vocabulaire phpBB) qui n'est pas enregistr&#233; sur le forum, phpBB signale l'erreur :&lt;/p&gt;
&lt;p&gt;&lt;span class='spip_document_36 spip_documents spip_documents_center'&gt;
&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L500xH550/phpbbclient_e2-9f980.png?1733972201' width='500' height='550' alt=&#034;&#034; /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;il est propos&#233; de :
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; lier le compte &#224; un compte existant : Entrer le Nom d'utilisateur et le Mot de passe puis actionner &#034;Connexion&#034;&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href='#nb5-3' class='spip_note' rel='appendix' title='Si, ce faisant, vous liez l'utilisateur Oauth &#224; un utilisateur phpBB qui (...)' id='nh5-3'&gt;3&lt;/a&gt;]&lt;/span&gt;
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; cr&#233;er un nouveau compte : Actionnez le bouton &#034;S'enregistrer&#034;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Notes :&lt;/strong&gt;
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; Seul le login (le Nom d'utilisateur) doit &#234;tre identique des deux c&#244;t&#233;s, le mot de passe est propre &#224; chaque syst&#232;me.
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; On pourrait penser &#224; une autre solution : inscrire le compte phpBB sur le serveur d'authentification. Mais cela irait &#224; l'encontre du principe de connexion unique (SSO) : si un utilisateur a une inscription sur OAuthSD, c'est pour pouvoir se connecter &#224; diff&#233;rents syst&#232;mes avec les m&#234;mes identifiants.&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Feuille de route&lt;/h3&gt;
&lt;p&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; Param&#233;trer l'URL du serveur OIDC afin de pouvoir choisir le serveur d'authentification. Cela devrait conduire &#224; un client OpenID Connect universel.
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; Essayer d'agir sur phpBB pour mieux int&#233;grer l'authentification. Par exemple, l'insertion du bouton d'authentification sur la page de connexion ACL.&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;En conclusion ...&lt;/h3&gt;
&lt;p&gt;Cette inscription d'une application PhpBB montre qu'OAuthSD est bien un serveur d'authentification tout aussi accessible que les grandes plateformes. Mais avec OAuthSD nous vous offrons beaucoup plus : le moyen de prot&#233;ger vos donn&#233;es et de prot&#233;ger les visiteurs de vos sites &#224; l'aide d'un serveur de votre propri&#233;t&#233;.&lt;/p&gt;
&lt;p&gt;Notons que cette utilisation qui est faite d'OpenID Connect r&#233;duit le point de vue au SSO. OpenID Connect, c'est &#233;norm&#233;ment plus que le SSO, qui n'en est qu'un aspect mineur.&lt;/p&gt;
&lt;p&gt;OpenID Connect, c'est :
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; la protection des mots de passe,
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; la s&#233;curisation des &#233;changes entre applications r&#233;parties dans le Cloud,
&lt;br /&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L8xH11/puce-32883.gif?1733817730' width='8' height='11' class='puce' alt=&#034;-&#034; /&gt; et, avec OAuthSD, la &lt;a href='https://static.oa.dnc.global/-OpenID-Connect-SSO-management-de-session-etc-.html#ssoetconnexionuniquesingleloginidentificationsli' class='spip_in'&gt;Connexion unique (Single Login-In, SLI)&lt;/a&gt;&lt;br class='autobr' /&gt;
etc.&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Voyez :&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#034;https://area51.phpbb.com/docs/dev/3.2.x/extensions/tutorial_authentication.html&#034; class='spip_url spip_out auto' rel='nofollow external'&gt;https://area51.phpbb.com/docs/dev/3.2.x/extensions/tutorial_authentication.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&#034;https://github.com/bdegoy?utf8=%E2%9C%93&amp;tab=repositories&amp;q=OAuthSD&#034;&gt;&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L24xH24/github_24-28c1d.png?1733817782' width='24' height='24' /&gt;&lt;/a&gt; On GitHub&lt;/strong&gt;&lt;br class='autobr' /&gt;
&lt;a href=&#034;https://github.com/bdegoy/oauthsd-phpbb&#034; class='spip_url spip_out auto' rel='nofollow external'&gt;https://github.com/bdegoy/oauthsd-phpbb&lt;/a&gt;&lt;br class='autobr' /&gt;
Issues (Bug reports or feature request) :&lt;br class='autobr' /&gt;
&lt;a href=&#034;https://github.com/bdegoy/oauthsd-phpbb/issues&#034; class='spip_url spip_out auto' rel='nofollow external'&gt;https://github.com/bdegoy/oauthsd-phpbb/issues&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
		&lt;hr /&gt;
		&lt;div class='rss_notes'&gt;&lt;div id='nb5-1'&gt;
&lt;p&gt;&lt;span class=&#034;spip_note_ref&#034;&gt;[&lt;a href='#nh5-1' class='spip_note' title='Notes 5-1' rev='appendix'&gt;1&lt;/a&gt;] &lt;/span&gt;Dans l'&#233;tat actuel du d&#233;veloppement, l'extension ne permet que la connexion &#224; ce serveur OAuthSD, cela n'est donc envisageable que dans une phase de d&#233;veloppement. DnC propose &#224; ses clients de poss&#233;der leur propre serveur OIDC afin de b&#233;n&#233;ficier de toute la s&#233;curit&#233; offerte par un syst&#232;me d'authentification priv&#233;.&lt;/p&gt;
&lt;/div&gt;&lt;div id='nb5-2'&gt;
&lt;p&gt;&lt;span class=&#034;spip_note_ref&#034;&gt;[&lt;a href='#nh5-2' class='spip_note' title='Notes 5-2' rev='appendix'&gt;2&lt;/a&gt;] &lt;/span&gt;La connexion &#224; l'aide d'un syst&#232;me ext&#233;rieur n'est g&#233;r&#233;e que dans le script ucp.php (User Control Panel) mais pas dans acp.php (Admin Control Panel).&lt;/p&gt;
&lt;/div&gt;&lt;div id='nb5-3'&gt;
&lt;p&gt;&lt;span class=&#034;spip_note_ref&#034;&gt;[&lt;a href='#nh5-3' class='spip_note' title='Notes 5-3' rev='appendix'&gt;3&lt;/a&gt;] &lt;/span&gt;Si, ce faisant, vous liez l'utilisateur Oauth &#224; un utilisateur phpBB qui avait d&#233;j&#224; &#233;t&#233; li&#233;, vous obtenez une erreur SQL du genre &#034;Duplicate entry '2-oauthsd' for key 'PRIMARY' [1062]&#034;, o&#249; &#034;2&#034; est l'ID de l'utilisateur phpBB . C'est un bug de phpBB qui devrait auparavant effacer l'entr&#233;e user_id = 2 dans la table phpbb_oauth_account. Si on efface manuellement cette entr&#233;e, on peut terminer l'op&#233;ration.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>



</channel>

</rss>
