Comme vous le voyez, la fédération ne réduit pas nécessairement le besoin de provisionnement. C'est un aperçu important qui n'est pas immédiatement évident.
Il y a plusieurs façons d'aborder ce dont:
- L'utilisation d'un méta ou un produit de répertoire virtuel ou
- En utilisant « l'approvisionnement JIT » (AKA « provisionnement dynamique » ou « sur le approvisionnement de vol ").
Permettez-moi d'expliquer ce dernier. Cette solution, which I also describe on my blog, comprend deux STS, un IP-STS et un RP-STS. Le premier authentifie uniquement l'utilisateur; le second est spécifique à votre application et sait quelles revendications sont nécessaires pour autoriser les utilisateurs de ce système. L'IP-STS ne peut pas émettre ces attributs spécifiques à l'application, ce qui obligerait votre service d'annuaire d'entreprise à être encombré de toutes sortes d'informations spécifiques à l'application. Au lieu de cela, les attributs pour les utilisateurs qui sont gérés dans ce magasin et émis par l'IP-STS sont de nature générale et applicables à l'utilisateur, quelle que soit l'application qu'ils utilisent. Après s'être authentifié auprès de l'IP-STS et avoir obtenu des revendications d'identité uniquement, le jeton est transmis au RP-STS. Ce service de jeton est étroitement lié à votre application. Il sait de quelles revendications les utilisateurs ont besoin pour accéder à différentes ressources. Il peut convertir les revendications d'identité uniquement en celles qui sont nécessaires pour prendre cette décision de contrôle d'accès. Ainsi, le RP-STS est un transformateur de revendications qui mappe les revendications liées aux identités dans des revendications spécifiques aux applications.
Comment le RP-STS met-il à disposition l'utilisateur? Supposons qu'un nouvel employé soit créé, comme dans votre exemple ci-dessus. Lorsque l'utilisateur accède à votre application, il sera renvoyé au RP-STS. Il ne sera pas connecté, il sera donc renvoyé à l'IP-STS. L'administrateur du système a créé un compte pour lui, il pourra donc se connecter, et son navigateur le ramènera au RP-STS. Le RP-STS va déchiffrer le jeton, obtenir l'identifiant de l'utilisateur (email, PPID, etc.), et voir qu'il ne sait pas qui est l'utilisateur. Ainsi, le RP-STS approvisionnera l'utilisateur. Il le fera en affichant une page Web, par exemple. Il peut collecter des informations qui l'aident à déterminer le rôle de cet utilisateur lors de l'accès au RP. Après cela, l'utilisateur sera approvisionné (c'est-à-dire, un enregistrement sera créé dans sa base de données contenant les valeurs de réclamation pour lui), et le RP-STS émettra un jeton spécifique à votre application et le redirigera là-bas. L'application ne saura pas qu'il a été provisionné; il utilisera simplement les revendications comme il le fait toujours. (Voir pourquoi je l'ai appelé le provisionnement JIT?)
Que faire si les choses changent après que l'utilisateur a été provisionné? D'ACCORD. Imaginez ceci: l'utilisateur a été créé dans le magasin d'annuaires il y a longtemps et a été approvisionné comme décrit ci-dessus dans le RP-STS et il utilise le système avec bonheur depuis longtemps. Ensuite, il y a un changement de politique qui oblige les utilisateurs de votre application à accepter de nouveaux termes et conditions (T & Cs). La prochaine fois que l'utilisateur se connectera à l'application, il sera redirigé vers le RP-STS, vers l'IP-STS, il s'authentifiera et sera renvoyé à votre RP-STS. À ce stade, il remarquera que l'utilisateur doit accepter le nouveau T & Cs, de sorte qu'il montrera à l'utilisateur une page Web et obtenir leur accord. Par la suite, le RP-STS émettra un jeton de sécurité et le redirigera vers votre application. Votre application traitera, comme toujours, les revendications et fera ce qu'elle doit faire pour autoriser l'accès. Il ne saura pas et ne se souciera pas que l'utilisateur ait été simplement "réapprovisionné". Vous pouvez également conserver les modifications de synchronisation entre le magasin d'identités (c'est-à-dire votre annuaire d'entreprise) et le magasin de revendications de votre RP-STS à l'aide d'un produit tel que ILM (ou FIM). En fonction de votre système, un produit qui effectue une synchronisation de canal arrière comme celle-ci pourrait être plus approprié.
BTW, ce ne sont pas des questions "boiteuses"! Il y a des questions très vives qui reflètent une pensée profonde et une réflexion intelligente sur un problème très compliqué. D'autres que vous aurez besoin de répondre comprennent:
- Comment les administrateurs de votre application sont mis à jour sa politique (par exemple, changer le T & Cs)? Quelle interface utilisateur/API devez-vous créer? L'interface utilisateur est-elle intégrée à celle utilisée pour gérer la politique IP-STS?
- What sort of trust relationships must exist to make such a system work?
- Que faire si le sujet n'utilise pas le profil passif? Que faire s'il utilise le profil actif et/ou s'il n'y a pas d'interface utilisateur?
- Comment et où se trouvent les clés? Quelles autorisations sont nécessaires pour utiliser ces clés?Comment sont-ils revus, distribués, et comment les administrateurs système sont-ils alertés lorsqu'ils arrivent à expiration?
Ce truc est vraiment facile à faire lors de réunions de groupes d'utilisateurs et lors de conférences, mais en réalité c'est très avancé. Si vous avez d'autres questions, n'hésitez pas à les poster ici ou get in touch w/ me directly.
@blowdart merci pour la réponse, vraiment apprécier la perspicacité. Je ne comprends pas très bien la deuxième partie tho, comment laissez-vous votre système savoir à travers les revendications qu'un utilisateur (Bob) candofoobar? c'est-à-dire que la revendication dans le jeton doit revenir à votre RP avec claimtype = CanDoFooBar value = true. Si c'est possible? Et comment dites-vous à vos sts que c'est la valeur pour Bob? – roundcrisis
Le jeton contiendrait des revendications. Si vous laissez le serveur d'identité décider, le jeton émis par celui-ci contiendra une réclamation à cet effet, et bien sûr l'identité de l'utilisateur. Le STS envoie donc une réclamation à propos de l'utilisateur Bob qui contient urn: candofoobar = true. C'est à vous de voir si vous le croyez ou non. S'il s'agit d'un rôle que vous attribuez uniquement à l'identité de l'utilisateur, utilisez-le comme clé primaire dans votre table de rôles et utilisez la transformation des revendications pour ajouter ces rôles lorsque le jeton est traité pour la première fois. – blowdart