SORU
3 Ocak 2010, Pazar


Varsayılan kimlik doğrulama ve ayrı gizleme DCOM kimliğe bürünme arama/kullanma

DCOM ile iki şey (işlem) elde etmek çalışıyorum

  1. Süreci geniş kimlik doğrulama Coınitializesecurity kullanarak ve parametre pAuthList ayarlayın.
  2. Gizleme arayan değiştirmek için kullanarak özel durumlar (COM çağırır) kimlik

Düşüncelerim:

  1. AFAIK auth bilgi yapısı tüm yeni COM aramaları için varsayılan kimlik doğrulama bilgilerini (RPC_C_AUTHN_WINNT için kullanıcı adı ve parola gibi) içerir. Bu yüzden işlemi yerine auth yapısında token bilgilerini COM tarafından kullanılmalıdır. Ancak, tüm COM/bağlantıları her zaman süreci' uygulanan öntanımlı yerine kimlik kullanarak aramalar

  2. Genellikle, bir CoSetProxyBlanket bir proxy için kimlik doğrulama bilgilerini değiştirmek için kullanabilirsiniz. Bu benim için çalışıyor. Benim soru şu olmalı ya ben token kendimi taklit ve COM arama fonksiyonu eğer çalışmak zorunda olmasın. Coınitializesecurity EOAC_DYNAMİC_CLOAKİNG uygulama çalışması gereken çeşitli MSDN makaleleri okudum. Ancak, benim elle COM çağrıları her zaman işlemi sunucu tarafında kimlik gösterir. "özellikleri

İstemci bu (Delphi) gibi görünüyor

var
authList : SOLE_AUTHENTICATION_LIST;
authidentity : SEC_WINNT_AUTH_IDENTITY_W;
authInfo : array[0..1] of SOLE_AUTHENTICATION_INFO;

pcAuthSvc : DWORD;
asAuthSvc : array[0..0] of SOLE_AUTHENTICATION_SERVICE;
Token : TJwSecurityToken;

begin
ZeroMemory( @authidentity, sizeof(authidentity) );

authidentity.User := 'Testbenutzer';
authidentity.UserLength := Length('Testbenutzer');
authidentity.Domain := '';
authidentity.DomainLength := 0;
authidentity.Password := 'test';
authidentity.PasswordLength := 4;
authidentity.Flags := SEC_WINNT_AUTH_IDENTITY_UNICODE;


ZeroMemory( @authInfo, sizeof( authInfo ) );

// NTLM Settings
authInfo[0].dwAuthnSvc := RPC_C_AUTHN_WINNT;
authInfo[0].dwAuthzSvc := RPC_C_AUTHZ_NONE;
authInfo[0].pAuthInfo := @authidentity;



authList.cAuthInfo := 1;
authList.aAuthInfo := @authInfo;

OleCheck(CoInitializeSecurity(
  NULL,                            // Security descriptor
  -1,                              // Count of entries in asAuthSvc
  NULL,                            // asAuthSvc array
  NULL,                            // Reserved for future use
  RPC_C_AUTHN_LEVEL_CONNECT,       // Authentication level
  RPC_C_IMP_LEVEL_IMPERSONATE,     // Impersonation level
  @authList,                       // Authentication Information
  DWORd(EOAC_DYNAMIC_CLOAKING),                       // Additional capabilities
  NULL                             // Reserved
  ));
//create COM object
int := CoSecurityTestObj.Create;
int.TestCall;

Sunucu da bayrak EOAC_DYNAMİC_CLOAKİNG belirledi. Coımpersonateclient iplik şifre ve kullanıcı adı almak için kullanır. Ayrıca CoQueryClientBlanket bu otomatik bilgilendirme (SEC_WİNNT_AUTH_İDENTİTY_W yapısı olarak) almak için kullanır. Ancak her zaman müşterinin işlem kimliği geri çağırır.

El ile de çalışmıyor taklit (2.):

Token := TJwSecurityToken.CreateLogonUser(authidentity.User, '', authidentity.Password, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT);
 Token.ImpersonateLoggedOnUser;
 int := CoSecurityTestObj.Create;
 int.TestCall;

Soru tekrar:

  1. Yanlış ya da neden varsayılan kimlik doğrulama bilgileri yapısı (kullanıcı adı ve parola ile WinNT) her COM bağlantı varsayılan kimlik doğrulama olarak kullanılan/çağrı değil miyim ?

  2. Yanlış ya da neden bürünme işe el vermiyor muyum? Ben 2 numaralı test unutmayın. 1 rakamı. müdahale edemezsiniz.

Bu COM güvenlik destek için uzanan JEDİ Windows Güvenlik Kodu Kütüphane için temel bir iştir. Yardımın GPL/MPL gidecek.

Referanslar:

Gizleme:

  1. http://msdn.microsoft.com/en-us/library/ms683778(VS.85).aspx
  2. http://msdn.microsoft.com/en-us/library/cc246058(PROT.10).aspx
  3. http://alt.pluralsight.com/wiki/default.aspx/Keith.GuideBook/WhatIsCoInitializeSecurity.html

Coınitializesecurity ve pAuthİnfo

  1. http://www.codeguru.cn/vc&mfc/apracticalguideusingvisualcandatl/93.htm

Almak güvenlik battaniye (sunucu tarafı)

  1. http://www.codeguru.cn/vc&mfc/apracticalguideusingvisualcandatl/92.htm

CEVAP
31 Ocak 2012, Salı


Yerine RPC_C_AUTHN_LEVEL_CALL RPC_C_AUTHN_LEVEL_CONNECT? Coınitializesecurity aramayı denediniz mi()

Genellikle ben COSERVERINFO oluşturmak ve pas Cocreateınstanceex DCOM istemcileri oluşturduğumda() güvenlik kimlik bilgileri, CoSetProxyBlanket aramak için hatırlamak() arayüzleri.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Darren Kitchen

    Darren Kitch

    3 EKİM 2011
  • kylelandry

    kylelandry

    9 AĞUSTOS 2007
  • Major FX

    Major FX

    6 HAZİRAN 2012