Συμβουλή συστήματοςΑυτό το άρθρο ισχύει για διαφορετικό λειτουργικό σύστημα από αυτό που χρησιμοποιείτε. Το περιεχόμενο του άρθρου που ενδέχεται να μην σας αφορά έχει απενεργοποιηθεί.
Αυτό το άρθρο περιγράφει απομιμήσεις και το περιβάλλον ασφαλείας για σελίδες Active Server Pages (ASP). Παρέχει δείγμα κώδικα για ένα Microsoft Visual Basic ActiveX βιβλιοθήκη δυναμικής σύνδεσης (DLL) που μπορεί να δημιουργείται παρουσία από μια σελίδα ASP για την απομίμηση ενός χρήστη και να αλλάξετε το περιβάλλον ασφαλείας του τρέχοντος νήματος.
Από προεπιλογή, οι ASP εκτελείται στο περιβάλλον ασφαλείας του χρήστη απομίμησης. Όταν γίνεται μια αίτηση για ένα αρχείο ASP, ο διακομιστής Web χρησιμοποιεί ένα νήμα εργασίας και ορίζει το περιβάλλον ασφαλείας από αυτό το νήμα σε έναν χρήστη απομίμησης. Η μέθοδος ελέγχου ταυτότητας Internet Information Server (IIS) (ανώνυμος, Basic, ενοποιημένο NT και λοιπά) καθορίζει ο χρήστης απομίμησης. Στη συνέχεια, ο κώδικας ASP εκτελείται στο περιβάλλον του χρήστη.
Κατά την απομίμηση ενός χρήστη, μπορείτε να επιλύσετε τις αντιφάσεις ασφαλείας παρακάτω στην εφαρμογή σας:
Μια εφαρμογή που χρησιμοποιεί ασφάλεια Integrated NT (NTLM) ή Kerberos για τον έλεγχο ταυτότητας που απαιτείται για την πρόσβαση σε έναν πόρο δικτύου (όπως ένα αρχείο, βάση δεδομένων της Access ή SQL Server) μέσω του πρωτοκόλλου επώνυμων διαύλων.
Μια εφαρμογή που αποκτά πρόσβαση σε έναν πόρο δικτύου από τοSession_OnEndήApplication_OnEndΣυμβάν.
Για ναSession_OnEndANDApplication_OnEndσυμβάντα που εκτελείται με την ταυτότητα της διεργασίας. Για εφαρμογές εντός διεργασίας ή χαμηλό επίπεδο προστασίας εφαρμογών, αυτό είναι το Αναγνωριστικό χρήστη SYSTEM και η διεργασία είναι το αρχείο Inetinfo.exe. Αντί να μιμείται, μπορείτε να εκτελέσετε σε μια διεργασία ξεχωριστή μνήμης ή με προστασία εφαρμογής Υψηλή (απομονωμένη) και να ορίσετε την ταυτότητα του πακέτου Microsoft Transaction Server (MTS) ή της εφαρμογής COM + για το αναγνωριστικό του χρήστη που θέλετε.
Μια εφαρμογή που υποστηρίζει πολλούς χρήστες που συνδέονται με το WinNT: / / χώρου ονομάτων μέσω του Microsoft Active Directory Services Interface (ADSI).
Αυτές οι συνδέσεις αποθηκεύονται προσωρινά με τις πιστοποιήσεις ασφαλείας του ο πρώτος χρήστης που ανοίγει τη σύνδεση. Απομίμηση εξασφαλίζει ότι ένας χρήστης ανοίγει τη σύνδεση, ως αποτέλεσμα, τα διαπιστευτήρια του χρήστη ταιριάζει με προσωρινά αποθηκευμένες πιστοποιήσεις.
Η απομίμηση χρησιμοποιεί αυτές τις τρεις λειτουργίες:
Για ναLogonUserσυνάρτηση λαμβάνει τις πληροφορίες σύνδεσης (Αναγνωριστικό χρήστη, κωδικό πρόσβασης και ούτω καθεξής) και επιστρέφει το διακριτικό ασφαλείας για μια έγκυρη σύνδεση.
Για ναImpersonateLoggedOnUserσυνάρτηση λαμβάνει το διακριτικό ασφαλείας απόLogonUserκαι ισχύει για το τρέχον νήμα.
Για ναRevertToSelfσυνάρτηση επιστρέφει το νήμα στο περιβάλλον ασφαλείας της διαδικασίας αφετηρίας.
RevertToSelfείναι εξαιρετικά σημαντικό όταν μίμησης από ASP. Καλείται πριν από τηνLogonUserANDImpersonateLoggedOnUserΓια να εξασφαλίσετε ότι το τρέχον περιβάλλον ασφαλείας έχει τη δυνατότητα να μιμηθεί. (Εάν έχετε ήδη είναι απομίμηση, τα οποία είναι από τις σελίδες ASP, κατά πάσα πιθανότητα δεν έχετε απαραίτητα αρχής για την απομίμηση.)RevertToSelfονομάζεται στο τέλος της επεξεργασίας της σελίδας για να βεβαιωθείτε ότι η επόμενη χρήση του νήματος έχει στο περιβάλλον ασφαλείας κατάλληλα, δηλαδή, την ταυτότητα της διεργασίας προέλευσης.
Η ακόλουθη βιβλιοθήκη DLL ActiveX διαθέτει δύο μεθόδους:logonANDΑποσύνδεση.logonαλλάζει το περιβάλλον του νήματος σε ένα νέο Αναγνωριστικό χρήστη καιΑποσύνδεσηΕπιστρέφει την ταυτότητα της διεργασίας προέλευσης. Για να δημιουργήσετε το αρχείο DLL, εκτελέστε τα εξής βήματα:
Στη Visual Basic 6.0, δημιουργήστε ένα νέο έργο βιβλιοθήκη DLL ActiveX που ονομάζεται LoginAdmin.
Αλλάξτε το όνομα της λειτουργικής μονάδας κλάσης αρχικά σε ImpersonateUser.
Προσθέστε μια λειτουργική μονάδα, που ονομάζεται LogonAPIs.bas, το έργο και, στη συνέχεια, επικολλήστε τον ακόλουθο κώδικα για να διαθέσετε τις κλήσεις API για την κλάση σας:
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
Ανοίξτε τη λειτουργική μονάδα κλάσης ImpersonateUser και, στη συνέχεια, επικολλήστε τον ακόλουθο κώδικα για τη δημιουργία τουlogonANDLogoffmethods:
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
ΣΗΜΕΙΩΣΗ: The call toLogonUserpasses a logon type of LOGON32_LOGON_INTERACTIVE. The Interactive logon allows us to access network resources that other logon types do not.
Save the project files.
Στο διακομιστήFILEμενού, κάντε κλικ στο κουμπίMake LoginAdmin.dllto compile the ActiveX DLL.
Copy LoginAdmin.dll to the Web server, and then use Regsvr32.exe to register it (typeregsvr32.exe c:\components\LoginAdmin.dllat a command prompt).
After the ActiveX DLL is registered, you can call it from an ASP page as follows:
<%
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
%>
ΣΗΜΕΙΩΣΗ: When you callRevertToSelf, the ASP page will be running under the security context of the process. For in-process applications, this is the System account. However, for pooled or isolated applications, this is the identity of the COM+ package that is configured either for pooled applications or for the isolated application itself. By default, the identity of these COM+ packages is set to IWAM_<computername>. If this account does not have "Act as part of the operating system" privileges, the subsequent call to </computername>LogonUserfails because of a permissions violation. As a workaround, either enable "Act as part of the operating system" privileges for the IWAM_<computername> account, or configure the COM+ package identity to run under an account that has these privileges.
</computername>
ΣΗΜΑΝΤΙΚΟ: Αυτό το άρθρο είναι προϊόν λογισμικού μηχανικής μετάφρασης της Microsoft και όχι ανθρώπινης μετάφρασης. Η Microsoft σάς προσφέρει άρθρα που είναι προϊόντα ανθρώπινης αλλά και μηχανικής μετάφρασης έτσι ώστε να έχετε πρόσβαση σε όλα τα άρθρα της Γνωσιακής Βάσης μας στη δική σας γλώσσα. Ωστόσο, ένα άρθρο που έχει προκύψει από μηχανική μετάφραση δεν είναι πάντα άριστης ποιότητας. Ενδέχεται να περιέχει λεξιλογικά, συντακτικά ή γραμματικά λάθη, όπως ακριβώς τα λάθη που θα έκανε ένας μη φυσικός ομιλητής επιχειρώντας να μιλήσει τη γλώσσα σας. Η Microsoft δεν φέρει καμία ευθύνη για τυχόν ανακρίβειες, σφάλματα ή ζημίες που προκύψουν λόγω τυχόν παρερμηνειών στη μετάφραση του περιεχομένου ή χρήσης του από τους πελάτες της. Επίσης, η Microsoft πραγματοποιεί συχνά ενημερώσεις στο λογισμικό μηχανικής μετάφρασης.
Η αγγλική έκδοση αυτού του άρθρου είναι η ακόλουθη:248187
(http://support.microsoft.com/kb/248187/en-us/
)
Πόση προσπάθεια καταβάλλατε για να χρησιμοποιήσετε αυτό το άρθρο;
Πολύ λίγη
Λίγη
Μέτρια
Μεγάλη
Πολύ μεγάλη
Πείτε μας για ποιον λόγο και με ποιον τρόπο θα μπορούσαμε να βελτιώσουμε αυτές τις πληροφορίες
Σας ευχαριστούμε! Τα σχόλιά σας θα μας βοηθήσουν να βελτιώσουμε το περιεχόμενο υποστήριξης. Για περισσότερες επιλογές βοήθειας, επισκεφτείτε την αρχική σελίδα της Βοήθειας και υποστήριξης.