Aracılığıyla paylaş


Asıl Adlar

İstemcinin bir sunucu programıyla karşılıklı olarak kimliği doğrulanmış bir oturum oluşturması için sunucunun beklenen asıl adını sağlaması gerekir. Kerberos gibi bazı protokoller, kimliği doğrulanmış tüm oturumlar için doğru bir sunucu asıl adı gerektirir. Sorumlu, güvenlik sisteminin tanıdığı bir varlıktır. Buna insan kullanıcıları ve sistem hizmetleri dahildir. Tüm asıl adlar, belirli bir güvenlik destek sağlayıcısı (SSP) için benzer biçimdedir. SSP, güvenlik doğrulaması gerçekleştiren bir yazılım modülüdür. Daha fazla bilgi için bkz. SSPI Mimariye Genel Bakış. Bir güvenlik sağlayıcısı, tekdüzenliği korumak için sistem hizmetlerine genellikle kullanıcılarla benzer adlar verir. Bazı güvenlik sağlayıcıları altında sistem hizmetlerinin asıl adı olmayabilir.

Sunucu, RpcServerRegisterAuthInfo işlevini kullanarak güvenlik sağlayıcısı için asıl adını kaydeder. Her güvenlik sağlayıcısı için yalnızca bir sunucu asıl adı kullanılabilir. Birden fazla ad kayıtlıysa, bir ad rastgele seçilir ve kullanılır. SSP, asıl adın biçimini belirler. Örneğin, bir sistem hizmeti için Kerberos/Negotiate SSP'leri yaklaşık olarak aşağıdaki gibi görünür: machine_name$@childdomain.parentdomain1.parentdomain2.COM.

Asıl adlar oluşturmak için önerilen yordam, dizelerden asıl adı bir araya getirmek yerine belgelenmiş API'leri (DsMakeSpn işlevi gibi) kullanmaktır. Belgelenmiş API'lerin kullanılması, farklı dağıtım ortamları arasındaki taşınabilirliği artırır ve hata olasılığını ortadan kaldırır.

Yanlış bir asıl ad belirtmek, istemcinin ve sunucunun kimliği doğrulanmış bir oturum oluşturmasını engelleyebilir. SCHANNEL SSP, iki biçimden birinde asıl adları alır:

  • İlk SCHANNEL asıl adı formu, msstd formudur. msstd biçimindeki adlar genellikle msstd:servername@serverdomain.comdesenini izler. Bu, e-posta adı özelliği olarak adlandırılır. Sertifika bir e-posta adı özelliği içeriyorsa ve at işaretini (@) içeriyorsa, asıl ad msstd:email name olur. Aksi takdirde ortak ad özelliğini içermelidir. İç ters eğik çizgi, dize bağlamalarında olduğu gibi ikiye katlanmıştır.
  • İkinci SCHANNEL asıl adı formu, tam formudur. Bu, açılı ayraçlarla sınırlanmış ve ters eğik çizgilerle ayrılmış RFC1779 uyumlu adlar dizisidir. Genellikle tamsic:\<\Authority\SubAuthority\.....\Person> veya fullsic:\<\Authority\SubAuthority\.....\ServerProgram>desenini izler.

Ad sertifikayla eşleşmiyorsa ERROR_ACCESS_DENIED döndürülür. Ad biçimi geçersizse, SCHANNEL SSP kodu ERROR_INVALID_PARAMETER döndürür.

Sunucunun asıl adını sorgulamak için, uygulamalar RpcMgmtInqServerPrincNameçağırabilir. Bu, asıl adı tutmak için null olarak sonlandırılan bir dize ayırır. Sonlanmadan önce uygulamanızın bu dizenin kaplayan belleği serbest bırakması için rpcstringfreeçağırması gerekir.

Sunucu adını bu şekilde sorgulama güvenli değildir ve bundan kaçınılmalıdır. Sunucu kimlik doğrulaması için istemci programı hangi sunucuya bağlanacağını bilmeli ve sunucu asıl adını sıfırdan oluşturmalıdır.