Redmine Entr’ouvert: Demandeshttps://dev.entrouvert.org/https://dev.entrouvert.org/favicon.ico?15861920342023-04-13T15:18:12ZRedmine Entr’ouvert
Redmine Publik - Support #76615 (En cours): Publik Billettiquehttps://dev.entrouvert.org/issues/766152023-04-13T15:18:12ZMikaël Atesmates@entrouvert.com
<p><a class="external" href="https://publik.tracim.fr/ui/workspaces/1/contents/html-document/1980?folder_open=1">https://publik.tracim.fr/ui/workspaces/1/contents/html-document/1980?folder_open=1</a></p>
<p>Le principe est simple. Sous la forme d'un connecteur passerelle vous avez un générateur de QRCode signés.</p>
<p>Dans vos circuits de traitement vous appelez le connecteur en indiquant les informations à inclure dans le QRCode. Le connecteur vous renvoie l'image d'un QRCode signé.</p>
<p>Vous pouvez inclure ce QRCode dans des documents : billets, dérogations, autorisations, etc. Vous pouvez mettre ce QRCode dans une fiche et l'afficher sur une page du portail accessible uniquement de l'usager.</p>
<p>L'agent qui vérifie le QRCode utilise pour cela une page du portail contenant une cellule de vérification. Votre intégration graphique est « responsive »,<br />la vérification est possible sur divers terminaux équipés de navigateurs Web standards : téléphones et tablettes. Vous pouvez avoir plusieurs pages de vérification pour plusieurs applications.</p>
<p>La cellule de vérification active la caméra du terminal de l'agent, vérifie la signature, affiche la validité et les informations souhaitées contenues dans le QRCode.</p>
<p>La page peut être publique pour vérifier des QRCodes qui ne nécessitent pas de faire des opérations de gestion consécutives au scan. Par exemple, pour simplement vérifier une autorisation qui n'a d'autre expiration qu'une date ferme.</p>
<p>La page peut requérir d'être connecté, avec un certain rôle, car le scan va déclencher une opération consécutive au scan. Cette opération ce peut-être la vérification que le billet n'a pas déjà été scanné. Cette opération ce peut-être aussi de pointer que le billet est scanné (« compostage ») ou de pointer la présence sur une réservation.</p>
A l'issue de ce développement vous serez munis des éléments suivants :
<ul>
<li>La possibilité de déployer et de configurer un connecteur QRCode.</li>
<li>La possibilité d'ajouter et de configurer des cellules de vérification dans le portail.</li>
<li>De la documentation pour expliquer comment générer un QRCode, l'inclure dans un document ou une fiche, configurer des actions post-scan, configurer la cellule.</li>
<li>Une démarche de démonstration.</li>
</ul>
<p>Cela est chiffré à 55 000 €HT.</p>
<p>Si nous bouclons le budget au premier trimestre 2023, nous pourrons livrer en 2023.</p> Authentic 2 - Development #61592 (En cours): Ajout de logs en cas de refus de requête de déconnex...https://dev.entrouvert.org/issues/615922022-02-09T11:52:46ZBenjamin Renardbrenard@easter-eggs.com
Lors d'une déconnexion CAS, pour que celle-ci soit traitée, il faut :
<ul>
<li>que l'entête <em>HTTP_REFERER</em> soit présente dans la requête</li>
<li>qu'un service CAS soit trouvé en correspondance avec le <em>referer</em> de la requête</li>
</ul>
<p>Si l'une ou l'autre de ces conditions n'est pas respectée, la requête est ignorée.</p>
<p>Ce patch ajoute un message <em>WARNING</em> logué pour chacun de ces deux cas de refus, facilitant grandement la résolution de problème à ce niveau.</p> Lasso - Bug #55510 (Nouveau): Memory leak when using "dump" in Perl bindinghttps://dev.entrouvert.org/issues/555102021-07-10T11:14:57ZMaxime Besson
<p>I use Lasso in the context of the LemonLDAP::NG SSO server. Some of our users notice memory leaks in long term processes, forcing us to periodically restart our processes.</p>
<p>I was able to track down one of these memory leaks to this part of the code:<br /><pre>
if ( $login->is_session_dirty ) {
$self->logger->debug("Save Lasso session in session");
$self->p->updateSession( $req,
{ $self->lsDump => $login->get_session->dump },
$session_id );
}
</pre></p>
<p>In particular, the ->dump call on a Lasso::Session object. But it seems like the same issue affects all Lasso types (Identity, etc.)</p>
<p>I have attached a simple reproduction script to this ticket, run leak.pl (against Lasso 2.7.0 for instance) and you will see memory climbing. Run the equivalent leak.c and you will not see any (obvious) leaks, so it seems like the issue comes from the perl binding itself. I have tried the python bindings, and it doesn't seem to be affected either.</p> Authentic 2 - Support #54997 (Nouveau): document ldap_auth_settingshttps://dev.entrouvert.org/issues/549972021-06-18T14:20:51ZLoïc Dachary
<p>The semantic of the values in LDAP_AUTH_SETTINGS deserve a detailed documentation. Their semantic is non trivial.</p> Authentic 2 - Development #33645 (Nouveau): Afficher le nombre de membres indirect dans les rôleshttps://dev.entrouvert.org/issues/336452019-06-03T22:43:08ZLaurent Séguinlseguin@entrouvert.com
<p>Quand on est à {{idp_url}}/manage/roles/ on voit la liste des rôles ainsi qu'une colonne « Nombre de membres directs »<br />Selon certaines configuration de gestion d'héritages de rôles, on peut avoir beaucoup de membres indirect et cette information n'apparaît pas. Cela oblige d'entrer dans le rôle et compter si on a bien le bon nombre de membres attendu.</p>
<p>Ajouter une colonne « Nombre de membres indirects » dans cette vue serait utile.</p> Authentic 2 - Bug #32001 (Nouveau): CAS : erreur "unable to compute an identifier for user" lors ...https://dev.entrouvert.org/issues/320012019-04-04T13:34:00ZBenjamin Renardbrenard@easter-eggs.com
<p>Bonjour,</p>
<p>Il semble y avoir un souci suite à la réinitialisation du mot de passe. Celui-ci semble se produire uniquement lors de la suite évènements suivant :</p>
<p>- on tente d'accéder à un service utilisant l'authentification SSO via CAS<br />- celle-ci nous renvoi vers la page d'authentification du SSO<br />- on clique sur le lien "mot de passe perdu" et on suit la procédure pour le changer<br />- une fois le mot de passe changé, Authentic tente de nous rediriger vers l'application ayant demandée initialement l'authentification</p>
<p>A ce moment précis, Authentic ne semble pas avoir accès aux informations issues des attributs LDAP de l'utilisateur : si dans la configuration du service CAS, le choix de l'information utilisée comme login est un attribut LDAP (par exemple, l'_uid_), on a l'erreur suivante :</p>
<pre>
DEBUG modified password for dn u'uid=renardb,ou=people,o=example'
INFO user renardb (094a09) resetted its password with token u'557-ed207'...
INFO logged in (email)
DEBUG validation service: u'https://idp.domain.tld/myapp' ticket: u'ST-MlhaEE0TRIeg3dqzaC1YxUwwQ5' renew: False
DEBUG got config [{'binddn': u'uid=authentic,ou=sysaccounts,o=example', 'groupsu': (u'cn=ssosuperadmins,ou=groups,o=example',), 'set_mandatory_groups': (), 'email_field': u'mail', 'sync_ldap_users_filter': u'', 'multimatch': False, 'cacertdir': u'', 'group_filter': u'(&(uniqueMember={user_dn})(objectClass=exampleGroup))', 'groupstaff': (u'cn=ssoadmins,ou=groups,o=example',), 'is_staff': None, 'update_username': False, 'external_id_tuples': [[u'uid'], [u'dn:noquote']], 'attribute_mappings': [], 'set_mandatory_roles': (), 'clean_external_id_on_update': True, 'user_can_change_password': True, 'realm': u'ldap_example_people', 'certfile': u'', 'username_template': u'{uid[0]}', 'can_reset_password': True, 'replicas': True, 'group_dn_template': u'', 'use_tls': False, 'is_superuser': None, 'keep_password_in_session': False, 'limit_to_realm': False, 'user_attributes': [], 'group_mapping': (), 'lname_field': u'sn', 'mandatory_attributes_values': {}, 'create_group': False, 'timeout': -1, 'use_password_modify': True, 'connect_with_user_credentials': True, 'ldap_options': {}, 'bind_with_username': False, 'basedn': u'o=example', 'lookups': (u'external_id', u'username'), 'use_first_url_for_external_id': True, 'bindpw': u'myBigSecret', 'attributes': (u'uid', u'mail', u'displayname', u'sn', u'givenname', u'title', u'exampleidentifier', u'o', u'ou', u'memberof'), 'group_to_role_mapping': (), 'member_of_attribute': u'', 'user_basedn': u'ou=people,o=example', 'global_ldap_options': {}, 'ou_slug': u'', 'cacertfile': u'/etc/ssl/certs/ca-certificates.crt', 'user_dn_template': u'', 'keep_password': False, 'shuffle_replicas': True, 'require_cert': u'demand', 'referrals': False, 'url': ['ldaps://ldap.domain.tld:636'], 'bindsasl': (), 'active_directory': False, 'groupactive': (), 'disable_update': False, 'fname_field': u'givenname', 'user_filter': u'(&(objectClass=examplePeople)(|(uid=%s)(mail=%s)))', 'keyfile': u''}, {'groupsu': (), 'email_field': u'mail', 'sync_ldap_users_filter': u'', 'global_ldap_options': {}, 'attribute_mappings': [], 'set_mandatory_roles': (), 'clean_external_id_on_update': True, 'member_of_attribute': u'', 'username_template': u'{uid[0]}', 'group_dn_template': u'', 'is_superuser': None, 'user_attributes': [], 'ldap_options': {}, 'bind_with_username': False, 'use_first_url_for_external_id': True, 'bindpw': u'myBigSecret', 'user_basedn': u'ou=sysaccounts,o=example', 'user_can_change_password': False, 'ou_slug': u'', 'cacertfile': u'/etc/ssl/certs/ca-certificates.crt', 'user_dn_template': u'', 'keep_password': False, 'require_cert': u'demand', 'referrals': False, 'bindsasl': (), 'active_directory': False, 'disable_update': False, 'binddn': u'uid=authentic,ou=sysaccounts,o=example', 'cacertdir': u'', 'set_mandatory_groups': (), 'multimatch': False, 'group_filter': u'(&(member={user_dn})(objectClass=groupOfNames))', 'groupstaff': (), 'is_staff': None, 'update_username': False, 'external_id_tuples': [[u'uid'], [u'dn:noquote']], 'can_reset_password': False, 'realm': u'ldap_example_sysaccounts', 'fname_field': u'givenname', 'replicas': True, 'use_tls': False, 'keep_password_in_session': False, 'limit_to_realm': False, 'group_mapping': (), 'lname_field': u'sn', 'mandatory_attributes_values': {}, 'create_group': False, 'timeout': -1, 'connect_with_user_credentials': True, 'basedn': u'o=example', 'user_filter': u'(&(objectClass=exampleSysaccount)(uid=%s))', 'group_to_role_mapping': (), 'certfile': u'', 'use_password_modify': True, 'shuffle_replicas': True, 'lookups': (u'external_id', u'username'), 'url': ['ldaps://ldap.domain.tld:636'], 'groupactive': (), 'attributes': (u'uid',), 'keyfile': u''}]
ERROR unable to compute an identifier for user u'renardb (094a09)' and service https://idp.domain.tld/myapp
WARNING validation failed service: u'https://idp.domain.tld/myapp' code: INTERNAL_ERROR
</pre>
<p>Si en outre, dans la configuration du service CAS, le choix de l'information utilisée comme login est une information propre à Authentic (par exemple, <em>django_user_username</em>), on a pas d'erreur.</p> Publik - Bug #23451 (Nouveau): ODEo (OpenData Entr'ouvert) ?https://dev.entrouvert.org/issues/234512018-04-26T10:10:04ZBrice Mallet
<p>L'idée serait de créer une instance avec juste paserelle et le portail agents pour y héberger des sources de données, basées sur des csv, dont nous avons besoin pour différents clients.</p>
Exemples existants :
<ul>
<li>disposer d'une liste des pays, source de données existante à Nanterre (<a class="external" href="https://passerelle-moncompte.nanterre.fr/csvdatasource/iso3166/">https://passerelle-moncompte.nanterre.fr/csvdatasource/iso3166/</a>) et maintenant à Orléans (<a class="external" href="https://passerelle-orleans.test.entrouvert.org/csvdatasource/pays-iso3166/">https://passerelle-orleans.test.entrouvert.org/csvdatasource/pays-iso3166/</a>), ce serait pas mal de juste pointer sur <a class="external" href="https://passerelle-odeo.entrouvert.com/csvdatasource/pays-iso3166/">https://passerelle-odeo.entrouvert.com/csvdatasource/pays-iso3166/</a>, par exemple</li>
<li>disposer de la liste des communes françaises (nécessaire à Nanterre, Grenoble, Orléans...), exemple : <a class="external" href="https://passerelle-moncompte.nanterre.fr/csvdatasource/communes-francaises/">https://passerelle-moncompte.nanterre.fr/csvdatasource/communes-francaises/</a></li>
</ul>
Autres sources de données envisageables, à voir si possible :
<ul>
<li>Associations (RNA), #23450</li>
<li>Entreprises (SIREN), #23450</li>
</ul> Authentic 2 - Support #21015 (En cours): Documenter la page de configuration du contrôle d'accès ...https://dev.entrouvert.org/issues/210152018-01-05T14:35:50ZMikaël Atesmates@entrouvert.com
<p>Josué, je te laisse faire le premier jet sur une page wiki. Je compléterai et ferai ensuite la mise en forme.</p> Welco - Development #8715 (Nouveau): Annoter courriers en pdfhttps://dev.entrouvert.org/issues/87152015-10-20T10:35:24ZBrice Mallet
<p>Un cas d'usage d'Alfortville : pouvoir surligner une partie du document pdf océrisé (à priori par service courrier à l'attention du DGS / DGA)<br />Piste possible : layer "annotations" dans pdf.js, <a class="external" href="https://hypothes.is/">https://hypothes.is/</a>, <a class="external" href="https://github.com/hypothesis/pdf.js-hypothes.is">https://github.com/hypothesis/pdf.js-hypothes.is</a></p> Lasso - Development #104 (Nouveau): Make lasso_server_get_first_providerID_by_role use provide->p...https://dev.entrouvert.org/issues/1042010-06-19T09:40:58ZBenjamin Dauvergne
<p>It should allow to progressively stop using the ->role field which should be enforced at caller level. Lasso should not enforce its own policies, but only check declarations (i.e. metadata) and standard mandated policies.</p> Lasso - Bug #54 (Nouveau): Python: support more than one output parameterhttps://dev.entrouvert.org/issues/542010-05-22T07:56:44ZBenjamin Dauvergne
<p>All output parameters should be agregated in a returned tuple or dict.</p> Lasso - Bug #53 (Nouveau): PERL: Support out arguments for strings, xml nodes, nodes and listshttps://dev.entrouvert.org/issues/532010-05-22T07:06:13ZBenjamin Dauvergne
<p>int is already implemented, continue with strings, xmlNode, nodes and lists of thoses.</p> Lasso - Development #52 (Nouveau): For ID-FF 1.2 and SAML 2.0, check that issuer of response is t...https://dev.entrouvert.org/issues/522010-05-22T06:56:09ZBenjamin Dauvergne
<p>Currently it can happen that we accept a response, or an assertion not <br />coming from the expected issuer. We should always check for it, if <br />possible (for asynchronous binding, if the user did not keep the <br />original profile object, we will not be able to know which provider was <br />s targeted by a request).</p>
<p>It should be possible to desactivate this check for debugging purpose.</p>
<p>From the point of view of a caller using an asynchronous binding (redirect or POST) it should be simple, no dumping of the whole profile should be necessary. The two things to match are that the response is to a request we emitted (so check inResponseTo attribute) and that the issuer is the one targetted by the request.</p>
<p>The first can be done by the profile himself if the request is still present, if it's not an accessor must be provided to get to the inResponseTo field easily for ID-FF 1.2 and SAMLv2 (lasso_profile_get_in_response_to() would be ok).</p>
<p>The second one can also be done easily if the request is still in the profile object are by the caller through other means helped by an accessor.</p>
<p>A flag on the profile should indicate that the caller will do the job instead of Lasso, otherwise the absence of the request would result in a failure.</p> Lasso - Development #49 (Nouveau): Report which assertion is signed and who signed ithttps://dev.entrouvert.org/issues/492010-05-21T20:26:09ZBenjamin Dauvergne
<p>Extract from a comment in mod_mellon in auth_mellon_handler.c:936 :<br />«<br /> /* TODO: lasso only verifies the signature on the <em>first</em> asserion
* element. Therefore we can't trust any of following assertions.
* If the Response-element is signed then we can trust all the
* assertions, but we have no way to find what element is signed.<br /> */<br />»</p>
<p>It would be useful to add a quark attachement to nodes giving their signature<br />validation status, mainly request/response messages and assertions.</p> Lasso - Development #44 (Nouveau): Add to the doc the basic necessity of SAML securityhttps://dev.entrouvert.org/issues/442010-05-21T20:12:44ZBenjamin Dauvergne
<p>We can add lot of verification between request/response (that the ID match,<br />that the reponse is qualified toward the SP, etc....), but there will always be<br />thing we cannot verify inside Lasso, like the IP of the client (if the IdP add<br />it as a verification means to the AuthnResponse) or if the notBefore, notAfter<br />attribute are respected (we are not sure of the time at the SP).</p>
<p>We should explicitely mention all those things that the SP could and should<br />verify aroun SAML exchanges but that are not in the scope of Lasso. It should<br />eventually be a section of the documentation.</p>