Utilisation du code PrincipalContext
qui se trouve derrière un service WCF. Le service WCF emprunte l'identité pour permettre une authentification de type "pass-through".System.DirectoryServices.AccountManagement.PrincipalContext et Usurpation d'identité dans un service WCF
Alors que tout ce que je fais avec Active Directory (principalement l'espace de noms System.DirectoryServices.Protocols
) fonctionne correctement dans ce scénario, pour une raison quelconque, les classes de System.DirectoryServices.AccountManagement lancent un ajustement. Exemple de code qui échoue:
PrincipalContext context = new PrincipalContext(ContextType.Domain, domainName);
UserPrincipal user =
UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, UserName);
Quand je fais l'appel à FindByIdentity
, je reçois un COMException: « Une erreur d'opération a eu lieu ». Les appels à la PrincipalContext
échouent également, par exemple .:
string server = context.ConnectedServer;
Les deux OperationContext.Current.ServiceSecurityContext
et Thread.CurrentPrincipal.Identity
montrent l'usurpation d'identité fonctionne correctement. Et, comme je le dis, d'autres tâches AD dans S.DS.P fonctionnent bien.
Si je définis explicitement les informations d'identification sur le PrincipalContext
, tout fonctionne. Par exemple:
PrincipalContext context =
new PrincipalContext(ContextType.Domain, domainName, user, password);
UserPrincipal user =
UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, UserName);
Maintenant, tout fonctionne. Mais je ne connaîtrai pas le nom d'utilisateur et le mot de passe de l'appelant; Je dois compter sur l'usurpation d'identité.
Des idées sur ce qui causerait le problème que je vois?
Merci d'avance! James
Je ne suis pas sûr de ce que vous voulez dire par un spn pour la piscine de l'application; J'utilise un pool d'applications dédié à ce service, mais je ne sais pas exactement ce qu'est un spn. Qu'est-ce que vous devez définir dans AD pour la délégation? Je vais vérifier le dernier –
spn = Nom du service principal – ecounysis