Какова максимальная длина SID в формате SDDL
Я создаю проверку подлинности Active Directory в своем приложении, и я планирую связать внутренние учетные записи моего приложения с SID домена пользователя. Мне проще работать со строковым форматом sid, чем с массивом байтов, поэтому я планировал сохранить его в базе данных в виде строки. Как долго я должен сделать поле, чтобы убедиться, что SID не будет усечен?
1 ответов
у меня был тот же вопрос, и я считаю правильный ответ:
- ID как строка: 184 символа или varchar (184) в SQL Server
- SID как строка шестнадцатеричных цифр: 136 символов или varchar (136) в SQL Server
- SID как двоичный: 68 байт или varbinary(68) в SQL Server
Я сам не проверял математику, но используемая здесь техника выглядит действительный: https://groups.google.com/d/msg/microsoft.public.dotnet.security/NpIi7c2Toi8/31SVhcepY58J
см. программу, написанную Расселом Мангелом 19 августа 2006 года, также скопированную здесь для справки:
Итак, ответ на мой вопрос:
varbinary (68)-- чистый двоичный
varchar(136) -- (68*2) = hexString
varchar (184) -- Sid StringЯ написал небольшую программу для тестирования, обратите внимание, что .NET 2.0 имеет Идентификатор securityidentifier.MaxBinaryLength, I не знал об этом.
Console.WriteLine("SID Min. num Bytes: {0}", SecurityIdentifier.MinBinaryLength); Console.WriteLine("SID Max. num Bytes: {0}", SecurityIdentifier.MaxBinaryLength); Byte[] bytes = new byte[SecurityIdentifier.MaxBinaryLength]; for (Int32 i = 0; i < bytes.Length; i++) { bytes[i] = 0xFF; } bytes[0] = 0x01; // Must be 1 bytes[1] = 0x0F; // Max 15 (base10) SecurityIdentifier sid = new SecurityIdentifier(bytes, 0); String sidString = sid.ToString(); Console.WriteLine("Max length of SID in String format: {0} ", sidString.Length); Console.WriteLine(sidString);
результаты
SID Min. num Bytes: 8 SID Max. num Bytes: 68 Max length of SID in String format: 184 S-1-281474976710655-4294967295-4294967295-4294967295-4294967295-4294967295- 4294967295-4294967295-4294967295-4294967295-4294967295-4294967295- 4294967295-4294967295-4294967295-4294967295