<?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>La fin des mots de passe : NoPassConnect</title>
		<link>https://static.oa.dnc.global/-Identifier-l-utilisateur-final-.html#lafindesmotsdepassenopassconnect</link>
		<guid isPermaLink="true">https://static.oa.dnc.global/-Identifier-l-utilisateur-final-.html#lafindesmotsdepassenopassconnect</guid>
		<dc:date>2021-05-25T14:43:00Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>DnC</dc:creator>



		<description>
&lt;p&gt;i-Tego d&#233;veloppe NoPassConnect pour le serveur OAuthSD, une application de mobile permettant une identification tr&#232;s s&#233;curis&#233;e de l'utilisateur final sans mot de passe. Fond&#233;e sur les meilleures pratiques cryptographiques, cette m&#233;thode est ferm&#233;e &#224; une utilisation publique et se trouve donc particuli&#232;rement adapt&#233;e &#224; la s&#233;curisation des acc&#232;s aux donn&#233;es dans un domaine d'entreprise. &lt;br class='autobr' /&gt;
OAuthSD + NoPassConnect est une solution id&#233;ale pour s&#233;curiser les acc&#232;s aux applications des entreprises dans le cadre (...)&lt;/p&gt;


-
&lt;a href="https://static.oa.dnc.global/-Identifier-l-utilisateur-final-.html" rel="directory"&gt;Identifier l'utilisateur final&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/L150xH111/arton194-ce8e6.jpg?1733820003' width='150' height='111' /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;i-Tego&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href='#nb1' class='spip_note' rel='appendix' title='i-Tego est une nouvelle soci&#233;t&#233; cr&#233;&#233;e en juillet 2021 apr&#232;s la fermeture de DnC (...)' id='nh1'&gt;1&lt;/a&gt;]&lt;/span&gt; d&#233;veloppe NoPassConnect pour le serveur OAuthSD, une application de mobile permettant une identification tr&#232;s s&#233;curis&#233;e de l'utilisateur final sans mot de passe.&lt;/p&gt;
&lt;p&gt;Fond&#233;e sur les meilleures pratiques cryptographiques, cette m&#233;thode est ferm&#233;e &#224; une utilisation publique et se trouve donc particuli&#232;rement adapt&#233;e &#224; la &lt;a href=&#034;https://reseau-healthtech.fr/Un-rapport-deplore-le-niveau-de-la-securite-et-des-mots-de-passe-en-entreprise.html&#034; class='spip_out' rel='external'&gt;s&#233;curisation des acc&#232;s aux donn&#233;es dans un domaine d'entreprise&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;OAuthSD + NoPassConnect est une solution id&#233;ale pour s&#233;curiser les acc&#232;s aux applications des entreprises dans le cadre du t&#233;l&#233;travail.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;La vid&#233;o suivante montre comment ouvrir une session OpenID Connect en un clic et sans mot de passe :&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;center&gt;&lt;div class=&#034;playerVideo&#034;&gt; &lt;section&gt; &lt;figure&gt; &lt;video width=&#034;640&#034; height=&#034;420&#034; preload=&#034;metadata&#034; tabindex=&#034;-1&#034; controls autobuffer autoplay poster=&#034;IMG/plugins-dist/medias/prive/vignettes/m4v.png&#034;&gt; &lt;source src=&#034;IMG/m4v/smartconnect1.m4v?ctime=1689608165&#034; type='video/mp4' /&gt; &lt;/video&gt; &lt;/figure&gt; &lt;/section&gt; &lt;/div&gt; &lt;!-- Fermeture de ID : playerVideo --&gt;&lt;/center&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Pour fonctionner, NoPassConnect n&#233;cessite :
&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 mobile NoPassConnect install&#233;e sur un smartphone. Celui-ci doit &#234;tre connect&#233; &#224; Internet ou connect&#233; au r&#233;seau WiFi de l'entreprise ce qui &lt;strong&gt; permet une utilisation sanctuaris&#233;e dans un espace restreint&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 serveur OAuthSD avec le module d'identification NoPassConnect.&lt;br class='autobr' /&gt;
Les applications compatibles OpenID Connect n'ont pas besoin d'&#234;tre modifi&#233;es.&lt;/p&gt;
&lt;p&gt;OAuthSD peut int&#233;grer NoPassConnect comme m&#233;thode d'identification primaire, qui remplacera avantageusement des syst&#232;mes fond&#233;s sur des lecteurs de carte par exemple.&lt;br class='autobr' /&gt;
NoPassConnect peut &#233;galement &#234;tre utilis&#233; comme &lt;a href='https://static.oa.dnc.global/-Identifier-l-utilisateur-final-.html#validationen2etapestwofactorauthentication2fa' class='spip_in'&gt;identification secondaire (Identification &#224; deux facteurs, TFA)&lt;/a&gt;.&lt;br class='autobr' /&gt;
&lt;span class='spip_document_100 spip_documents spip_documents_center'&gt;
&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L398xH497/smartconnect_login-f0cb6.png?1733820003' width='398' height='497' alt=&#034;Login SmartConnect - NopassConnect&#034; title=&#034;Login SmartConnect - NopassConnect&#034; /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Les avantages de NoPassConnect :&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;Productivit&#233;&lt;/strong&gt; : NoPassConnect permet une connexion ultra-rapide en mode SSO : il suffit de scanner un QR-Code pr&#233;sent&#233; &#224; l'&#233;cran par OAuthSD (une fois au d&#233;but d'une s&#233;ance de travail), le reste est automatique.&lt;br class='autobr' /&gt;
&lt;strong&gt;SmartConnect &#233;limine le besoin de mot de passe&lt;/strong&gt; et &#233;pargne le temps perdu &#224; r&#233;tablir les identifiants &#233;gar&#233;s.&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;Economie&lt;/strong&gt; : NoPassConnect est install&#233; sur un mobile ordinaire&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href='#nb2' class='spip_note' rel='appendix' title='Actuellement sur syst&#232;me Android, IOS en cours de d&#233;veloppement.' id='nh2'&gt;2&lt;/a&gt;]&lt;/span&gt; sans n&#233;cessiter de mat&#233;riel suppl&#233;mentaire ni de protocoles d'installation complexes. Une entreprise peut envisager d'&#233;quiper un tr&#232;s grand nombre d'utilisateurs, y compris ext&#233;rieurs, pour une fraction du prix d'un syst&#232;me d'identification mat&#233;riel, avec un gain de temps pour l'administration et la maintenance. C'est &lt;strong&gt;l'id&#233;al pour le t&#233;l&#233;travail&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; &lt;strong&gt;Faible surface d'attaque&lt;/strong&gt; : les mots de passe sont le maillon faible de l'identification. NoPassConnect les remplace par des informations cryptographiques robustes, &#224; usage unique.&lt;br class='autobr' /&gt;
Les &#233;changes sont limit&#233;s &#224; une liaison crypt&#233;e mobile-serveur OAuthSD. &lt;br class='autobr' /&gt;
Il n'y a pas de logiciel &#224; installer sur les stations de travail ou sur les navigateurs (contrairement &#224; un lecteur d'ID card) ; ceux-ci n'interviennent pas dans le protocole d'identification de NoPassConnect, ni a fortiori leurs liaisons publiques, ce qui permet d'&#233;viter deux cibles d'attaques particuli&#232;rement vuln&#233;rables.&lt;/p&gt;
&lt;p&gt;De plus :&lt;br class='autobr' /&gt;
NoPassConnect est fond&#233; sur une communication par le r&#233;seau de donn&#233;es mobiles (et non l'Internet) entre un mobile connect&#233; et le serveur d'authentification (OP) auquel les applications ont d&#233;l&#233;gu&#233; l'identification des utilisateurs.&lt;/p&gt;
&lt;p&gt;NoPassConnect ne r&#233;pond jamais &#224; une demande et ne n&#233;cessite pas d'entr&#233;e au clavier (pas d'identifiant, de mot de passe ou de code) ce qui ferme la plupart des possibilit&#233; d'attaques et distingue la solution de ses concurrentes.&lt;/p&gt;
&lt;p&gt;Ces deux caract&#233;ristiques sont innovantes et constituent un apport original.&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;S&#233;curit&#233;&lt;/strong&gt; : Mieux qu'un mot de passe qui peut &#234;tre compromis, un smartphone est un objet tr&#232;s personnel, mieux gard&#233; par son propri&#233;taire que tout autre objet. Sa perte ou son vol sont rapidement constat&#233;s (alors qu'il n'y a g&#233;n&#233;ralement pas moyen de savoir si un mot de passe a &#233;t&#233; compromis), ce qui permet &#224; un administrateur d'invalider rapidement son enregistrement sur le serveur OAuthSD.&lt;/p&gt;
&lt;p&gt;De plus, les smartphones sont &#233;quip&#233;s de syst&#232;mes de reconnaissance biom&#233;trique de plus en plus performants. L'identification au moyen du smartphone permet donc de pr&#233;juger valablement de l'identit&#233; de l'utilisateur final.&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;Segmentation g&#233;ographique&lt;/strong&gt; : Par d&#233;faut, l'usage de NoPassConnect peut se faire &#224; partir de n'importe quelle connexion de donn&#233;es, qu'il s'agisse du r&#233;seau d'un op&#233;rateur ou d'un r&#233;seau WiFi. L'usage de NoPassConnect peut-&#234;tre limit&#233; au r&#233;seau WiFi de l'entreprise, jusqu'&#224; s&#233;lectionner par leur IP locale les bornes autoris&#233;es. Il serait &#233;galement possible d'autoriser une connexion domestique donn&#233;e pour permettre le travail &#224; domicile. Il est &#233;galement possible, sur un r&#233;seau d'entreprise, de d&#233;finir les postes de travail capables ou non de se connecter avec NoPassConnect .&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;Authentification&lt;/strong&gt; : NoPassConnect impose l'identifiant OpenID de l'utilisateur, qui est int&#233;gr&#233; au moment de la &lt;strong&gt;configuration initiale du mobile sous le contr&#244;le d'un administrateur&lt;/strong&gt;. Au cours de cette op&#233;ration, le mobile doit scanner un QR-Code pr&#233;sent&#233; par l'administrateur, ce qui permet d'identifier l'utilisateur avec rigueur ( &#224; l'oppos&#233; de l'enregistrement &#224; distance tel que pratiqu&#233; par WebAuthn par exemple ).&lt;/p&gt;
&lt;p&gt;Les administrateurs peuvent affecter en temps r&#233;el les autorisations ou d&#233;nier les acc&#232;s. Plusieurs dispositifs permettent de d&#233;tecter et de bloquer automatiquement des usages d&#233;tourn&#233;s, comme par exemple l'utilisation d'une autre station de travail que celles qui auront &#233;t&#233; autoris&#233;es, etc.&lt;/p&gt;
&lt;blockquote class=&#034;spip&#034;&gt;
&lt;p&gt; En r&#233;sum&#233;, les avantages d&#233;terminants pour la s&#233;curit&#233; des donn&#233;es d'une entreprise sont : l'utilisation de moyens priv&#233;s, l'identification de l'utilisateur assur&#233;e par un administrateur, la possibilit&#233; de limiter l'usage &#224; des lieux d&#233;termin&#233;s.&lt;/p&gt;
&lt;/blockquote&gt;&lt;h3 class=&#034;spip&#034;&gt;Entendu ...&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Bah, trop simple le QR-Code qui sert de mot de passe !&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Pas du tout : le QR-Code n'est qu'un identifiant de session pour les &#233;changes qui vont suivre entre le serveur et le smartphone. Il est &#233;ph&#233;m&#232;re et ne peut donc &#234;tre r&#233;utilis&#233;. L'authentification r&#233;sulte d'un &#233;change de donn&#233;es faisant appel &#224; des techniques cryptographiques fortes. Le navigateur n'intervient pas dans les &#233;changes qui se font directement entre le smartphone et le serveur OAuthSD.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ah oui, c'est un Time-based One-time Password (TOTP) comme Google Authenticator !&lt;/strong&gt;&lt;br class='autobr' /&gt;
Eh bien non :&lt;/p&gt;
&lt;p&gt;NoPassConnect est un dispositif priv&#233;, ne faisant pas appel &#224; des syst&#232;mes tiers, pour une meilleure s&#233;curit&#233; et une parfaite confidentialit&#233;.&lt;/p&gt;
&lt;p&gt;NoPassConnect impose l'identit&#233; de l'utilisateur de l'entreprise, configur&#233;e par un administrateur. Un TOTP ne fait que v&#233;rifier que l'utilisateur est bien celui qui s'est inscrit lui-m&#234;me sur le syst&#232;me. En somme, un TOTP prot&#232;ge l'utilisateur tandis que NoPassConnect prot&#232;ge l'entreprise propri&#233;taire du serveur OAuthSD.&lt;/p&gt;
&lt;p&gt;OAuthSD propose le TOTP Google Authenticator pour l'authentification &#224; deux facteurs : jugez de la diff&#233;rence par vous m&#234;me.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ah oui, c'est comme la confirmation par SMS !&lt;/strong&gt;&lt;br class='autobr' /&gt;
Eh bien non :&lt;/p&gt;
&lt;p&gt;Le 2FA par SMS n'est pas s&#233;curis&#233;, alors que NoPassConnect &#233;change des donn&#233;es crypt&#233;es sur un canal s&#233;curis&#233; avec SSL/TLS.&lt;/p&gt;
&lt;p&gt;De plus le code re&#231;u par SMS doit &#234;tre retourn&#233; par le m&#234;me canal (le navigateur), ce qui ouvre la porte &#224; de nombreuses techniques d'interception telles que le l'ing&#233;nierie sociale, l'interception de trafic, le key-login ; avec NoPassConnect le navigateur n'intervient pas dans ces &#233;changes, l'identification se fait entre le smartphone et le serveur OAuthSD.&lt;/p&gt;
&lt;p&gt;Et si c'est l'utilisateur final lui-m&#234;me qui a fourni son num&#233;ro de portable au moment de son inscription, on n'a absolument aucune information sur son identit&#233; r&#233;elle ! NoPassConnect impose la configuration du smartphone sous le contr&#244;le d'un administrateur.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;J'ai trouv&#233; : c'est comme WebAuthn !&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;C'est assez proche en apparence, mais tr&#232;s diff&#233;rent : NoPassConnect concoure &#224; l'ouverture et &#224; la fermeture d'une session OpenID Connect &#224; partir d'une application qui lui est ext&#233;rieure, tandis que WebAuthn se limite &#224; l'identification directe de son porteur.&lt;/p&gt;
&lt;p&gt;C'est &#233;galement tr&#232;s diff&#233;rent en termes de s&#233;curit&#233; :&lt;/p&gt;
&lt;p&gt;WebAuthn pr&#233;sente un d&#233;savantage important pour la s&#233;curit&#233; d'une entreprise : comme la plupart des syst&#232;me de login, WebAuthn est un syst&#232;me public dans le sens o&#249; c'est l'utilisateur qui enregistre de fa&#231;on anonyme son mobile, rien ne permet de l'identifier. Permettre &#224; un utilisateur de s'enregistrer sans qu'il y ait une &#233;tape d'identification physique, c'est exactement comme lui permettre de fabriquer lui-m&#234;me sa carte d'identit&#233;, et encore : en rempla&#231;ant son nom par un pseudo.&lt;/p&gt;
&lt;p&gt;A l'inverse, l'enregistrement d'un mobile NoPassConnect est fait &#224; l'initiative et sous le contr&#244;le d'un administrateur de l'entreprise, en pr&#233;sentiel, ce qui permet d'enregistrer dans le serveur OpenID Connect l'identit&#233; r&#233;elle de l'utilisateur.&lt;/p&gt;
&lt;p&gt;Enfin, r&#233;p&#233;tons-le : avec NoPassConnect, le navigateur n'intervient pas dans le processus d'identification qui se fait directement entre le smartphone et le serveur OAuthSD.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ah oui, c'est un peu comme un lecteur d'ID card ...&lt;/strong&gt; &lt;br class='autobr' /&gt;
Presque ! En mieux :&lt;/p&gt;
&lt;p&gt;C'est plus &#233;conomique, plus facile &#224; d&#233;ployer, moins vuln&#233;rable.&lt;/p&gt;
&lt;p&gt;De plus, NoPassConnect n'&#233;tant pas li&#233; physiquement &#224; un poste de travail, il peut &#234;tre d&#233;ploy&#233; hors du p&#233;rim&#232;tre de l'entreprise. Cela n'interdit pas de limiter l'utilisation de NoPassConnect &#224; un ou plusieurs postes de travail, c'est l'un des avantages de scanner le QR-Code affich&#233; par le poste de travail !&lt;/p&gt;
&lt;p&gt;Enfin, si un utilisateur peut oublier sa carte dans le lecteur en quittant le bureau, il est probable qu'il n'oubliera pas de prendre son smartphone avec lui...&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;&lt;a href=&#034;https://i-tego.com&#034; class='spip_out' rel='external'&gt;i-Tego&lt;/a&gt; est une nouvelle soci&#233;t&#233; cr&#233;&#233;e en juillet 2021 apr&#232;s la fermeture de DnC en d&#233;cembre 2020. B.D. a commenc&#233; le d&#233;veloppement de SmartConnect dans l'intervalle en utilisant provisoirement ce site web en attendant qu'i-Tego poss&#232;de son propre site documentaire&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;Actuellement sur syst&#232;me Android, IOS en cours de d&#233;veloppement.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;
		&lt;div class='rss_ps'&gt;&lt;h3 class=&#034;spip&#034;&gt;[DR] Composants logiciels de OAuthSD / SmartConnect&lt;/h3&gt;
