2009-07-16 5 views
15

Ich baue die Active Directory-Authentifizierung in meine Anwendung ein und plane, die internen Konten meiner Anwendung mit der Domänen-SID eines Benutzers zu verknüpfen. Es ist einfacher für mich, mit dem String-Format der Sid als ein Byte-Array zu arbeiten, also plante ich, es in der Datenbank als String zu speichern. Wie lang sollte ich das Feld machen, um sicherzustellen, dass SIDs nicht abgeschnitten werden?Wie groß ist die maximale Länge einer SID im SDDL-Format?

Antwort

27

hatte ich die gleiche Frage, und ich glaube, die richtige Antwort ist:

SID als string: 184 Zeichen oder varchar (184) in SQL Server

SID als String von Hex-Ziffern: 136 Zeichen oder varchar (136) in SQL Server

SID als binäres: 68 Bytes oder varbinary (68) in SQL Server

ich nicht der Mathematik selbst überprüft habe, aber das hier verwendete Technik sieht gültig: https://groups.google.com/d/msg/microsoft.public.dotnet.security/NpIi7c2Toi8/31SVhcepY58J

zum Programm finden Sie von Russell Mangel am 19. August geschrieben 2006, auch hier als Referenz kopiert:

Also die Antwort auf meine Frage ist:

varbinary (68) - rein binäre varchar (136) - (68 * 2) = hexstring varchar (184) - SID String

ich schrieb ein kleines Programm zu testen, Hinweis, dass .NET 2.0 SecurityIdentifier.MaxBinaryLength hat, ich wusste nichts davon.

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); 

Ergebnisse ------------------------------

SID Min. Anzahl Bytes: 8 SID min. num Bytes 68 Max Länge des SID in String-Format: 184 S-1-281474976710655-4294967295-4294967295-4294967295-4294967295-4294967295- 4294967295-4294967295-4294967295-4294967295-4294967295-4294967295 -4294967295-4294967295-4294967295 -4294967295