Od lutowego CTP dostępne są ziarniste polityki haseł - czyli możliwość przypisywania polityk haseł do użytkowników/ grup globalnych. Główne cechy nowych polityk to:

  • Polityki Haseł są oparte o obiekty PSO (Password Sttins Objects)
  • Obiekty PSO są połączone z kontami użytkowników/ grup globalnych za pomocą mechanizmu forward/backlink, podobnie jak członkostwo w grupie.
  • Wiele obiektów PSO może być podłączonych do jednego obiektu użytkownika, jednak nie będą scalane – tylko jedna polisa będzie aktywna.
  • Jeśli wiele obiektów jest podpięty do użytkownika, wygrywa ten który ma najniższy atrybut precedence. Jeśli atrybut precedence jest taki sam w kilku polisach, wygrywa ta która ma najniższy GUID.
  • Polityki przechowywane są w CN=System,CN=Password Settings Container
  • Nie przewiduję się wsparcia dla polis na OU w Windows Server Longhorn

Więcej informacji dotyczących polityk można znaleźć pod tym adresem..

Jako że w obecnej wersji nie istnieje GUI do edycji tych polityk haseł, pzrygotowałem przykładowy skrypt który tworzy obiekt Polityki, wszystkie wymagane atrybuty, oraz podpina polityke pod konto użytkownika - skrypt znajduję się w załączniku. Oczywiście podobny efekt można uzyskać korzystając z wbudowanego ADSIEDIT.

#pobieramy kontener Haseł
$ou=[ADSI]"LDAP://CN=Password Settings Container,CN=System,DC=contoso,DC=local"
#tworzymy obiekt polityki haseł
$policy = $ou.Create("msds-passwordsettings","cn=myPolicy")
$policy.Put("msDS-PasswordSettingsPrecedence","10") #prirytet mniejszy->lepszy
$policy.Put("msDS-PasswordHistoryLength","15")
$policy.Put("msDS-MinimumPasswordLength","12")
$policy.Put("msDS-MinimumPasswordAge","-864000000000") # 1dzień
$policy.Put("msDS-MaximumPasswordAge","-36288000000000") # 42dni
$policy.Put("msDS-LockoutThreshold","0")
$policy.Put("msDS-LockoutObservationWindow","-18000000000") # 8minut
$policy.Put("msDS-LockoutDuration","-18000000000") #8minut
$policy.Put("msDS-PasswordComplexityEnabled",[bool]0)
$policy.Put("msDS-PasswordReversibleEncryptionEnabled",[bool]0)
$policy.SetInfo()
#Dopisanie polisy do użytkownika
$policy.Put("msDS-PSOAppliesTo","CN=peki,CN=Users,DC=contoso,DC=local")
$policy.SetInfo()