&lt;p&gt;&lt;span class='spip_document_102 spip_documents spip_documents_center'&gt;
&lt;img src='https://static.oa.dnc.global/IMG/png/smartconnect_composants_crobard.png' width=&#034;928&#034; height=&#034;619&#034; alt=&#034;Composants de SmartConnect&#034; title=&#034;Composants de SmartConnect&#034; /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;SmartConnect est une &lt;strong&gt;application de mobile (4) &lt;/strong&gt; ( Android ou iOS) qui n&#233;cessite un &lt;strong&gt;serveur OAuthSD (1)&lt;/strong&gt;. Pour son fonctionnement, l'application SmartConnect est en relation avec un &lt;strong&gt;module d'authentification (2)&lt;/strong&gt; (Pluggable Authentication Module, PAM) int&#233;gr&#233; &#224; OAuthSD, mais n'est pas connect&#233; aux &lt;strong&gt;applications compatibles OpenID Connect (3)&lt;/strong&gt;. &lt;br class='autobr' /&gt;
SmartConnect se situe au sein des distributions OAuthSD comme repr&#233;sent&#233; dans le le tableau suivant :&lt;/p&gt;
&lt;p&gt;Dans ce tableau, les composants sur fond bleu-clair sont d&#233;velopp&#233;s par DnC :&lt;br class='autobr' /&gt;
&lt;span class='spip_document_101 spip_documents spip_documents_center'&gt;
&lt;img src='https://static.oa.dnc.global/IMG/png/smartconnect_composants.png' width=&#034;1075&#034; height=&#034;476&#034; alt=&#034;&#034; /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;OAuthSD comprend trois groupes de composants :
&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 &lt;strong&gt;Superviseur&lt;/strong&gt;, est une application Web permettant aux administrateurs d'enregistrer les applications clientes d'OAuthSD, de contr&#244;ler l'inscription des utilisateurs et de leurs droits sur les applications et enfin de suivre le fonctionnement des authentifications. &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 Daemon (le serveur OIDC &#224; proprement parler) qui est construit sur des modules interm&#233;diaires (&lt;strong&gt;middleware&lt;/strong&gt;) d&#233;velopp&#233;s par DnC fournissant la version haut-niveau des contr&#244;leurs Authorize, Token etc., et finalement sur des biblioth&#232;ques open-source pour le code de bas-niveau.
&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; Des &lt;strong&gt;modules d'authentification&lt;/strong&gt; (Pluggable Authentification Modules (PAM)) int&#233;gr&#233;s &#224; OAuthSD assurant l'identification primaire et secondaire pour l'identification &#224; deux facteurs.&lt;/p&gt;
&lt;p&gt;Le &lt;strong&gt;module NoPassConnect&lt;/strong&gt; (ex IdentMaster, SmartConnect) assure la communication entre le mobile &#233;quip&#233; de l'application NoPassConnectet le serveur. Il comporte &#233;galement une application qui permet aux administrateurs de configurer l'instance NoPassConnectd'un mobile donn&#233; et de l'enregistrer sur le serveur.&lt;/p&gt;
&lt;p&gt;Pour pouvoir d&#233;l&#233;guer l'authentification au serveur OAuthSD, les applications doivent &#234;tre dot&#233;s d'un &lt;strong&gt;module OpenID Connect&lt;/strong&gt;. De plus en plus d'applications professionnelles int&#232;grent un tel module. Les applications qui ne sont pas directement compatibles offrent souvent un syst&#232;me de modules qui permet d'ajouter la fonctionnalit&#233; OIDC. Il en est ainsi de WordPress et de phpBB.&lt;/p&gt;
&lt;p&gt;Les applications d'Identit&#233; sont des logiciels d&#233;di&#233;s install&#233;s sur le mobile au-dessus du syst&#232;me d'exploitation Android, iOS, BlackBerry, etc. Ce sont donc des applications natives, &#224; l'inverse par exemple de l'authentification par SMS qui s'appuie sur une application existante ou d'autres proc&#233;d&#233;s s'appuyant sur le navigateur. L'&lt;strong&gt;application NoPassConnect&lt;/strong&gt; est une application native, d&#233;velopp&#233;e en Java, qui peut &#234;tre install&#233;e par l'utilisateur.&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;[CONF] Particularit&#233;s du proc&#233;d&#233; en faveur de la s&#233;curit&#233;&lt;/h3&gt;
&lt;p&gt;[CONF] Compar&#233; au principe du TOTP ou de la v&#233;rification par SMS (un code d&#233;pendant de l'utilisateur et limit&#233; dans le temps), SmartConnect est beaucoup plus s&#233;curis&#233; : le QR-Code est &#224; usage unique, et la r&#233;ponse de l'application SmartConnect int&#232;gre l'identifiant OpenID de l'utilisateur et l'ID du mobile, mix&#233; avec un alea qui rend la r&#233;ponse unique, le tout transmis au moyen d'un jeton crypt&#233;.&lt;/p&gt;
&lt;p&gt;[CONF] Notons &#233;galement que, contrairement &#224; un syst&#232;me de confirmation TFA, l'utilisateur n'est pas interrog&#233; &#224; l'initiative d'un syst&#232;me dont il ignore le lien r&#233;el avec l'application l&#233;gitime (celle qu'il veut lancer), mais c'est lui qui prend l'initiative de poursuivre (en scannant le QR-Code) le dialogue d'authentification qu'il a initialis&#233; depuis l'application. L'utilisateur est actif au lieu d'&#234;tre passif. Le mobile ne traite pas de connexion entrante, mais utilise le canal de retour de la connexion qu'il a lui-m&#234;me &#233;tablie, le mettant ainsi &#224; l'abri d'attaques web.&lt;/p&gt;
&lt;p&gt;[CONF] Enfin, le terminal sur lequel s'affiche le QR-Code se trouve li&#233; dans le processus d'authentification, ce qui permet au serveur OAuthSD de s'assurer que l'utilisateur est bien devant le terminal. Ainsi, les authentifications ne peuvent &#234;tre initi&#233;es que depuis des terminaux r&#233;pertori&#233;s.&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Exp&#233;rimental : t&#233;l&#233;chargez et installez l'application sur votre mobile Android&lt;/h3&gt;
&lt;p&gt;Sur votre mobile Android :&lt;/p&gt;
&lt;p&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; T&#233;l&#233;chargez l'APK : &lt;br class='autobr' /&gt;
&lt;a href=&#034;https://i-tego.com/store/app-release.apk&#034; class='spip_out' rel='external'&gt;i-tego.com/store/app-release.apk&lt;/a&gt;
&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; Activez les sources inconnues :&lt;br class='autobr' /&gt;
Allez dans les param&#232;tres, puis S&#233;curit&#233;
&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; Recherchez l'APK sur votre t&#233;l&#233;phone (&#224; l'aide d'un explorateur de fichiers par exemple)
&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; Lancez le fichier APK et suivez les instructions
&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; D&#233;sactivez les sources inconnues&lt;/p&gt;&lt;/div&gt;
		</content:encoded>


		
		<enclosure url="https://static.oa.dnc.global/IMG/m4v/smartconnect1.m4v" length="2578001" type="video/x-m4v" />
		

	</item>
