Какова максимальная длина SID в формате SDDL

Я создаю аутентификацию Active Directory в своем приложении, и я планирую связать внутренние учетные записи моего приложения с SID домена пользователя. Мне легче работать со строковым форматом sid, чем с байтовым массивом, поэтому я планировал сохранить его в базе данных в виде строки. Как долго я должен сделать поле для обеспечения того, чтобы SID не был усечен?

Ответы

Ответ 1

У меня был тот же вопрос, и я верю, что правильный ответ:

SID как строка: 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

Обратитесь к программе, написанной Russell Mangel 19 августа 2006 года, также скопированной здесь для справки:

Итак, ответ на мой вопрос:

varbinary (68) - чистый двоичный varchar (136) - (68 * 2) = hexString varchar (184) - строка SID

Я написал небольшую программу для тестирования, обратите внимание, что .NET 2.0 SecurityIdentifier.MaxBinaryLength, я не знал об этом.

Console.WriteLine("SID Min. num Bytes: {0}",
SecurityIdentifier.MinBinaryLength);
Console.WriteLine("SID Min. 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 Мин. num Байт: 8 SID Мин. num Байт: 68 Максимальная длина SID в формате String: 184 S-1-281474976710655-4294967295-4294967295-4294967295-4294967295-4294967295- 4294967295-4294967295-4294967295-4294967295-4294967295-4294967295 -4294967295-4294967295-4294967295-4294967295