|
To determine what resources are accessible to IIS and ASP every
session runs in a security context. This context is a particular
user impersonated by IIS (typically IUSR_machinename). SetUser allows
you to impersonate a different user so that you can access resources
in a different context.
Impersonation is a security risk so we recommend avoiding it if
possible. Indeed we consider it such a security risk that we ship
ABCUpload with impersonation disabled. If you wish to enable it
you must enable it via a registry key (see registry keys for details).
Impersonation is also difficult to configure correctly so if you
must use it we recommend running your virtual directory in the IIS
Process (Low Application Protection).
For further details of Windows security see Microsoft's "Windows
NT Security". If you want to run IIS in an isolated process
see "Server
Reliability Through Process Isolation". Please note that security
works differently when running in an isolated process. This is fully
covered in the above articles.
If you have problems configuring impersonation you should bear
in mind that the Microsoft recommended solution to this is to create
a Microsoft Transaction Server (MTS) or COM+ package to host ABCUpload.
This will handle the security context switching for you.
The user you are trying to impersonate must have the privilege
'Log on as a batch job'. If you try to impersonate and do not have
the correct privileges you will receive one of these errors:
A required privilege is not held by the client. (1314)
Access is denied. (5)
When your virtual directory is running in the IIS Process (Low
Application Protection) IIS runs as SYSTEM and then impersonates
the Anonymous User. You can change the identity of the Anonymous
User but it is typically IUSR_machinename.
When your virtual directory is running at part of MTS or COM+ (Medium
- Pooled or High - Isolated Application Protection) it will run
as IWAM_machinename and again impersonate the IUSR_machinename user.
On Windows NT 4 the IUSR_machinename user does not have the privileges
to do impersonation. On Windows 2000 neither the IUSR_machinename
nor the IWAM_machinename has the required privileges. To enable
impersonation ABCUpload must drop back into the base user (SYSTEM
or IWAM_machinename).
Under Windows NT 4.0
You will be able to impersonate if you do not have "Run in
separate memory space" checked. If you do have this option
checked you must enable "Act as Part of Operating System"
for the IWAM_machinename user.
Under Windows 2000
You will be able to impersonate if your Application Protection
is set to Low. If your Application Protection is set to Medium or
High you will not be able to impersonate.
To change user privileges on Windows NT 4.0
- Open "User Manager" in "Administrative Tools"
- Choose "User Rights" from the "Policies"
Menu
- You many need to check "Show Advanced User Rights"
- Change user rights as required
- After changing User Rights we advise rebooting
To change user privileges on Windows 2000
- Open "Local Security Settings"
- Select "Local Policies/User Rights Assignment"
- Double click on the required policy
- Add or remove users as appropriate
- After changing User Rights we advise rebooting
If you need to change back to the IUSR_machinename after impersonating
another user you should do so by calling SetUser again. You will
need to obtain the Anonymous User name and password from the Metabase.
Note that you must be impersonating a user such as SYSTEM which
has access to the Metabase.
Set theObj = GetObject("IIS://LocalHost/W3SVC")
theUser = theObj.Get("AnonymousUserName")
thePass = theObj.Get("AnonymousUserPass")
theForm.SetUser theUser , thePass
|