<item xml:lang="fr">
		<title>Identification OpenID Connect avec ID Card : Aramis</title>
		<link>https://static.oa.dnc.global/-Identifier-l-utilisateur-final-.html#identificationopenidconnectavecidcardaramis</link>
		<guid isPermaLink="true">https://static.oa.dnc.global/-Identifier-l-utilisateur-final-.html#identificationopenidconnectavecidcardaramis</guid>
		<dc:date>2020-11-10T07:03:00Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>DnC</dc:creator>



		<description>
&lt;p&gt;Les grandes organisations poss&#232;dent g&#233;n&#233;ralement leur propre syst&#232;me d'identification attach&#233; &#224; chaque poste de travail, le plus commun &#233;tant le lecteur d'ID card. &lt;br class='autobr' /&gt;
OAuthSD a permis par exemple d'int&#233;grer le syst&#232;me de lecteur de carte Aramis. Ainsi, un utilisateur identifi&#233; par ce moyen l'est &#233;galement par les applications Web clientes du serveur OAuthSD, auxquelles le jeton d'identit&#233; JWT transmettra le profil Aramis de l'utilisateur. &lt;br class='autobr' /&gt;
S'il fallait r&#233;sumer les avantages de la solution OAuthSD + ARAMIS, le (...)&lt;/p&gt;


-
&lt;a href="https://static.oa.dnc.global/-Identifier-l-utilisateur-final-.html" rel="directory"&gt;Identifier l'utilisateur final&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/L150xH148/arton179-7e03d.png?1733980291' width='150' height='148' /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;Les grandes organisations poss&#232;dent g&#233;n&#233;ralement leur propre syst&#232;me d'identification attach&#233; &#224; chaque poste de travail, le plus commun &#233;tant le lecteur d'ID card.&lt;/p&gt;
&lt;p&gt;OAuthSD a permis par exemple d'int&#233;grer le syst&#232;me de lecteur de carte Aramis. Ainsi, un utilisateur identifi&#233; par ce moyen l'est &#233;galement par les applications Web clientes du serveur OAuthSD, auxquelles le jeton d'identit&#233; JWT transmettra le profil Aramis de l'utilisateur.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;S'il fallait r&#233;sumer les avantages de la solution OAuthSD + ARAMIS, le mieux serait :&lt;/p&gt;
&lt;blockquote class=&#034;spip&#034;&gt;
&lt;p&gt;La conjonction d'OAuthSD et d'ARAMIS permet d'assurer l'authentification des utilisateurs par les applications ext&#233;rieures, sans proc&#233;dure de login/mot de passe, tout en sanctuarisant les donn&#233;es sensibles des utilisateur sur le r&#233;seau interne de l'entit&#233;, sans rien changer &#224; ces donn&#233;es, les comptes et les droits restant g&#233;r&#233;s exclusivement par ARAMIS.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Les avantages vont donc bien au-del&#224; d'un simple syst&#232;me de connexion unique (Single Sign On, SSO).&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;La gestion des utilisateurs est effectu&#233;e exclusivement par Aramis&lt;/h3&gt;
&lt;p&gt;Dans cette configuration, c'est le syst&#232;me Aramis qui g&#232;re les donn&#233;es relatives aux utilisateurs et fournit l'User ID : Le serveur OAuthSD fonctionne avec la table 'users' vide !&lt;/p&gt;
&lt;p&gt;L'identifiant de l'utilisateur final est fourni par le syst&#232;me Aramis. C'est cet identifiant qui figurera dans la d&#233;claration 'sub' du jeton d'identit&#233; JWT.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;OAuthSD permet donc d'int&#233;grer un syst&#232;me d'identification existant sans n&#233;cessit&#233; d'une double maintenance ou d'une synchronisation des tables des utilisateurs.&lt;/strong&gt;&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Incorporation des donn&#233;es Aramis dans le jeton d'identit&#233; JWT&lt;/h3&gt;
&lt;p&gt;OAuthSD permet d'incorporer dans le jeton d'identit&#233; des donn&#233;es suppl&#233;mentaires issues d'Aramis. Le m&#233;canisme g&#233;n&#233;ral est d&#233;crit ici : &lt;a href='https://static.oa.dnc.global/-JSON-Web-Token-JWT-JWS-.html#incorporeraujetonjwtdesdeclarationssupplementaires' class='spip_in'&gt;Incorporer au jeton JWT des d&#233;clarations suppl&#233;mentaires&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Un syst&#232;me d'identification xxx propre &#224; une application OAuthSD d&#233;di&#233;e est int&#233;gr&#233; au moyen d'un script /oidc/identification/xxx/login.php particulier. Ce script place les donn&#233;es de l'utilisateur issues du syst&#232;me dans une variable de session $_SESSION['user_claims'], sous forme crypt&#233;e.&lt;/p&gt;
&lt;p&gt;Les donn&#233;es seront automatiquement incorpor&#233;es au jeton d'identit&#233; JWT sous la forme d'une d&#233;claration suppl&#233;mentaire pour chaque membre de premier niveau de l'array 'user_claims'.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Il est ainsi possible de passer de fa&#231;on s&#251;re des donn&#233;es de profil de l'utilisateur final authentifi&#233; qui permettront aux applications destinataires du jeton JWT de g&#233;rer l'acc&#232;s en fonction des droits de l'utilisateur qui auront &#233;t&#233; d&#233;finis au niveau d'Aramis.&lt;/strong&gt;&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Userinfo&lt;/h3&gt;
&lt;p&gt;La table users &#233;tant vide, le contr&#244;leur UserInfo ne peut retourner les donn&#233;es de l'utilisateur sans modification du code. Si n&#233;cessaire, un nouveau contr&#244;leur UserInfo devra &#234;tre cr&#233;&#233; pour retourner les donn&#233;es extraites de la carte Aramis. Notons cependant que la fonctionnalit&#233; Userinfo ne faisant pas partie du &#034;standard&#034; OpenID Connect, le serveur OAuthSD est donc conforme en l'&#233;tat.&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Le d&#233;veloppement r&#233;alis&#233; pour la CRAMIF&lt;/h3&gt;
&lt;p&gt;L'objectif de la CRAM Ile-de-France (CRAMIF) &#233;tait de s&#233;curiser la connexion des utilisateurs de son application de signature &#233;lectronique, le SAAS Web &#034;Lex Persona&#034;, &#224; partir des postes de travail internes aussi bien que depuis le Web. Pour cela, nous avons install&#233; notre serveur OpenID Connect &#034;OAuthSD&#034; sur l'infrastructure informatique de la CRAM Ile-de-France (CRAMIF).&lt;/p&gt;
&lt;p&gt;Le syst&#232;me d'identification par carte &#034;Aramis&#034; a &#233;t&#233; int&#233;gr&#233; au serveur OAuthSD : les utilisateurs sont g&#233;r&#233;s par le syst&#232;me existant, et les autorisations pr&#233;-&#233;tablies des diff&#233;rents acteurs sont automatiquement int&#233;gr&#233;es au jeton d'identit&#233; et transmises &#224; Lex Persona au moyen de celui-ci.&lt;br class='autobr' /&gt;
Notons que cette technique dispense totalement l'utilisateur de tout dialogue de connexion, ce qui procure un confort et un gain de temps appr&#233;ciables.&lt;/p&gt;
&lt;div class='spip_document_105 spip_documents spip_documents_left'
style=' float:left; '&gt;
&lt;object	data='IMG/svg/logo-assurance-maladie.svg' type='image/svg+xml' width='150' height='150' id_article='179' class='' &gt; &lt;param name='src' value='IMG/svg/logo-assurance-maladie.svg' /&gt; &lt;/object&gt;&lt;/div&gt; &lt;br/&gt;&lt;br/&gt;&lt;br/&gt; &lt;div class=&#034;encart&#034;&gt; &lt;b&gt;P.V. Responsable du D&#233;partements ETUDES INFORMATIQUES&lt;/b&gt; : &#034;Vous avez d&#233;velopp&#233; un produit fantastique qui simplifie la vie de nombreux utilisateurs et qui, malgr&#233; tous vos efforts, reste m&#233;connu. Je sais que nous pourrons compter sur vous en cas de besoin et je vous en remercie.&#034; &lt;/div&gt; &lt;div style=&#034;clear: both;&#034;&gt;&lt;/div&gt; &lt;h3 class=&#034;spip&#034;&gt;OAuthSD peut int&#233;grer tout pourvoyeur d'identit&#233;&lt;/h3&gt;
&lt;p&gt;La structure modulaire d'OAuthSD permet d'int&#233;grer tout pourvoyeur d'identit&#233;, Aramis n'&#233;tant qu'un exemple.&lt;/p&gt;
&lt;p&gt;Il est &#233;galement possible d'int&#233;grer plusieurs syst&#232;mes simultan&#233;ment.&lt;/p&gt;
&lt;p&gt;En particulier, remarquant qu'une identification par carte identifie la carte, pas le porteur, il est opportun de demander une &lt;a href='https://static.oa.dnc.global/-Identifier-l-utilisateur-final-.html#validationen2etapestwofactorauthentication2fa' class='spip_in'&gt;deuxi&#232;me authentification (TFA)&lt;/a&gt;, cette derni&#232;re requ&#233;rant un &#233;l&#233;ment dans la possession de l'utilisateur &#224; authentifier.&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Validation en 2 &#233;tapes (Two Factor Authentication, 2FA) </title>
		<link>https://static.oa.dnc.global/-Identifier-l-utilisateur-final-.html#validationen2etapestwofactorauthentication2fa</link>
		<guid isPermaLink="true">https://static.oa.dnc.global/-Identifier-l-utilisateur-final-.html#validationen2etapestwofactorauthentication2fa</guid>
		<dc:date>2020-06-19T09:10:00Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>DnC</dc:creator>



		<description>
&lt;p&gt;Un r&#232;glement de l'UE ( en vigueur depuis septembre 2019 ) exige une authentification de paiement &#224; deux facteurs, appel&#233;e &#171; Authentification client forte &#187; (SCA). &lt;br class='autobr' /&gt;
Le besoin de la validation &#224; 2 &#233;tapes se fait &#233;galement sentir pour la connexion des utilisateurs aux applications sensibles. Le principe de la validation &#224; 2 &#233;tapes (Two Factor Authentication, 2FA) est bien connu depuis plusieurs ann&#233;es et mis en oeuvre de diff&#233;rentes mani&#232;res, la plus courante &#233;tant le code envoy&#233; par SMS. &lt;br class='autobr' /&gt;
OAuthSD (...)&lt;/p&gt;


