La compréhension de la WCF de l'Authentification Windows
J'ai un service à l'authentification windows. En utilisant le code suivant, je peux obtenir les Fenêtres de l'Identité de l'utilisateur (en utilisant le client utilise le service.
String currentUser = OperationContext.Current.ServiceSecurityContext.WindowsIdentity.Name;
La configuration du serveur est:
<binding name="messageSecurity">
<security mode="Message">
<message clientCredentialType="Windows"/>
</security>
</binding>
J'ai aussi lu que dans le serveur, c'est à l'aide de Kerberos pour que cela fonctionne.
Maintenant, j'essaie de comprendre son importance dans notre réseau d'entreprise. Dans le bureau, les utilisateurs se connectant à leurs postes de travail à l'aide de leurs informations d'identification active directory. Notre service est hébergé dans un serveur windows nommé “SERV1” .
-
Est seulement les utilisateurs qui ont accès (login) pour “SERV1” peuvent accéder à ce service? Ou à tous les utilisateurs qui sont en mesure de vous connecter au réseau de bureau (de poursuivre des informations d'identification active directory) sera en mesure de consommer le service?
-
Est-il un moyen de s'assurer que seuls les CIO a approuvé des demandes sera l'accès au service, en gardant le service windows authentifié?
-
Est-ce à cocher authentification de se produire pour chaque opération de service d'appels ou uniquement pour le premier appel?
-
Est-il possible que le service sera en mesure de connaître les informations d'identification windows de l'utilisateur?
Remarque: Ce que je comprends, c'est WindowsAuthentication peut être comparé à un fournisseur d'appartenances - fournissant un nom d'utilisateur et le mot de passe à partir d'un emplacement centralisé. Il peut être comparé à ASP.Net Fournisseur d'appartenances ou de l'Active Directory du Fournisseur d'appartenances.
Pour en savoir plus:
-
ASP.NET Active Directory Fournisseur d'appartenances et SQL Profil Fournisseur
-
http://www.theserverside.net/tt/articles/showarticle.tss?id=ClaimsBasedSecurityModel
Merci. J'espère que le lien est pour ma deuxième question. Pourriez-vous svp répondre à d'autres questions? Aussi (pour la question #2), je ne cherche pas à restreindre l'accès en fonction de leur rôle; mais le client.
OriginalL'auteur Lijo | 2012-03-06
Vous devez vous connecter pour publier un commentaire.
Oui - c'est le point de l'utilisation des informations d'identification Windows dans un service WCF. Seuls les utilisateurs qui ont un compte de domaine dans ce domaine Active Directory (ou un domaine distinct qui a une bidirectionnel complet-relation de confiance avec votre nom de domaine) seront en mesure d'accéder au service.
La WCF limite de sécurité est le de Domaine Active Directory - pas un serveur particulier.
Comment sont ces "CIO-approuvé" applications différentes des autres? WCF est accessible par comptes - typiquement des comptes d'utilisateur. Vous pouvez limiter les comptes ont accès à votre service (par exemple en exigeant de ces comptes pour être membre d'un groupe d'ANNONCES ou de quelque chose). Vous ne pouvez pas vraiment "limite" basé sur les applications (uniquement si ces applications utilisent spécifique au niveau de l'application des comptes pour accéder à votre service WCF)
Dépend de votre service si vous utilisez un par appel service WCF, puis la case qui se passe pour chaque appel. Si vous utilisez un par session service WCF avec "la négociation de la sécurité" est activée, la validation se fait une fois au début de la session et non plus jusqu'à la fin de la session.
Oui -
OperationContext.Current.ServiceSecurityContext.WindowsIdentity
EST les informations d'identification Windows (Windows identity) utilisé pour appeler votre service. C'est beaucoup plus que juste le nom de l'utilisateur.....il y a N dans Windows pour récupérer le mot de passe utilisateur.
Je vous remercie. Qui fait de notre discussion complète. Je le marquer comme réponse.
désolé, non, je n'ai pas d'expérience avec authentification basée sur les revendications. Mais s'il vous plaît arrêter de m'envoyer ces demandes, OK? Si c'est intéressant, WCF question à laquelle je peux vous aider avec - je vais voir, et je serai heureux d'y répondre.
OriginalL'auteur marc_s
Ce n'est pas un authentification tâche, c'est un autorisation tâche. Kerberos est responsable de s'assurer que l'utilisateur est authentifié (le nom que vous obtenez pour eux, c'est leur nom). LDAP gère autorisation. Dans un contexte Windows, cela signifie que l'utilisateur doit être membre de certaines autorisés à accéder au serveur de trucs de groupe (et le service doit vérifier que c'est le cas).
Applications? Pas vraiment. C'est-à-dire, il existe deux types de authentifié dans Active Directory: les utilisateurs et les ordinateurs. Mais pourquoi est-il question de l'application en cours d'exécution, si l'utilisateur de faire la course a l'autorisation de se connecter au service? En d'autres termes, vous ne pouvez pas empêcher quelqu'un d'utiliser leur propre code pour faire exactement ce que votre code.
Ne compte pas. L'authentification fonctionne, non? Ce qui se passe réellement est que l'application est passée un billet de prouver que l'utilisateur est déjà authentifié (pour le KDC, le serveur active directory).
Oui, le contexte de sécurité est, dans un certain sens, l'utilisateur de l'ensemble des informations d'identification. Ils pourraient aussi avoir d'autres informations d'identification, mais vous pouvez obtenir ceux qui sont trop.
OriginalL'auteur Borealid