Makale numarası: 248187 - Son Gözden Geçirme: 08 Temmuz 2005 Cuma - Gözden geçirme: 4.4

Active Server Pages kullanıcının kimliğine bürünmek nasıl

Sistem İpucuBu makale, kullandığınızdan farklı bir işletim sistemine yöneliktir. Sizinle ilgili olmayabilecek makale içeriği devre dışı bırakıldı.
Hepsini aç | Hepsini kapa

Özet

Bu makalede, kimliğe bürünme ve Active Server Pages (ASP) sayfaları için güvenlik bağlamının açıklanır. Örnek kod için bir kullanıcının özelliklerini almasına ve geçerli iş parçacığının güvenlik bağlamında bir ASP sayfasından örneği bir Microsoft Visual Basic ActiveX dinamik bağlantı kitaplığı (DLL) sağlar.

Varsayılan olarak, ASP, Kimliğine bürünülen kullanıcının güvenlik bağlamında çalışır. ASP dosyasıyla ilgili bir istek yapıldığında, Web sunucusu bir iş parçacığı kullanır ve bu iş parçacığının güvenlik bağlamında bir Kimliğine bürünülen kullanıcı için ayarlar. Internet ınformation Server (IIS) kimlik doğrulama yöntemi (anonim, Basic, NT tümleşik vb.), Kimliğine bürünülen kullanıcı belirler. Sonra ASP kodu, kullanıcı bağlamında çalışır.

Bir kullanıcının özelliklerini almasına, uygulamanızda aşağıdaki güvenlik çakışmaları çözümlemek için:
  • Adlandırılmış Yöneltmeler protokolü ile NT tümleşik (NTLM) güvenlik ya da (örneğin, bir dosya, bir Access veritabanını veya SQL Server) bir ağ kaynağına erişmek için gerekli olan Kerberos kimlik doğrulaması kullanan bir uygulama.
  • Bir ağ kaynağı Session_OnEnd veya Application_OnEnd olayından erişen bir uygulama.

    Session_OnEnd ve Application_OnEnd olayları, işlem kimliği ile çalıştırın. I?lem içi ya da düşük uygulama koruma uygulamaları, SISTEM kullanıcı KIMLIĞI budur ve ınetinfo.exe dosyası işlemidir. Kimliğine bürünüyor yerine, ayrı bellek işlemindeki veya yüksek (yalıtılmış) uygulama koruması'nı çalıştırın ve Microsoft Transaction Server (MTS) paketi veya istenen kullanıcı KIMLIğI için COM + uygulama kimliğini ayarla
  • Bir uygulama için WinNT bağlanan birden çok kullanıcı desteği: / / <a1>Ad</a1> Microsoft Active Directory Hizmetleri arabirimi (ADSI) aracılığıyla.

    Bu bağlantılar, ilk bağlantıyı açan kullanıcının güvenlik kimlik bilgileriyle önbelleğe alınır. Kimliğine bürünüyor tek bir kullanıcı bağlantı açılmasını sağlar; sonuç olarak, bu kullanıcının kimlik bilgileri önbelleğe alınmış kimlik bilgilerini eşleşen.

Daha fazla bilgi

Kimliğe bürünme, bu üç işlevleri kullanır:
  1. LogonUser işlevi, oturum açma bilgileri (kullanıcı KIMLIĞINI, parolasını ve benzeri) alır ve geçerli bir oturum açma için bir güvenlik belirteci döndürür.
  2. Impersonateloggedonuser işlevi, LogonUser güvenlik belirteci alır ve geçerli iş parçacığı için uygular.
  3. RevertToSelf işlevi, iş parçacığının kaynak işlemin güvenlik bağlamında döndürür.

    ASP'DEN taklit RevertToSelf son derece önemlidir. Geçerli güvenlik bağlamı kimliğine bürünmek için özelliği olduğundan emin olmak için LogonUser ve ımpersonateloggedonuser önce denir. (Zaten özellikleri, ASP'DEN, olan büyük olasılıkla gerekli taklit yetkisi yoktur.) Iş parçacığının sonraki kullanımı uygun bir güvenlik bağlamı, diğer bir deyişle, kaynak işlem kimliği olduğundan emin olmak için sayfa işlemeyi sonunda RevertToSelf olarak adlandırılır.