-
&lt;a href="https://static.oa.dnc.global/-Identifier-l-utilisateur-final-.html" rel="directory"&gt;Identifier l'utilisateur final&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/arton116-103af.png?1733980291' width='150' height='150' /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;Un r&#232;glement de l'UE ( en vigueur depuis septembre 2019 ) exige une authentification de paiement &#224; deux facteurs, appel&#233;e &#171; Authentification client forte &#187; (SCA).&lt;/p&gt;
&lt;p&gt;Le besoin de la validation &#224; 2 &#233;tapes se fait &#233;galement sentir pour la connexion des utilisateurs aux applications sensibles. Le principe de la validation &#224; 2 &#233;tapes (Two Factor Authentication, 2FA) est bien connu depuis plusieurs ann&#233;es et mis en oeuvre de diff&#233;rentes mani&#232;res, la plus courante &#233;tant le code envoy&#233; par SMS.&lt;/p&gt;
&lt;p&gt;OAuthSD impl&#233;mente l'authentification &#224; deux facteurs par SMS ou avec Google Authenticator.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;&lt;strong&gt;Qu'est-ce que 2FA ?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;La s&#233;curit&#233; apport&#233;e par un simple mot de passe n'est pas toujours suffisante.&lt;/p&gt;
&lt;p&gt;L'authentification &#224; deux facteurs, &#233;galement connue sous le nom de 2FA, v&#233;rification en deux &#233;tapes ou TFA, est une couche de s&#233;curit&#233; suppl&#233;mentaire appel&#233;e &#171; authentification &#224; plusieurs facteurs &#187;, qui requiert non seulement un mot de passe et un nom d'utilisateur, mais aussi &lt;strong&gt;quelque chose que cet utilisateur poss&#232;de, qui est avec lui et que personne d'autre ne poss&#232;de ou ne connait&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Apr&#232;s le login, donnez une deuxi&#232;me preuve de votre identit&#233;&lt;/h3&gt;
&lt;p&gt;Le processus commence comme d'habitude, l'utilisateur final donnant son identifiant et son mot de passe :&lt;br class='autobr' /&gt;
&lt;span class='spip_document_65 spip_documents spip_documents_center'&gt;
&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L467xH622/login_std_fr-73dc2.png?1733821244' width='467' height='622' alt=&#034;&#034; /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Il lui est demand&#233; de fournir une deuxi&#232;me preuve d'identit&#233; : OAuthSD propose la m&#233;thode classique par SMS ou l'identification avec Google Authenticator.&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;2FA par SMS&lt;/h3&gt;
&lt;p&gt;Si cette premi&#232;re &#233;tape se termine avec succ&#232;s, OAuthSD encha&#238;ne sur une demande de code par SMS :&lt;/p&gt;
&lt;p&gt;&lt;span class='spip_document_76 spip_documents spip_documents_center'&gt;
&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L427xH252/2fa_sms_demande_code-da444.png?1733821244' width='427' height='252' alt=&#034;&#034; /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Le SMS est envoy&#233; au num&#233;ro de smartphone enregistr&#233; avec le profil de l'utilisateur&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href='#nb2-1' class='spip_note' rel='appendix' title='La m&#233;thode d'identification par SMS &#233;chouera donc si aucun num&#233;ro n'a &#233;t&#233; (...)' id='nh2-1'&gt;1&lt;/a&gt;]&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;Apr&#232;s confirmation, le consentement est demand&#233; si n&#233;cessaire, comme d'habitude :&lt;/p&gt;
&lt;p&gt;&lt;span class='spip_document_67 spip_documents spip_documents_center'&gt;
&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L470xH533/consent_std_fr-b8e2d.png?1733821244' width='470' height='533' alt=&#034;&#034; /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;2FA avec Google Authenticator&lt;/h3&gt;
&lt;p&gt;Google Authenticator est un syst&#232;me de 2FA qui g&#233;n&#232;re un TOTP.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Qu'est-ce que TOTP ?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;TOTP est une forme abr&#233;g&#233;e de &#034;Time-based One-time Password &#034; ou &#034;mot de passe &#224; utilisation unique &#224; dur&#233;e d&#233;termin&#233;e&#034;. Il s'agit d'un mot de passe qui ne peut &#234;tre utilis&#233; qu'une seule fois et qui ne peut &#234;tre utilis&#233; que dans une plage de temps d&#233;finie. G&#233;n&#233;ralement, les g&#233;n&#233;rateurs TOTP g&#233;n&#232;rent de nouveaux mots de passe toutes les quelques dizaines de secondes tel que d&#233;fini.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Apr&#232;s le login, donnez une deuxi&#232;me preuve de votre identit&#233; avec Google Authenticator &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Le processus commence comme d'habitude, l'utilisateur final donnant son identifiant et son mot de passe comme pr&#233;c&#233;demment.&lt;/p&gt;
&lt;p&gt;Il lui est demand&#233; de fournir une deuxi&#232;me preuve d'identit&#233; : Google Authenticator qu'il ou elle a install&#233; sur son smartphone lui donnera le code n&#233;cessaire.&lt;/p&gt;
&lt;p&gt;Cela n&#233;cessite d'enregistrer OAuthSD sur Google Authenticator en tant qu'application&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href='#nb2-2' class='spip_note' rel='appendix' title='Notons que c'est bien OAuthSD qui est enregistr&#233; sur Google Authenticator, et (...)' id='nh2-2'&gt;2&lt;/a&gt;]&lt;/span&gt;. C'est pour cela que le QRCode est utilis&#233;. Voir de nombreux tutoriels sur le Web. C'est une action unique pour la vie du smartphone : une fois que c'est fait, GA affichera un code toutes les 30 secondes : rien &#224; retenir !&lt;/p&gt;
&lt;p&gt;&lt;span class='spip_document_66 spip_documents spip_documents_center'&gt;
&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L467xH663/login_2fa_ga_fr-86758.png?1733821244' width='467' height='663' alt=&#034;&#034; /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Apr&#232;s confirmation, le consentement est demand&#233; si n&#233;cessaire, comme d'habitude.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pourquoi Google Authenticator ?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Qu'en est-il du suivi (tracking) ? Les applications d&#233;l&#232;guent l'identification de l'utilisateur &#224; OAuthSD. Cela signifie que Google voit le serveur OAuthSD et non les applications. Google sait qu'un utilisateur est li&#233; &#224; OAuthSD, mais ne voit pas la relation avec l'application : il n'y a donc pas de suivi de l'activit&#233; de l'internaute sur l'application (tracking) ... &#224; condition qu'il n'y ait pas de fuite de suivi ailleurs dans cette application !&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;TFA avec NoPassConnect&lt;/h3&gt;
&lt;p&gt;Nous d&#233;veloppons &lt;a href='https://static.oa.dnc.global/-Identifier-l-utilisateur-final-.html#lafindesmotsdepassenopassconnect' class='spip_in'&gt;NoPassConnect&lt;/a&gt; (pr&#233;c&#233;demment SmartConnect), une application de mobile sans mot de passe (passwordless) qui peut &#234;tre utilis&#233;e comme premi&#232;re m&#233;thode d'authentification aussi bien qu'en deuxi&#232;me.&lt;/p&gt;
&lt;p&gt;Avec l'application NoPassConnect install&#233;e sur votre mobile, il vous suffit de scanner le QR-Code pr&#233;sent&#233; par l'application pour ouvrir votre session OpenID Connect :&lt;/p&gt;
&lt;p&gt;&lt;span class='spip_document_100 spip_documents spip_documents_center'&gt;
&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L398xH497/smartconnect_login-f0cb6.png?1733820003' width='398' height='497' alt=&#034;Login SmartConnect - NopassConnect&#034; title=&#034;Login SmartConnect - NopassConnect&#034; /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Configurer TFA sur OAuthSD&lt;/h3&gt;
&lt;p&gt;Une demande de deuxi&#232;me validation est pr&#233;sent&#233;e &#224; l'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; Si la constante de configuration LOGIN_WITH_TFA est d&#233;finie sur true, le formulaire 2FA sera toujours pr&#233;sent&#233; &#224; l'utilisateur final apr&#232;s le formulaire de connexion.
&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; sinon, le scope r&#233;serv&#233; &#034;tfa&#034; doit &#234;tre pr&#233;sent dans la demande d'autorisation ; l'application devra donc avoir &#233;t&#233; enregistr&#233;e sur le serveur avec le scope 'tfa'.
&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 constante de configuration TFA_PROVIDER permet de d&#233;finir le deuxi&#232;me mode d'identification ('gangsta', 'checkbysms', 'smartconnect' ...).&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Et ensuite ?&lt;/h3&gt;
&lt;p&gt;Dans l'&#233;tat actuel du d&#233;veloppement, il existe trois m&#233;thodes disponibles pour 2FA : TFA par SMS (la solution classique !), Google Authenticator et &lt;a href='https://static.oa.dnc.global/-Identifier-l-utilisateur-final-.html#lafindesmotsdepassenopassconnect' class='spip_in'&gt;DnC NoPassConnect&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;D'autres fournisseurs d'identit&#233;s suivront bient&#244;t, y compris le n&#244;tre (= votre serveur priv&#233;) pour une s&#233;curit&#233; de niveau sup&#233;rieur.&lt;/p&gt;
&lt;p&gt;Nous pouvons d&#233;velopper tout syst&#232;me priv&#233; adapt&#233; aux besoins particuliers de nos clients, comme nous l'avons fait avec l&#034;'&lt;a href='https://static.oa.dnc.global/-Identifier-l-utilisateur-final-.html#identificationopenidconnectavecidcardaramis' class='spip_in'&gt;Identification OpenID Connect avec ID Card : Aramis&lt;/a&gt; .&lt;/p&gt;&lt;/div&gt;
		&lt;hr /&gt;
		&lt;div class='rss_notes'&gt;&lt;div id='nb2-1'&gt;
&lt;p&gt;&lt;span class=&#034;spip_note_ref&#034;&gt;[&lt;a href='#nh2-1' class='spip_note' title='Notes 2-1' rev='appendix'&gt;1&lt;/a&gt;] &lt;/span&gt;La m&#233;thode d'identification par SMS &#233;chouera donc si aucun num&#233;ro n'a &#233;t&#233; enregistr&#233; pour l'utilisateur qui tente de s'identifier.&lt;/p&gt;
&lt;/div&gt;&lt;div id='nb2-2'&gt;
&lt;p&gt;&lt;span class=&#034;spip_note_ref&#034;&gt;[&lt;a href='#nh2-2' class='spip_note' title='Notes 2-2' rev='appendix'&gt;2&lt;/a&gt;] &lt;/span&gt;Notons que c'est bien OAuthSD qui est enregistr&#233; sur Google Authenticator, et non les applications clientes. On conserve donc tout l'avantage de la d&#233;l&#233;gation d'authentification pour interdire le tracking de la navigation des utilisateurs finaux.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Utiliser SPIP comme pourvoyeur d'identit&#233; d'OIDC</title>
		<link>https://static.oa.dnc.global/-Identifier-l-utilisateur-final-.html#utiliserspipcommepourvoyeurdidentitedoidc</link>
		<guid isPermaLink="true">https://static.oa.dnc.global/-Identifier-l-utilisateur-final-.html#utiliserspipcommepourvoyeurdidentitedoidc</guid>
		<dc:date>2020-05-01T07:42:36Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>DnC</dc:creator>



		<description>
