HowDoWeDoProvisioning

L'application agent hobo d'authentic2 écoute les signaux pre_{save/delete} des utilisateurs, rôles, relations de parenté entre rôles et relation d'enrôlement entre utilisateurs et rôles. En fin de requête un thread est lancé qui génère des messages de type "notify" poussé en AMQP (via RabbitMQ) pour les autres services.

Les agents reçoivent et agissent en conséquence.

La clé unique de communication, c'est l'uuid pour les rôles et les utilisateurs, néanmoins pour des raisons de reprise si l'uuid n'est pas trouvé on essaie de retrouver via le slug ou le nom dans le cas des rôles.

Dans les applications utilisant django-mellon, le mapping entre utilisateur NameID est stocké via le modèle UserSAMLIdentifier, le username est aussi généré en tronquant le NameID à 31 caractères; et c'est mappé sur un champ uuid d'un nouveau modèle Role (class Role(Group)) pour les rôles.

Par ailleurs, lors du SSO, l'assertion contient un attribut role-slug qui contient la liste des uuid de rôles.