Aşağıdaki ActiveX DLL DOSYASı iki yöntemi vardır: oturum açma ve kapatma. Oturum açma iş parçacığının içeriğini yeni bir kullanıcı KIMLIĞI olarak değiştirir ve oturum kapatma için kaynak işlem kimliğinin döner. Dll DOSYASıNı oluşturmak için aşağıdaki adımları gerçekleştirin:
  1. Visual Basic 6. 0'da, LoginAdmin adlı yeni bir ActiveX DLL projesi oluşturun.
  2. Ilk sınıf modülünün ImpersonateUser için değiştirin.
  3. Projeye, LogonAPIs.bas, adlı bir modül ekleyin ve sonra <a1>Yapıştır</a1> API yapmak için aşağıdaki kod kullanacağınız sınıf için kullanılabilir çağırır:
       Public Declare Function LogonUser Lib "advapi32.dll" _
    Alias "LogonUserA" (ByVal lpszUsername As String, _
    ByVal lpszDomain As String, ByVal lpszPassword As String, _
    ByVal dwLogonType As Long, ByVal dwLogonProvider As Long, _
    phToken As Long) As Long
    
       Public Declare Function ImpersonateLoggedOnUser Lib "advapi32.dll" (ByVal hToken As Long) As Long
    
       Public Declare Function RevertToSelf Lib "advapi32.dll" () As Long
    
       Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
  4. ImpersonateUser sınıf modülünü açmak ve oturum açma ve kapatma yöntemleri oluşturmak için aşağıdaki kodu yapıştırın:
       Private Const LOGON32_LOGON_INTERACTIVE = 2
       Private Const LOGON32_PROVIDER_DEFAULT = 0
    
       Public Sub Logon(ByVal strAdminUser As String, ByVal _
    strAdminPassword As String, ByVal strAdminDomain As String)
         Dim lngTokenHandle, lngLogonType, lngLogonProvider As Long
         Dim blnResult As Boolean
         
         lngLogonType = LOGON32_LOGON_INTERACTIVE
         lngLogonProvider = LOGON32_PROVIDER_DEFAULT
         
         blnResult = RevertToSelf()
         
         blnResult = LogonUser(strAdminUser, strAdminDomain, strAdminPassword, _
                                              lngLogonType, lngLogonProvider, _
                                              lngTokenHandle)
                                                              
         blnResult = ImpersonateLoggedOnUser(lngTokenHandle)
         CloseHandle (lngTokenHandle)
    
       End Sub
    
       Public Sub Logoff()
         Dim blnResult As Boolean
         
         blnResult = RevertToSelf()
       End Sub
    Not: oturum açma türü LOGON32_LOGON_INTERACTIVE LogonUser çağrısı geçirir. Etkileşimli oturum açma başka oturum açma türleri yapılandırmazsanız, ağ kaynaklarına erişim sağlar.
  5. Proje dosyalarını kaydedin.
  6. Dosya menüsünden ActiveX DLL derlemeye LoginAdmin.dll yap ' ı tıklatın.
  7. LoginAdmin.dll Web sunucusuna kopyalamak ve kaydetmek için Regsvr32.exe kullanın (regsvr32.exe c:\components\LoginAdmin.dll, komut istemine yazın).
  8. ActiveX DLL kayıtlı sonra bir ASP sayfasından gibi arayabileceğiniz:
       <%
         Option Explicit
         Dim objLogon
    
         Set objLogon = Server.CreateObject("LoginAdmin.ImpersonateUser")
         objLogon.Logon "Userid", "Password", "Domain"
    
         'Body of code for the page.
    
         objLogon.Logoff
         Set objLogon = Nothing
       %>
    					
Not: RevertToSelf arama yaparken, ASP sayfasının işlemin güvenlik bağlamında çalıştırıyor olmanız. Işlemdeki uygulamalar için sistem hesabının budur. Ancak, havuzda çalıştırılır veya yalıtılmış uygulamalar veya havuza alınan uygulamaların Yalıtılmış uygulama için yapılandırılmış olan COM + paketi kimliğini budur. Varsayılan olarak, bu COM + paketi kimliğinin ıwam_ <computername></a0> için ayarlanır. Bu hesap izleyen çağrısı "işletim sisteminin bir parçası çalış" ayrıcalıkları varsaLogonUser bir izin ihlali nedeniyle başarısız olur. Geçici bir çözüm olarak, ya da "işletim sisteminin bir parçası çalış" ayrıcalıkları <computername>ıwam_ için etkinleştirme hesabı ya da bu ayrıcalıklara sahip bir hesap altında çalıştırmak için COM + paketi kimliği yapılandırın.

Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Active Server Pages 4.0
  • Microsoft Internet Information Server 4.0
  • Microsoft Internet Information Services 5.0
Anahtar Kelimeler: 
kbmt kbhowto kbsecurity KB248187 KbMttr
Otomatik TercümeOtomatik Tercüme
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:248187  (http://support.microsoft.com/kb/248187/en-us/ )