&lt;p&gt;De nombreuses applications avanc&#233;es peuvent &#234;tre construites en int&#233;grant un serveur OIDC dans un gestionnaire de contenu (Content Management System, CMS) ou un framework. Soit que le CMS serve d'h&#244;te pour d&#233;velopper l'environnement de gestion du serveur OIDC, soit que l'authentification serve, par exemple, &#224; construire un syst&#232;me de distribution d'applications en tant que service (Software as Service, SaaS). Chez DnC, nous utilisons le CMS SPIP pour ces deux approches, et d'autres applications (...)&lt;/p&gt;


-
&lt;a href="https://static.oa.dnc.global/-Identifier-l-utilisateur-final-.html" rel="directory"&gt;Identifier l'utilisateur final&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/L150xH111/arton198-7394f.jpg?1733980292' width='150' height='111' /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;De nombreuses applications avanc&#233;es peuvent &#234;tre construites en int&#233;grant un serveur OIDC dans un gestionnaire de contenu (Content Management System, CMS) ou un framework. Soit que le CMS serve d'h&#244;te pour d&#233;velopper l'environnement de gestion du serveur OIDC, soit que l'authentification serve, par exemple, &#224; construire un &lt;a href='https://static.oa.dnc.global/-Decouvrir-.html#saasetoidcunmariagereussigraceaoauthsd' class='spip_in'&gt;syst&#232;me de distribution d'applications en tant que service (Software as Service, SaaS)&lt;/a&gt;.&lt;br class='autobr' /&gt;
Chez DnC, nous utilisons le &lt;a href=&#034;https://www.spip.net/fr_rubrique91.html&#034; class='spip_out' rel='external'&gt;CMS SPIP&lt;/a&gt;&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href='#nb3-1' class='spip_note' rel='appendix' title='SPIP est dans le Socle interminist&#233;riel de logiciels libres.' id='nh3-1'&gt;1&lt;/a&gt;]&lt;/span&gt; pour ces deux approches, et d'autres applications encore&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href='#nb3-2' class='spip_note' rel='appendix' title='Cet article est le premier d'une s&#233;rie &#224; venir qui d&#233;veloppera l'int&#233;gration (...)' id='nh3-2'&gt;2&lt;/a&gt;]&lt;/span&gt;.&lt;br class='autobr' /&gt;
Cependant, il existe une difficult&#233; : le CMS poss&#232;de d&#233;j&#224; son propre syst&#232;me d'identification des utilisateurs (les 'auteurs'), comment &#233;viter de doublonner avec les utilisateurs finaux enregistr&#233;s sur le serveur OIDC ?&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;h3 class=&#034;spip&#034;&gt;Synchroniser les tables 'auteurs' et 'users' ou se passer de la table 'users' ?&lt;/h3&gt;
&lt;p&gt;En l'&#233;tat nous avons deux tables : 'users' pour OIDC et 'auteurs' pour SPIP. Le probl&#232;me &#224; r&#233;soudre est donc d'unifier les donn&#233;es. &lt;br class='autobr' /&gt;
Deux solutions 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; la mauvaise : assurer la synchronisation de la table 'users' &#224; partir de donn&#233;es de la table 'auteurs' de SPIP : tout enregistrement de donn&#233;es sur la table 'auteurs' est r&#233;percut&#233; sur la table 'users', et vice-et-versa.
&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 bonne : utiliser uniquement les donn&#233;es de SPIP.&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Utiliser SPIP comme pourvoyeur d'identit&#233;&lt;/h3&gt;
&lt;p&gt;Dans cette deuxi&#232;me solution, les donn&#233;es de SPIP sont utilis&#233;es pour r&#233;aliser la fonction d'identification du serveur OIDC. Cela n&#233;cessite donc un nouveau &lt;strong&gt;module d'identification 'spip'&lt;/strong&gt; comprenant des scripts login.php et login_return.php qui utiliseront les donn&#233;es de la table auteurs de SPIP.&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Et le serpent se mord la queue...&lt;/h3&gt;
&lt;p&gt;Une fois le serveur OAuthSD int&#233;gr&#233; &#224; SPIP comme indiqu&#233;, il peut non seulement &#234;tre utilis&#233; pour l'authentification des utilisateurs d'applications tierces ou l'acc&#232;s aux ressources prot&#233;g&#233;es (ce pour quoi est fait un serveur OIDC), mais &#233;galement pour authentifier les utilisateurs (auteurs) de SPIP en se substituant au module d'authentification standard de ce CMS.&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;SPIP est dans le &lt;a href=&#034;https://sill.etalab.gouv.fr/software&#034; class='spip_out' rel='external'&gt;Socle interminist&#233;riel de logiciels libres&lt;/a&gt;.&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;Cet article est le premier d'une s&#233;rie &#224; venir qui d&#233;veloppera l'int&#233;gration d'un serveur OIDC dans SPIP et les usages qui peuvent en &#234;tre faits.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>acr_values (Requested Authentication Context Class Reference)</title>
		<link>https://static.oa.dnc.global/-Identifier-l-utilisateur-final-.html#acr_valuesrequestedauthenticationcontextclassreference</link>
		<guid isPermaLink="true">https://static.oa.dnc.global/-Identifier-l-utilisateur-final-.html#acr_valuesrequestedauthenticationcontextclassreference</guid>
		<dc:date>2020-01-05T11:25:29Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>DnC</dc:creator>



		<description>
&lt;p&gt;OAuthSD met en oeuvre acr_values et r&#233;soud un probl&#232;me de s&#233;curit&#233; li&#233; &#224; la d&#233;finition de la m&#233;thode d'identification &#233;ventuellement impos&#233;e par un client. &lt;br class='autobr' /&gt;
Traduction d'extraits de OpenID Connect Core 1.0. Dans la section '2. ID Token' : acr OPTIONNEL. R&#233;f&#233;rence de classe de contexte d'authentification. Cha&#238;ne sp&#233;cifiant une valeur de r&#233;f&#233;rence de classe de contexte d'authentification qui identifie la classe de contexte d'authentification satisfaite par l'authentification. La valeur &#034;0&#034; indique que (...)&lt;/p&gt;


-
&lt;a href="https://static.oa.dnc.global/-Identifier-l-utilisateur-final-.html" rel="directory"&gt;Identifier l'utilisateur final&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;OAuthSD met en oeuvre acr_values et r&#233;soud un probl&#232;me de s&#233;curit&#233; li&#233; &#224; la d&#233;finition de la m&#233;thode d'identification &#233;ventuellement impos&#233;e par un client.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;&lt;i&gt;Traduction d'extraits de &lt;a href=&#034;http://openid.net/specs/openid-connect-core-1_0.html#CodeFlowAuth&#034; class='spip_out' rel='external'&gt;OpenID Connect Core 1.0&lt;/a&gt;.&lt;br class='autobr' /&gt;
Dans la section '2. ID Token' :&lt;/i&gt;&lt;/p&gt;
&lt;blockquote class=&#034;spip&#034;&gt;
&lt;p&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;strong&gt;acr&lt;/strong&gt;&lt;br class='autobr' /&gt; OPTIONNEL. R&#233;f&#233;rence de classe de contexte d'authentification. Cha&#238;ne sp&#233;cifiant une valeur de r&#233;f&#233;rence de classe de contexte d'authentification qui identifie la classe de contexte d'authentification satisfaite par l'authentification. La valeur &#034;0&#034; indique que l'authentification de l'utilisateur final ne r&#233;pond pas aux exigences du niveau 1. ISO / IEC 29115 [ISO29115]. L'authentification &#224; l'aide d'un cookie de navigateur de longue dur&#233;e, par exemple, est un exemple o&#249; l'utilisation du &#034;niveau 0&#034; est appropri&#233;. Les authentifications de niveau 0 NE DEVRAIENT PAS &#234;tre utilis&#233;es pour autoriser l'acc&#232;s &#224; toute ressource de quelque valeur mon&#233;taire que ce soit. (Cela correspond au PAPIER OpenID 2.0 [OpenID.PAPE] nist_auth_level 0.) Un URI absolu ou un nom enregistr&#233; RFC 6711 [RFC6711] DEVRAIT &#234;tre utilis&#233; comme valeur acr ; les noms enregistr&#233;s NE DOIVENT PAS &#234;tre utilis&#233;s avec une signification diff&#233;rente de celle qui est enregistr&#233;e. Les parties utilisant cette all&#233;gation devront s'entendre sur la signification des valeurs utilis&#233;es, qui peuvent &#234;tre sp&#233;cifiques au contexte. La valeur acr est une cha&#238;ne sensible &#224; la casse.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;i&gt;dans la section '3.1.2.1. Authentication Request' :&lt;/i&gt;&lt;/p&gt;
&lt;blockquote class=&#034;spip&#034;&gt;
&lt;p&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;strong&gt;acr_values&lt;/strong&gt;&lt;br class='autobr' /&gt;
OPTIONNEL. Valeur de &#034;Requested Authentication Context Class Reference&#034;. Cha&#238;ne s&#233;par&#233;e par des espaces sp&#233;cifiant les valeurs acr que le serveur d'autorisations est invit&#233; &#224; utiliser pour traiter cette demande d'authentification, les valeurs apparaissant par ordre de pr&#233;f&#233;rence. La classe de contexte d'authentification satisfaite par l'authentification effectu&#233;e est renvoy&#233;e sous la valeur de revendication acr, comme sp&#233;cifi&#233; &#224; la section 2. La revendication acr est demand&#233;e en tant que revendication volontaire par ce param&#232;tre.&lt;/p&gt;
&lt;/blockquote&gt;&lt;h3 class=&#034;spip&#034;&gt;Niveaux d'acr&lt;/h3&gt;
&lt;p&gt;OAuthSD d&#233;finit quatre niveaux d'acr (au moins, le nombre n'est pas limit&#233;) attach&#233;s aux m&#233;thodes d'authentification et d&#233;finis par un nombre entier, par ordre croissant de s&#233;curit&#233; du proc&#233;d&#233; :&lt;br class='autobr' /&gt;
0 : proc&#233;d&#233; insuffisant&lt;br class='autobr' /&gt;
1 : proc&#233;d&#233; normal : &#034;une &#233;toile&#034; : login/MdP, d&#233;l&#233;gation de l'identification sans TFA.&lt;br class='autobr' /&gt;
2 : proc&#233;d&#233; &#034;deux &#233;toiles&#034;,&lt;br class='autobr' /&gt;
3 : proc&#233;d&#233; &#034;trois &#233;toiles&#034;.&lt;/p&gt;
&lt;p&gt;En cas d'authentification &#224; deux facteurs (TFA) r&#233;ussie, les niveaux des deux m&#233;thodes sont ajout&#233;s, sinon le niveau est 0 si le TFA &#233;choue.&lt;/p&gt;
&lt;p&gt;Les m&#233;thodes d'authentification et leur acr sont d&#233;finis dans le fichier de configuration configure_oidc.php.&lt;/p&gt;
&lt;p&gt;Le niveau d'acr est inscrit dans le cookie SLI et est retourn&#233; dans la charge utile du jeton JWT.&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;M&#233;thode d'authentification impos&#233;e par le client&lt;/h3&gt;
&lt;p&gt;OAuthSD permet &#224; un client de sp&#233;cifier des exigences particuli&#232;res en mati&#232;re d'identification de l'utilisateur final afin d'atteindre un niveau acr (Authentication Context Class Reference) suffisant.&lt;/p&gt;
&lt;p&gt;Cela est d&#233;fini par deux champs OPTIONNELS de la table des clients, renseign&#233;s au moment de l'inscription de l'application 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; &lt;strong&gt;identity_provider&lt;/strong&gt; : nom d'une m&#233;thode d'identification principale sp&#233;cifique (password, ghostkeys, kerberos, etc.).&lt;br class='autobr' /&gt;
S'il n'est pas d&#233;fini, le fournisseur d'identit&#233; est celui qui est d&#233;fini par d&#233;faut au moyen de la constante de configuration IDENTITY_PROVIDER.&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;required_acr&lt;/strong&gt; : valeur d'acr minimale requise par le client (Requested Authentication Context Class Reference). Si le client ne d&#233;finit pas de valeur d'acr minimale, celle-ci est d&#233;finie &#224; 0.&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Probl&#233;matique de s&#233;curit&#233; et solution&lt;/h3&gt;
&lt;p&gt;Il se pose alors un probl&#232;me de s&#233;curit&#233; : si une session OIDC est cr&#233;&#233;e avec une m&#233;thode faible, le cookie SLI ou le jeton d'identit&#233; JWT permettraient d'acc&#233;der &#224; une application requ&#233;rant une m&#233;thode plus forte. &lt;br class='autobr' /&gt;
Afin de pr&#233;venir cela :
&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; Lorsqu'une authentification est effectu&#233;e, la valeur de l'acr est inscrite dans le cookie SLI et le jeton d'identit&#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; Lorsque authorize v&#233;rifie le cookie SLI ou le JWT, si l'acr demand&#233; par l'application est sup&#233;rieur &#224; l'acr du cookie SLI ou du JWT, on invalidera le cookie, ce qui provoquera une nouvelle authentifiction.&lt;br class='autobr' /&gt;
Une application ne d&#233;clare pas n&#233;cessairement l'acr requis, le niveau &#233;tant alors 0.&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Syst&#232;mes d'identification int&#233;gr&#233;s &#224; OAuthSD</title>
		<link>https://static.oa.dnc.global/-Identifier-l-utilisateur-final-.html#systemesdidentificationintegresaoauthsd</link>
		<guid isPermaLink="true">https://static.oa.dnc.global/-Identifier-l-utilisateur-final-.html#systemesdidentificationintegresaoauthsd</guid>
		<dc:date>2019-05-16T12:09:00Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>DnC</dc:creator>



		<description>
