2009-09-30 4 views
9

Je veux être en mesure de me connecter en toute sécurité à un système sans avoir à taper le nom d'utilisateur mot de passe d'un Windows PC sur le répertoire actif. L'idée est que je (le logiciel client, fonctionnant sur une machine Windows connectée) ai une sorte de jeton qui prouvera au serveur que je suis qui je dis que je suis (le serveur parle à AD pour vérifier le jeton et mon identité identité). Est-ce possible avec .net 3?Puis-je utiliser l'authentification par jeton avec le répertoire actif?

Langue utilisée en C#.

+0

Demandez à l'application d'emprunter l'identité d'un principal de domaine créé à cette fin. –

+0

Cherchez-vous spécifiquement une réponse de programmation, car le paquetage Kerberos peut être spécifiquement configuré pour activer ce type de comportement. –

Répondre

0

Si vous accédez à des ressources réseau (partages de fichiers, serveurs SQL, etc.), l'application les exécutera automatiquement en tant qu'utilisateur en cours d'exécution. Voulez-vous faire quelque chose de plus spécifique? Si vous travaillez dans un domaine, les autorisations doivent naturellement vous suivre pour toutes les ressources réseau que vous utilisez.

Vous pouvez utiliser .NET pour emprunter l'identité d'autres utilisateurs et effectuer des tâches comme eux, mais sans prendre d'autres mesures, vous agirez au nom de l'utilisateur sans les obliger à se connecter à nouveau.

0

Sur les machines Windows chaque thread d'application s'exécute sous un jeton de sécurité, par défaut c'est le jeton de l'utilisateur actuel, donc si vous voulez lire un fichier sur la machine ou le réseau, votre application ira avec votre jeton, vous pouvez exécuter des applications comme un autre utilisateur ou service ou vous pouvez usurper l'identité de votre code pour agir comme quelqu'un d'autre. Si vous l'utilisez en tant qu'application asp.net, Internet Explorer échangera les données en arrière-plan avec iis (dans votre intranet) afin que le serveur sache qui vous êtes, mais par défaut ne fonctionnera pas sous vos informations d'identification, cela peut être modifié par web.config

3

Si j'ai bien compris la question, il semblerait que Kerberos soit exactement ce que vous recherchez dans cette instance. L'authentification Kerberos (si elle est prise en charge par votre environnement cible) permettrait cette authentification par ticket. Pour un aperçu de la façon dont authentification Négocié avec Kerberos fonctionne Je recommande la référence MSDN sur Brokered Authentication with Kerberos:

Brokered authentication with Kerberos http://i.msdn.microsoft.com/Aa480562.ch1_brokauthkerb_f02(en-us,MSDN.10).gif

En ce qui concerne le code C# soutien, je recommanderais ce CodeProject article qui se concentre sur MS Web Services, mais pourrait fournir la base pour l'utiliser dans d'autres scénarios.

10

Je pense que vous devriez vraiment regarder l'authentification basée sur la revendication.

Microsoft a fait beaucoup récemment. Vous avez probablement entendu parler de Geneva Server (officiellement appelé ADFS 2.0 maintenant) et de Geneva Framework (officiellement appelé Windows Identity Foundation maintenant). L'idée est que l'authentification se fait à un point/serveur central (le Geneva Server ou un serveur de jeton de sécurité (STS) en général), un jeton de sécurité (basé sur SAML 2.0) est attribué à l'utilisateur authentifié qu'il présente à la ressource il/elle veut accéder. L'authentification peut être effectuée par différents moyens, y compris nom d'utilisateur/mot de passe, carte à puce, certificats, ou - dans votre cas - en traduisant un jeton déjà présent comme l'authentification Windows (appelée Windows Integrated Authentication).

Le jeton est basé sur SAML 2.0 (standard de l'industrie qui est important pour une bonne interopérabilité avec les produits STS d'autres fournisseurs). Il contient des revendications concernant une personne qui sont utilisées dans une application ou une ressource (y compris les services Web) pour effectuer l'autorisation (octroi de droits). À cette fin, il est bien sûr essentiel que la demande fasse confiance aux revendications du STS. D'un autre côté, l'application n'a besoin d'aucune authentification. Le Framework de Genève est une bibliothèque (.NET) utilisée pour traiter des jetons dans une application. C'est assez simple à utiliser.

Pour plus d'informations, veuillez consulter les livres blancs qui donnent une bonne introduction à ce sujet. Le site officiel est here.

Bien sûr, il ya beaucoup plus de problèmes qui sont abordés avec ces concepts qui est vraiment la partie intéressante à mon humble avis. Cela inclut l'authentification unique (SSO), l'authentification unique fédérée (sur plusieurs limites d'organisation), la délégation (une application utilise un service Web avec vos droits d'utilisateur). J'espère que cette info vous aide!

Vive

PS: Bien sûr, ce n'est pas du tout un problème de Microsoft. Il existe d'autres produits STS tels que Sun OpenSSO, Ping Identity et Thinktecture Identity Server qui offrent des fonctionnalités similaires. Je viens de mettre en évidence les choses Microsoft parce que c'est une bonne interopérabilité avec AD et l'authentification Windows mentionné dans la question.

+0

Les livres blancs sont mentionnés: http://download.microsoft.com/download/7/D/0/7D0B5166-6A8A-418A-ADDD-95EE9B046994/Introducing_Geneva_Beta1_Whitepaper.pdf et http://download.microsoft .com/Télécharger/7/D/0/7D0B5166-6A8A-418A-ADDD-95EE9B046994/GenevaFramework-WhitepaperForDevelopers-Beta2.pdf – Macross

Questions connexes