Kerberos, délégation et comment le faire correctement?
J'en ai deux distincts maison des applications qui ont besoin de communiquer entre eux. L'un est une application frontend (asp.net en fait, l'autre est une interface backend pour une application de comptabilité. L'interface d'administration n'a pas été créé spécifiquement pour cette interface est une interface générique que de nombreuses autres applications utiliser pour l'intégrer à notre produit.
Pour la commodité des utilisateurs, nous souhaitons fournir une Authentification Windows dans notre application frontend. Cela signifie, cependant, que nous devons transmettre les informations d'identification sur l'application backend qui a de les vérifier.
Nous ne souhaitons pas mettre en place notre frontend comme "de confiance" de l'application en arrière-plan qui peut s'authentifier en tant qu'utilisateur. Si l'interface était d'être piraté, il serait alors aussi de compromettre le système backend.
Si je comprends bien, une façon de le faire avec l'Authentification Windows est la Délégation Kerberos. Cependant, cela exige d'être explicitement activé pour l'utilisateur qui doit être délégué, et la machine qui ne la délégation (le serveur avec notre frontend). Par défaut, ces options sont désactivées dans Active Directory, et je soupçonne que de nombreux administrateurs système ont leurs réserves à propos de les allumer pour tous leurs utilisateurs.
Aussi, je ne suis pas vraiment sûr que c'est ce que la Délégation Kerberos était destinée. Je n'ai pas besoin de notre frontend pour emprunter l'identité de l'utilisateur qui se connecte. J'ai juste besoin de prouver que cet utilisateur est authentifié lui-même pour moi.
Comment le feriez-vous?
Kerberos est pour cela - par exemple les Utilisateurs de notre réseau local de se connecter à un serveur web qui à son tour se connecte à un Serveur SQL en utilisant les informations d'identification des utilisateurs. Cela nous permet d'avoir par table/champ permissions en fonction de l'utilisateur. La difficulté ici est que les deux systèmes doivent être conscients de la délégation Kerberos - le site web pour obtenir les différents jetons et le back-end pour les valider par rapport à la même autorité. Je ne crois pas que ce sera possible directement, mais vous pouvez être en mesure de mettre en place une délégation conscient de proxy entre l'INTERFACE utilisateur et le back-end.
OriginalL'auteur Vilx- | 2009-10-22
Vous devez vous connecter pour publier un commentaire.
Je ne suis pas clair ce que vous pouvez et ne pouvez pas faire avec votre cas d'utilisation, mais je peux répondre à la question ce que la Délégation Kerberos était destinée.
D'abord, parlons de ce que Kerberos n'préalable à la délégation. Il est important de comprendre cette partie parce que c'est subtil.
C'est authentification forte afin de ne pas permettre à un homme-au-milieu d'une attaque dans n'importe quelle forme. Si correctement configuré un point final peut garantir qu'ils ne seront pas compromis. Au niveau du nom du service (si vous vous connectez à des services IIs sur une machine, il est différent de celui de la connexion à SQL Server sur la même machine). Il fait un usage intensif de modernes des techniques de chiffrement et nécessite l'utilisation de certificats de sécurité. Les détails du protocole d'authentification sont compliquées et pas la peine d'aller maintenant, mais il concerne environ 20 différentes étapes distinctes de la confirmation entre les deux authentification des points d'extrémité et le serveur d'authentification (dans windows le Contrôleur de Domaine est le serveur d'authentification).
Donc ce que le diable est la délégation?
Cela vous permet d'agir comme un "homme du milieu" -- toutefois, de nombreux paramètres doivent être explicitement de l'installation, les certificats installés, etc pour permettre ce travail. Il est loin d'être simple. (EDIT: Voici une autre SORTE de réponse sur les détails - https://stackoverflow.com/a/954154/215752)
Ainsi, par exemple, vous pourriez avoir quelqu'un de s'authentifier sur un site web et ensuite avoir le .NET code connecter à un Serveur SQL server QUE LE MÊME UTILISATEUR de lire les données avec les droits de l'utilisateur.
Maintenant pour répondre à votre question, puisque je ne suis pas sûr de ce que vous voulez faire, je présente trois choix:
1) vous souhaitez Vous connecter à l'extrémité arrière du système que le MÊME utilisateur que celui qui l'authentification sur le site.
2) vous souhaitez Vous connecter à l'extrémité arrière du système en tant qu'utilisateur DIFFÉRENT de celui que l'authentification sur le site web (par exemple, un compte de service).
3) vous souhaitez Vous connecter à l'extrémité arrière du système en tant qu'utilisateur MÊME de temps en temps et en tant qu'utilisateur DIFFÉRENT des autres fois. (Par exemple, vous devez valider ceci est un utilisateur pour le back-end du système, mais que vous voulez pour effectuer de confiance actions comme un système de compte d'autres moments. C'est (dans mon expérience), l'utilisation la plus courante de cas.)
OriginalL'auteur Hogan
Voici un post décrivant la manière dont Kerberos fonctionne et comment le configurer.
ASP.NET le passage de l'Authentification Windows
opps Désolé trop tôt. Je pensais que c'était bizarre que deux des questions comme ça viendrait donc de très près.
OriginalL'auteur kemiller2002
En fait la délégation Kerberos est conçu exactement pour ce cas d'utilisation. Mais ici, le défi est de créer ce sur un système existant et avec l'ANNONCE des paramètres que vous ne voulez pas changer.
Un possible hack est d'avoir le Front-End suffit d'envoyer à l'utilisateur et au moment de l'authentification, mais le moteur peut interroger Active Directory Journaux d'Événements pour déterminer si l'utilisateur est authentifié à l'extrémité Avant. Cela vous oblige à utiliser le Journal des Événements WIndows API.et aussi jouer avec les paramètres du Journal des Événements dans les ANNONCES de journaux de la question de tickets de service. (MON souvenir, c'est que c'est la valeur par défaut)
-
Je ne peux pas imaginer que cela ne peut fonctionner de manière sécurisée.
OriginalL'auteur R V Marti