&lt;p&gt;Il s'agit d'identifier une personne, pourquoi alors choisir un masque comme logo de cet article ? C'est parce que la plupart des techniques n'identifient pas une personne avec certitude, sauf quand on utilise des proc&#233;d&#233;s biom&#233;triques : de la m&#234;me mani&#232;re que l'on peut reconna&#238;tre une personne masqu&#233;e par ses yeux. C'est aussi parce que l'enjeu est de d&#233;masquer les intrus. &lt;br class='autobr' /&gt;
Les syst&#232;mes d'identification int&#233;gr&#233;s au serveur offrent une s&#233;curit&#233; maximale puisqu'ils sont sanctuaris&#233;s dans l'espace physique de (...)&lt;/p&gt;


-
&lt;a href="https://static.oa.dnc.global/-Identifier-l-utilisateur-final-.html" rel="directory"&gt;Identifier l'utilisateur final&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/arton172-30981.jpg?1733980292' width='150' height='150' /&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;&lt;i&gt;Il s'agit d'identifier une personne, pourquoi alors choisir un masque comme logo de cet article ? C'est parce que la plupart des techniques n'identifient pas une personne avec certitude, sauf quand on utilise des proc&#233;d&#233;s biom&#233;triques : de la m&#234;me mani&#232;re que l'on peut reconna&#238;tre une personne masqu&#233;e par ses yeux. C'est aussi parce que l'enjeu est de d&#233;masquer les intrus.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Les syst&#232;mes d'identification int&#233;gr&#233;s au serveur offrent une s&#233;curit&#233; maximale puisqu'ils sont sanctuaris&#233;s dans l'espace physique de l'organisation.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Les fen&#234;tres de dialogue n&#233;cessaires &#224; l'identification sont produites par le serveur et ex&#233;cut&#233;es dans son environnement : le navigateur de l'utilisateur final a &#233;t&#233; redirig&#233; vers le domaine du serveur.&lt;/p&gt;
&lt;p&gt;OAuthSD offre diff&#233;rentes m&#233;thodes d'identification est peut facilement en int&#233;grer de nouvelles gr&#226;ce &#224; son organisation modulaire.&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Identification classique : login/Mot de passe&lt;/h3&gt;
&lt;p&gt;La m&#233;thode se passe de commentaire. Si ce n'est pour dire qu'il faut absolument l'&#233;viter, ainsi que toutes ses semblables exigeant l'entr&#233;e au clavier d'un code quelconque, fut-il &#233;ph&#233;m&#232;re !&lt;/p&gt;
&lt;p&gt;&lt;span class='spip_document_82 spip_documents spip_documents_center'&gt;
&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L424xH555/password_std_en-65898.png?1733821244' width='424' height='555' alt=&#034;&#034; /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Goshtkeys : clavier fant&#244;me&lt;/h3&gt;
&lt;p&gt;Cette m&#233;thode affiche une grille dans laquelle l'utilisateur devra cliquer sur des chiffres dispos&#233;s de fa&#231;on al&#233;atoire &#224; chaque affichage du formulaire de connexion.&lt;br class='autobr' /&gt;
Cette m&#233;thode offre de grands avantages de s&#233;curit&#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; le mot de passe est mat&#233;rialis&#233; sous une forme cod&#233;e et variable, ce qui interdit sa r&#233;utilisation en cas d'interception,
&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 robots seront &#233;limin&#233;s, ce formulaire &#233;tant &#233;quivalent &#224; un Captcha.&lt;/p&gt;
&lt;p&gt;&lt;span class='spip_document_83 spip_documents spip_documents_center'&gt;
&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L467xH622/login_std_fr-3-89021.png?1733821244' width='467' height='622' alt=&#034;&#034; /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Apr&#232;s l'identification&lt;/h3&gt;
&lt;p&gt;Apr&#232;s identification, il est possible d'effectuer une &lt;strong&gt;&lt;a href='https://static.oa.dnc.global/-Identifier-l-utilisateur-final-.html#validationen2etapestwofactorauthentication2fa' class='spip_in'&gt;Validation en 2 &#233;tapes (Two Factor Authentication, 2FA) &lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Enfin, le &lt;strong&gt;consentement de l'utilisateur&lt;/strong&gt; pour l'acc&#232;s de l'application &#224; ses donn&#233;es personnelles est demand&#233; comme n&#233;cessaire :&lt;/p&gt;
&lt;p&gt;&lt;span class='spip_document_67 spip_documents spip_documents_center'&gt;
&lt;img src='https://static.oa.dnc.global/local/cache-vignettes/L470xH533/consent_std_fr-b8e2d.png?1733821244' width='470' height='533' alt=&#034;&#034; /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_ps'&gt;&lt;h3 class=&#034;spip&#034;&gt;[DR] Impl&#233;mentation des m&#233;thodes d'identification dans le serveur OAuthSD&lt;/h3&gt;
&lt;p&gt;OAuthSD distingue les fournisseurs d'identit&#233; primaire et, si l'identification &#224; deux facteurs (2FA) est activ&#233;e, les secondaires. Les constantes de configuration IDENTITY_PROVIDER et TFA_PROVIDER permettent de d&#233;finir quel seront les syst&#232;mes utilis&#233;s.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Constantes de configuration&lt;/strong&gt;&lt;br class='autobr' /&gt;
Le fichier /commons/configure_oidc.php permet de configurer les m&#233;thodes d'identification :&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;/div&gt;&lt;/li&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;/** [dnc10]&lt;/span&gt;&lt;/div&gt;&lt;/li&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;Que faire si prompt n'est pas d&#233;fini (ou Null) et que l'utilisateur n'est pas 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;&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;a href=&#034;http://www.php.net/define&#034;&gt;&lt;span style=&#034;color: #990000;&#034;&gt;define&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;'REAUTHENTICATE_NO_ROUNDTRIP'&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;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;span style=&#034;color: #666666; font-style: italic;&#034;&gt;// True pour que le serveur g&#232;re la r&#233;authentification. false est conforme &#224; la norme.&lt;/span&gt;&lt;/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: #009933; font-style: italic;&#034;&gt;/** Fournisseur d'identit&#233; primaire (formulaire 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: #009933; font-style: italic;&#034;&gt;* Le fournisseur d'identit&#233; est la premi&#232;re &#233;tape si TFA est activ&#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;&lt;span style=&#034;color: #009933; font-style: italic;&#034;&gt;* OAuthSD offre nativement 'ghostkeys', 'password' ...&lt;/span&gt;&lt;/div&gt;&lt;/li&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;* [dnc91] Peut &#234;tre remplac&#233; par le champ identity_provider de la table des clients.&lt;/span&gt;&lt;/div&gt;&lt;/li&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;a href=&#034;http://www.php.net/define&#034;&gt;&lt;span style=&#034;color: #990000;&#034;&gt;define&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;'IDENTITY_PROVIDER'&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;'password'&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: #009933; font-style: italic;&#034;&gt;/** Options de connexion / mot de passe */&lt;/span&gt;&lt;/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/define&#034;&gt;&lt;span style=&#034;color: #990000;&#034;&gt;define&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;'PSWD_LENGTH'&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt; &lt;span style=&#034;color: #cc66cc;&#034;&gt;9&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;// longueur exacte du mot de passe&lt;/span&gt;&lt;/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/define&#034;&gt;&lt;span style=&#034;color: #990000;&#034;&gt;define&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;'LOGIN_MIN_LENGTH'&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;span style=&#034;color: #666666; font-style: italic;&#034;&gt;// login min longueur&lt;/span&gt;&lt;/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/define&#034;&gt;&lt;span style=&#034;color: #990000;&#034;&gt;define&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;'FORCE_EMAIL'&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: #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;// Si TRUE, la connexion devrait &#234;tre une adresse &#233;lectronique. Si FALSE, la connexion peut &#234;tre un pseudo ou un email.&lt;/span&gt;&lt;/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: #009933; font-style: italic;&#034;&gt;/** [dnc10] Que faire si une invite == login et que l'utilisateur n'est pas connect&#233; (le jeton d'acc&#232;s a expir&#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;&lt;span style=&#034;color: #009933; font-style: italic;&#034;&gt;* Spec a dit que nous devrions retourner au client avec une erreur.&lt;/span&gt;&lt;/div&gt;&lt;/li&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;* Il est plus s&#251;r et meilleur (pas d'aller-retour) de g&#233;rer la situation sur le serveur.&lt;/span&gt;&lt;/div&gt;&lt;/li&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;a href=&#034;http://www.php.net/define&#034;&gt;&lt;span style=&#034;color: #990000;&#034;&gt;define&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;'LOGIN_NO_ROUNDTRIP'&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;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;span style=&#034;color: #666666; font-style: italic;&#034;&gt;// True pour que le serveur g&#232;re la r&#233;authentification. false est conforme &#224; la norme.&lt;/span&gt;&lt;/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: #009933; font-style: italic;&#034;&gt;/** En cas de r&#233;p&#233;tition de la connexion au serveur, combien d'essais sont autoris&#233;s pour l'utilisateur final? */&lt;/span&gt;&lt;/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/define&#034;&gt;&lt;span style=&#034;color: #990000;&#034;&gt;define&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;'ALLOWED_ATTEMPTS'&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;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: #009933; font-style: italic;&#034;&gt;/** [dnc43] Authentification &#224; deux facteurs (fournisseur d'identit&#233; secondaire).&lt;/span&gt;&lt;/div&gt;&lt;/li&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;* Un TFA peut &#234;tre pr&#233;sent&#233; &#224; l'utilisateur final si le champ d'application &#034;tfa&#034; est pr&#233;sent dans la demande 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;&lt;span style=&#034;color: #009933; font-style: italic;&#034;&gt;* Si ce param&#232;tre est d&#233;fini sur true, le fichier TFA sera toujours pr&#233;sent&#233; &#224; l'utilisateur final apr&#232;s le formulaire 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: #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;a href=&#034;http://www.php.net/define&#034;&gt;&lt;span style=&#034;color: #990000;&#034;&gt;define&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;'LOGIN_WITH_TFA'&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: #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: #009933; font-style: italic;&#034;&gt;/** [dnc43] Fournisseur d'identit&#233; secondaire. D&#233;signer quel fournisseur sera utilis&#233; pour le TFA.&lt;/span&gt;&lt;/div&gt;&lt;/li&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;* Entrez le nom du r&#233;pertoire dans / oidc / identification / o&#249; se trouve le TFA souhait&#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;&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;a href=&#034;http://www.php.net/define&#034;&gt;&lt;span style=&#034;color: #990000;&#034;&gt;define&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;'TFA_PROVIDER'&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;'checkbysms'&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;// Un parmi 'gangsta', 'checkbysms', ... (rien d'autre pour l'instant).&lt;/span&gt;&lt;/div&gt;&lt;/li&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;/** Nom du serveur &#224; passer &#224; getQRCodeGoogleUrl.&lt;/span&gt;&lt;/div&gt;&lt;/li&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;* Sera affich&#233; sous le QR-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: #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;a href=&#034;http://www.php.net/define&#034;&gt;&lt;span style=&#034;color: #990000;&#034;&gt;define&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;'TFA_VISIBLE_APPNAME'&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt; &lt;span style=&#034;color: #0000ff;&#034;&gt;'Serveur OAuthSD'&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;/div&gt;&lt;/li&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;/** [dnc9] Si SLI &#233;choue, devons-nous revenir au client?*/&lt;/span&gt;&lt;/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/define&#034;&gt;&lt;span style=&#034;color: #990000;&#034;&gt;define&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;'LOGIN_AFTER_SLI_FAILS'&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;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;span style=&#034;color: #666666; font-style: italic;&#034;&gt;// le contr&#244;leur authorize est responsable de l'invite &#224; nouveau.&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/e7ad7c205a693be22a4495a23fdc0d1f.txt'&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;M&#233;thode impos&#233;e par l'application&lt;/strong&gt;&lt;br class='autobr' /&gt;
...&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;D&#233;l&#233;gation de l'identification, d&#233;claration priv&#233;es&lt;/h3&gt;
&lt;p&gt;...&lt;/p&gt;&lt;/div&gt;
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Identification par OpenID Connect des utilisateurs identifi&#233;s avec Kerberos</title>
		<link>https://static.oa.dnc.global/-Identifier-l-utilisateur-final-.html#identificationparopenidconnectdesutilisateursidentifiesaveckerberos</link>
		<guid isPermaLink="true">https://static.oa.dnc.global/-Identifier-l-utilisateur-final-.html#identificationparopenidconnectdesutilisateursidentifiesaveckerberos</guid>
		<dc:date>2018-12-15T06:56:00Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>DnC</dc:creator>



		<description>
