0

Essayer de mettre en place une vérification personnalisée de l'utilisateur comme suit:Que se passe-t-il lorsque vous appelez UserPrincipal.Current.GivenName à partir d'un compte non-AD?

currentSessionUser = new User() //Nope, lets pull information from the Active Directory 
{ 
    FirstName = UserPrincipal.Current.GivenName, 
    LastName = UserPrincipal.Current.Surname, 
    Username = UserPrincipal.Current.SamAccountName, 
    AccountState = 0 
}; 

Qu'advient-il lorsque votre client est un compte non-AD ou, par exemple, un appareil mobile?

Comment attraper des erreurs ici?

+0

La propriété « actuelle » SID prend utilisateur en cours de processus \ fil jeton et informations requête à partir d'AD via le protocole LDAP en cas de compte AD ou de la machine locale en utilisant le protocole WinNT si elle est compte local. Si le SID du compte ne peut pas être trouvé, il renvoie NoMatchingPrincipalException. Si les informations SID ne peuvent pas être récupérées, la fonction lancera PrincipalOperationException. J'ai des doutes que S.DS.AM est pris en charge sur les appareils mobiles (même sur Windows Phone) – oldovets

+0

Donc, la vérification des valeurs NULL dans la propriété actuelle serait le meilleur moyen de gérer les périphériques non AD? Je ne suis pas trop préoccupé par le fait de manipuler les appareils mobiles - plus de dispositifs de verrouillage qui ne peuvent pas être authentifiés par un simple contrôle de nom d'utilisateur. – Bitz

+0

Je peux prétendre que si vous exécutez le processus sous le compte local sur un ordinateur Windows et que vous appelez la propriété 'Current', la plupart des valeurs auront des valeurs nulles (UserPrincipal.Current.SamAccountName sera défini) – oldovets

Répondre

0

Pour attraper correctement l'exception qui peut être thrown- PrincipalServerDownException Vous avez juste besoin de résumer la région qui tente d'interroger le UserPrincipal dans un bloc catch pour le type d'exception mentionnée ci-dessus.

try 
    { 
     u = new User 
     { 
      FirstName = UserPrincipal.Current.GivenName, 
      LastName = UserPrincipal.Current.Surname, 
      Username = UserPrincipal.Current.SamAccountName, 
      Guid = UserPrincipal.Current.Guid.ToString(), 
      CanEditHidData = true, 
      CanEditQaData = true, 
      AccountState = 0 //0=Unlocked 1=HigherPrivs Privs 2=Locked 
     }; 
     return u; 
    } 
    catch (PrincipalServerDownException e) 
    { 
     u = new User 
     { 
      FirstName = "Guest", 
      LastName = "Account", 
      Username = "guest", 
      Guid = Guid.Empty.ToString(), 
      CanEditHidData = false, 
      CanEditQaData = false, 
      AccountState = 3 //0=Unlocked 1=HigherPrivs Privs 2=Locked 3=Guest 
     }; 
     ViewBag.ErrorMessage = e.Message; 
     View("Error"); 
     return u; 
    }