&lt;p&gt;L'utilisateur Windows qui a cr&#233;&#233; une session avec Active Directory (il a d&#233;j&#224; fourni son login et son mot de passe) pourra se connecter aux applications Web prot&#233;g&#233;es par OAuthSD sans avoir &#224; entrer dans une nouvelle proc&#233;dure d'identification. &lt;br class='autobr' /&gt;
Kerberos agit alors vis-&#224;-vis du serveur OIDC comme un Fournisseur d'identit&#233; OIDC (OIDC Identity Provider). &lt;br class='autobr' /&gt;
La solution d&#233;crite s'adresse au serveur Kerberos sans passer pas la passerelle Navigateur-&gt;Apache-&gt;application (mod_auth_kerb) qui est peu portable et (...)&lt;/p&gt;


-
&lt;a href="https://static.oa.dnc.global/-Identifier-l-utilisateur-final-.html" rel="directory"&gt;Identifier l'utilisateur final&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/L144xH150/arton77-24aef.jpg?1733980292' width='144' height='150' /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;L'utilisateur Windows qui a cr&#233;&#233; une session avec Active Directory (il a d&#233;j&#224; fourni son login et son mot de passe) pourra se connecter aux applications Web prot&#233;g&#233;es par OAuthSD sans avoir &#224; entrer dans une nouvelle proc&#233;dure d'identification.&lt;/p&gt;
&lt;p&gt;Kerberos agit alors vis-&#224;-vis du serveur OIDC comme un Fournisseur d'identit&#233; OIDC (OIDC Identity Provider).&lt;/p&gt;
&lt;p&gt;La solution d&#233;crite s'adresse au serveur Kerberos sans passer pas la passerelle Navigateur-&gt;Apache-&gt;application (mod_auth_kerb) qui est peu portable et instable.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;&lt;i&gt;A propos du logo de Kerberos : dans la mythologie grecque, Cerb&#232;re (en grec ancien &#922;&#941;&#961;&#976;&#949;&#961;&#959;&#962; / K&#233;rberos) est le chien &#224; trois t&#234;tes gardant l'entr&#233;e des Enfers (&lt;a href=&#034;https://fr.wikipedia.org/wiki/Cerb%C3%A8re&#034; class='spip_out' rel='external'&gt;Wikipedia&lt;/a&gt;). Ce logo est adopt&#233; par le MIT pour son &lt;a href=&#034;https://web.mit.edu/kerberos/&#034; class='spip_out' rel='external'&gt;protocole krb5&lt;/a&gt; qui est utilis&#233; ici. &lt;/i&gt;&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Objectif&lt;/h3&gt;
&lt;p&gt;L'utilisateur qui s'est identifi&#233; sur le r&#233;seau local avec Active Directory est inscrit sur le serveur Kerberos du domaine.&lt;/p&gt;
&lt;p&gt;Il s'agit de faire en sorte que cet utilisateur soit &#233;galement identifi&#233; par OIDC, donc sans avoir &#224; suivre une nouvelle proc&#233;dure de login dans les applications clientes du serveur OAuthSD de l'organisation.&lt;/p&gt;
&lt;p&gt;On peut donc dire que le &#034;SSO&#034; d'OauthSD (&lt;a href='https://static.oa.dnc.global/-OpenID-Connect-SSO-management-de-session-etc-.html#ssoetconnexionuniquesingleloginidentificationsli' class='spip_in'&gt;la connexion unique&lt;/a&gt;) h&#233;ritera de celui de Kerberos.&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Solution s'adressant directement au serveur Kerberos&lt;/h3&gt;
&lt;p&gt;Cette approche est compl&#232;te car elle permet d'obtenir non seulement le login de l'utilisateur mais &#233;galement des informations permettant son identification.&lt;/p&gt;
&lt;p&gt;De plus, elle ne fait pas appel &#224; la passerelle entre Kerberos et le navigateur, ce qui permet :
&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;viter des probl&#232;mes de configuration des navigateurs des utilisateurs,
&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'am&#233;liorer la s&#233;curit&#233; en restant dans une liaison serveur-serveur (le navigateur ne voit pas passer d'information d'authentification).&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Concepts&lt;/h3&gt;
&lt;p&gt;Le protocole Kerberos d&#233;finit la fa&#231;on dont les utilisateurs interagissent avec un service r&#233;seau pour avoir acc&#232;s aux ressources du r&#233;seau.&lt;/p&gt;
&lt;p&gt;Pour une pr&#233;sentation g&#233;n&#233;rale de Kerberos, voyez : &lt;a href=&#034;http://remivernier.com/index.php/2018/07/07/kerberos-exploration/&#034; class='spip_out' rel='external'&gt;Exploration du protocole KERBEROS&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Dans Windows, l'ordinateur client est membre d'un domaine AD DS (Active Directory Domain Services) et le ticket TGT prouve que le contr&#244;leur de domaine Kerberos a authentifi&#233; les informations d'identification fournies par l'utilisateur de l'ordinateur client.&lt;/p&gt;
&lt;p&gt;Si la finalit&#233; et le fonctionnement de Kerberos ressemblent &#224; ceux d'OpenID Connect (OIDC), leur niveau fonctionnel (au sens couches ISO du terme) n'est pas le m&#234;me :&lt;/p&gt;
&lt;table class=&#034;spip&#034; summary=&#034;&#034;&gt;
&lt;caption&gt;Comparaison fonctionnelle OIDC / Kerberos&lt;/caption&gt;
&lt;thead&gt;&lt;tr class='row_first'&gt;&lt;th id='id4cd3_c0'&gt; &lt;/th&gt;&lt;th id='id4cd3_c1'&gt; OIDC &lt;/th&gt;&lt;th id='id4cd3_c2'&gt; Kerberos &lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td headers='id4cd3_c0'&gt;Objectif&lt;/td&gt;
&lt;td headers='id4cd3_c1'&gt;Authentification des internautes par les applications Web&lt;/td&gt;
&lt;td headers='id4cd3_c2'&gt;identification des utilisateurs, des machines et des ressources sur le r&#233;seau local&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td headers='id4cd3_c0'&gt;Niveau de communication&lt;/td&gt;
&lt;td headers='id4cd3_c1'&gt;Web&lt;/td&gt;
&lt;td headers='id4cd3_c2'&gt;R&#233;seau local&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td headers='id4cd3_c0'&gt;Protocole&lt;/td&gt;
&lt;td headers='id4cd3_c1'&gt;HTTP&lt;/td&gt;
&lt;td headers='id4cd3_c2'&gt;TCP&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td headers='id4cd3_c0'&gt;Le client est&lt;/td&gt;
&lt;td headers='id4cd3_c1'&gt;Une application ouverte sur le serveur HTTP, sur l'user-agent ou native capable de protocole HTTP&lt;/td&gt;
&lt;td headers='id4cd3_c2'&gt;&lt;span style=&#034;color: red&#034;&gt;Toute application native fonctionnant sur la machine de l'utilisateur final (ordinateur client) capable d'ouvrir un socket&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href='#nb5-1' class='spip_note' rel='appendix' title='Ce qui inclut les applications ouvertes sur le serveur HTTP mentionn&#233;es &#224; (...)' id='nh5-1'&gt;1&lt;/a&gt;]&lt;/span&gt;&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href='#nb5-2' class='spip_note' rel='appendix' title='Donc n'importe quelle application, y compris un malware : on ne sait pas o&#249; (...)' id='nh5-2'&gt;2&lt;/a&gt;]&lt;/span&gt;.&lt;/style&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td headers='id4cd3_c0'&gt;Le sujet est&lt;/td&gt;
&lt;td headers='id4cd3_c1'&gt;L'utilisateur final (ou l'application si elle demande l'authentification pour elle-m&#234;me)&lt;/td&gt;
&lt;td headers='id4cd3_c2'&gt;L'utilisateur ayant ouvert la session Windows&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Le tableau suivant met en parall&#232;le les concepts des deux syst&#232;mes&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href='#nb5-3' class='spip_note' rel='appendix' title='Il ne s'agit pas d'identit&#233; puisque le niveau de communication et le sujet de (...)' id='nh5-3'&gt;3&lt;/a&gt;]&lt;/span&gt;.&lt;/p&gt;
&lt;table class=&#034;spip&#034;&gt;
&lt;tbody&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;Correspondance des Concepts&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;&lt;strong&gt;Auth2&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Kerberos&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;Serveur d'autorisation (AS)&lt;/td&gt;
&lt;td&gt;Centre de distribution de cl&#233;s (KDC)&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;Authentication controller&lt;/td&gt;
&lt;td&gt;Authentication service (AS)&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;Authorization Code&lt;/td&gt;
&lt;td&gt;Ticket to Get Tickets ou Ticket-Granting Ticket (TGT)&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;Token controller&lt;/td&gt;
&lt;td&gt;Ticket Granting Service (TGS)&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;Access token&lt;/td&gt;
&lt;td&gt;Service ticket&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;URL de la ressource&lt;/td&gt;
&lt;td&gt;Service Principal Name (ou simplement Principal), SPN&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;h3 class=&#034;spip&#034;&gt;Note &#224; propos de la s&#233;curit&#233;&lt;/h3&gt;
&lt;p&gt;Notons que OIDC op&#232;re au niveau applicatif (et non au niveau du r&#233;seau), ce qui contribue &#224; l'approche &lt;a href='https://static.oa.dnc.global/-Decouvrir-.html#enquoioidccontribuetilalapprocheztna' class='spip_in'&gt;&#034;acc&#232;s z&#233;ro-confiance au r&#233;seau&#034; (ZTNA)&lt;/a&gt;. &lt;br class='autobr' /&gt;
Donc il ne faudrait pas utiliser Kerberos ? Ici, nous utilisons Kerberos pour l'identification et l'autorisation de l'utilisateur. L'acc&#232;s &#224; l'application (ou de l'application aux ressources prot&#233;g&#233;es) reste contr&#244;l&#233; au niveau applicatif.&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Pourquoi ne pas utiliser mod_auth_kerb ?&lt;/h3&gt;
&lt;p&gt;Pour r&#233;aliser l'int&#233;gration de Kerberos comme pourvoyeur d'identit&#233; au profit d'OpenID Connect, &lt;strong&gt;un premier probl&#232;me &#224; r&#233;soudre consiste &#224; passer les informations Kerberos de la couche de transport TCP &#224; la couche protocole HTTP&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Quand on cherche comment le probl&#232;me est r&#233;solu, on trouve g&#233;n&#233;ralement des applications de l'extension Apache mod_auth_kerb.&lt;/p&gt;
&lt;p&gt;mod_auth_kerb d&#233;finit la variable d'environnement REMOTE_USER avec l'identification du client, ce que l'on peut r&#233;cup&#233;rer dans l'application. Cela suppose l'int&#233;gration des informations Kerberos dans le Header de la requ&#234;te HTTP.&lt;/p&gt;
&lt;p&gt;Les principaux inconv&#233;nients sont les suivants :
&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; Pour fonctionner, cela exige de configurer le navigateur Web pour qu'il utilise r&#233;ellement l'authentification HTTP Negotiate, dont les d&#233;tails varient d'un navigateur &#224; l'autre. Certains navigateurs n'impl&#233;mentent pas cette fonctionnalit&#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; La mise &#224; jour ou la reconfiguration du poste de travail de l'utilisateur peut &#233;craser la configuration ou changer le navigateur par d&#233;faut.
&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 Apache est n&#233;cessaire, Nginx ne semble pas pouvoir &#234;tre utilis&#233;.&lt;/p&gt;
&lt;p&gt;Nous consid&#233;rerons donc que la solution n'est ni portable ni stable.&lt;/p&gt;
&lt;p&gt;Le flux d&#233;crit ci-dessous, qui s'adresse directement au serveur Kerberos du domaine, &#233;vite les difficult&#233;s et pr&#233;sente une meilleurs s&#233;curit&#233; en &#233;vitant de passer par le navigateur .&lt;/p&gt;
&lt;p&gt;Voici l'impl&#233;mentation d'OAuthSD :&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;Ce qui inclut les applications ouvertes sur le serveur HTTP mentionn&#233;es &#224; gauche, pourvu qu'il puisse acc&#233;der au serveur Kerberos du domaine.&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;Donc n'importe quelle application, y compris un malware : on ne sait pas o&#249; vont les donn&#233;es !&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;Il ne s'agit pas d'identit&#233; puisque le niveau de communication et le sujet de l'authentification ne sont pas les m&#234;mes d'un c&#244;t&#233; &#224; l'autre. Il faut lire le tableau comme &#034;Dans OIDC xxx joue le r&#244;le du yyy de Kerberos&#034;&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;
		&lt;div class='rss_ps'&gt;&lt;h3 class=&#034;spip&#034;&gt;Flux de l'Authentification OIDC avec Kerberos &lt;/h3&gt;
&lt;p&gt;(Nota : d&#233;veloppement en cours)&lt;/p&gt;
&lt;p&gt;Le serveur OIDC tente d'utiliser une &#233;ventuelle authentification Kerberos avant toute autre m&#233;thode d'identification de l'utilisateur. Le flux est le suivant :&lt;/p&gt;
&lt;p&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; l'application cliente demande un code d'autorisation au serveur OAuthSD (contr&#244;leur Authorize) en passant le scope 'kerberos',
&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; En se fondant sur l'adresse de sous-r&#233;seau, OAuthSD teste si l'ordinateur client est dans le domaine ou le sous-domaine autoris&#233; du r&#233;seau local (pr&#233;cis&#233; dans la configuration du serveur OAuthSD),
&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; OAuthSD interroge le DNS du domaine avec l'adresse de sous-r&#233;seau et obtient l'id de la machine sous la forme monserveur.monreseau.local et forme l'adresse kerberos HTTP/monserveur.monreseau.local@MONRESEAU.LOCAL.
&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; OAuthSD se connecte &#224; Kerberos en cr&#233;ant un principal kerberos avec les identifiants de l'administrateur,
&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; OAuthSD examine si la machine a un ticket de session valide, et en extrait l'identit&#233; de l'utilisateur,
&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; OAuthSD d&#233;truit sa connexion Kerberos. &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; si la machine est authentifi&#233; par Kerberos, le serveur OAuthSD v&#233;rifie que l'utilisateur figure bien dans la table users.
&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 serveur OAuthSD cr&#233;e ou met &#224; jour le cookie SLI&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href='#nb6-1' class='spip_note' rel='appendix' title='A partir de ce moment, la session SLI d'OAuthSD et d&#233;marr&#233;e. Dans l'&#233;tat (...)' id='nh6-1'&gt;1&lt;/a&gt;]&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;Si l'authentification Kerberos n'est pas autoris&#233;e ou &#233;choue, le serveur OAuthSD passe &#224; la m&#233;thode d'identification suivante&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href='#nb6-2' class='spip_note' rel='appendix' title='Dans l'&#233;tat actuel du d&#233;veloppement, OAuthSD ne traite que les identifications (...)' id='nh6-2'&gt;2&lt;/a&gt;]&lt;/span&gt;.&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Dispositions de s&#233;curit&#233;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Inscription de l'utilisateur AD sur OAuthSD&lt;/strong&gt;&lt;br class='autobr' /&gt;
Pour am&#233;liorer la s&#233;curit&#233;, on peut exiger que le contr&#244;leur Authorize v&#233;rifie que l'utilisateur AD est &#233;galement enregistr&#233; sur le serveur OAuthSD .&lt;br class='autobr' /&gt;
Dans ce cas, l'utilisateur final devra &#234;tre inscrit ind&#233;pendamment sur le serveur OAuthSD, avec le m&#234;me identifiant que sur AD. &lt;br class='autobr' /&gt;
Cette disposition est une option contr&#244;l&#233;e par la constante de configuration KERB_USER_EQUALS_OIDC_USER d&#233;finie &#224; True par d&#233;faut.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Le scope 'kerberos'&lt;/strong&gt;&lt;br class='autobr' /&gt;
Ce scope doit figurer dans la liste des scopes disponibles pour l'application. Pour autoriser l'identification Kerberos, l'application cliente de OAuthSD doit faire appel au contr&#244;leur Authorize en r&#233;clamant ce scope.&lt;br class='autobr' /&gt;
Ainsi, la possibilit&#233; d'un SSO avec Kerberos reste sous le contr&#244;le de l'administrateur du serveur OAuthSD et celui du concepteur de l'application cliente.&lt;/p&gt;
&lt;h3 class=&#034;spip&#034;&gt;Un peu de technique...&lt;/h3&gt;
&lt;p&gt;R&#233;f&#233;rence : &lt;a href=&#034;https://docstore.mik.ua/manuals/php/en/ref.kadm5.html&#034; class='spip_url spip_out' rel='external'&gt;https://docstore.mik.ua/manuals/php...&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cr&#233;ation du principal kerberos&lt;/strong&gt;&lt;br class='autobr' /&gt;
OAuthSD ouvre une connexion &#224; la biblioth&#232;que KADM5 avec les identifiants de l'administrateur du serveur Kerberos.&lt;br class='autobr' /&gt;
OAuthSD obtient un handle vers le gestionnaire KADM5 (ou false en cas d'erreur), dont on se servira pour interroger LDAP et obtenir les informations sur l'utilisateur, en particulier pour v&#233;rifier qu'il est authentifi&#233; sur le r&#233;seau.&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;/div&gt;&lt;/li&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;* Initialise la connexion avec le principal de l'administrateur du domaine $realm et retourne les informations sur un utilisateur $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: #009933; font-style: italic;&#034;&gt;* $user : nom de 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: #009933; font-style: italic;&#034;&gt;* $admin_server : nom du serveur Kerberos sur le r&#233;seau local,&lt;/span&gt;&lt;/div&gt;&lt;/li&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;* $realm : Domaine d'identification,&lt;/span&gt;&lt;/div&gt;&lt;/li&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;* $admin_principal : Principal de l'administrateur du serveur Kerberos,&lt;/span&gt;&lt;/div&gt;&lt;/li&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;* $password : Mot de passe de l'administrateur du serveur Kerberos.&lt;/span&gt;&lt;/div&gt;&lt;/li&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; kerberos_getinfos&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$user&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$admin_server&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$realm&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$principal&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$password&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: #000088;&#034;&gt;$handle&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; kadm5_init_with_password&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #000088;&#034;&gt;$admin_server&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$realm&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$admin_principal&lt;/span&gt;&lt;span style=&#034;color: #339933;&#034;&gt;,&lt;/span&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$admin_password&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;$options&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; kadm5_get_principal&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #000088;&#034;&gt;$handle&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;.&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;$realm&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; kadm5_destroy&lt;span style=&#034;color: #009900;&#034;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&#034;color: #000088;&#034;&gt;$handle&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;return&lt;/span&gt; &lt;span style=&#034;color: #000088;&#034;&gt;$keys&lt;/span&gt; &lt;span style=&#034;color: #339933;&#034;&gt;=&lt;/span&gt; &lt;a href=&#034;http://www.php.net/array_keys&#034;&gt;&lt;span style=&#034;color: #990000;&#034;&gt;array_keys&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;$options&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;/div&gt;&lt;/li&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;/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/b17dc592fb68b0540238df173ab65ed7.txt'&gt;T&#233;l&#233;charger&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Identifier la machine locale&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Lorsqu'une application demande au serveur OIDC une authentification pour un utilisateur final, elle s'adresse au contr&#244;leur Authorize qui :
&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; d&#233;termine l'adresse IP sur le r&#233;seau local de la machine depuis laquelle l'utilisateur s'est identifi&#233; sur Active Directory,
&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; interroge le DNS pour obtenir le nom de la machine avec l'IP ( Ceci n&#233;cessite que tous les ordinateurs joints au domaine sont enregistr&#233;s au sein du DNS du r&#233;seau local, avec leur reverse renseign&#233; ).&lt;/p&gt;
&lt;p&gt;Authorize peut alors utiliser krb5 pour adresser la machine sur AD avec l'identifiant &lt;code class='spip_code' dir='ltr'&gt;&lt;nom de la machine&gt;.&lt;monreseau.local&gt;&lt;/code&gt;.&lt;/p&gt;&lt;/div&gt;
		</content:encoded>


		

	</item>



</channel>

</rss>
