Relationship Between IIS and ASP.NET
You should understand the
relationship between Internet Information Services (IIS) authentication and the
Microsoft® ASP.NET security architecture when designing your application. This
will allow you to authenticate your users appropriately and obtain the correct
security context within your application. You should note that ASP.NET application
security configuration and IIS security configuration are completely
independent and can be used independently or in conjunction with each other.
IIS maintains security related
configuration settings in the IIS metabase. However, ASP.NET maintains security
(and other) configuration settings in XML configuration files. While this
generally simplifies the deployment of your application from a security
standpoint, the security model adopted by your application will necessitate the
correct configuration of both the IIS metabase and your ASP.NET application via
its configuration file (Web.config).
ASP.NET Authentication Providers and
IIS Security
ASP.NET implements authentication
using authentication providers, which are code modules that verify credentials
and implement other security functionality such as cookie generation. ASP.NET
supports the following three authentication providers:
·
Forms
Authentication.
Using this provider causes unauthenticated requests to be redirected to a
specified HTML form using client side redirection. The user can then supply
logon credentials, and post the form back to the server. If the application authenticates
the request (using application-specific logic), ASP.NET issues a cookie that
contains the credentials or a key for reacquiring the client identity.
Subsequent requests are issued with the cookie in the request headers, which
means that subsequent authentications are unnecessary.
·
Passport
Authentication.
This is a centralized authentication service provided by Microsoft that offers
a single logon facility and membership services for participating sites.
ASP.NET, in conjunction with the Microsoft® Passport software development kit
(SDK), provides similar functionality as Forms Authentication to Passport
users.
·
Windows
Authentication.
This provider utilizes the authentication capabilities of IIS. After IIS
completes its authentication, ASP.NET uses the authenticated identity's token
to authorize access.
To enable a specified authentication
provider for an ASP.NET application, you must create an entry in the
application's configuration file as follows:
// web.config file
<authentication mode =
"[Windows/Forms/Passport/None]">
</authentication>
In
addition to authentication, ASP.NET provides an impersonation mechanism to
establish the application thread's security token. Obtaining the correct token
relies upon you configuring IIS authentication, ASP.NET authentication
providers, and ASP.NET impersonation settings appropriately. Figure 2 shows the
most likely combinations between IIS authentication and ASP.NET
Authentication using
Windows accounts
If you plan to authenticate users
using accounts maintained by a Microsoft Windows NT® domain controller or
within Microsoft Windows® 2000 Active Directory™, you should use IIS
Authentication coupled with the Windows Provider for ASP.NET, as illustrated in
Figure 2. By using this approach, you do not need to write any specific authentication
code. When authentication happens using this method, ASP.NET constructs and
attaches a Windows Principal object to the application context based on the
authenticated user. As a result, the ASP.NET thread can run as the
authenticated user and can obtain the user's group membership.
In some cases, you may want to
bypass IIS authentication and implement a custom solution. This is also
possible with ASP.NET. For example, you can write a custom ISAPI filter that
checks the user's credentials against Active Directory and the creation of the
Windows Principal object would be performed manually. There are other methods
besides this one that will work, but they all require more code than using the
.NET provider directly.
Authentication using
non-Windows accounts
If you are planning to authenticate
users at the application level, and the users do not have Windows accounts, you
will typically configure IIS to use Anonymous authentication. In this
configuration, consider the following .NET authentication modules:
·
None: Use when you are not
authenticating users at all, or developing custom authentication code.
·
Forms: Use when you want to provide users
with a logon page.
· Passport: Use when you are using Passport
services.
Passport Authentication
Passport authentication is a
centralized authentication service provided by Microsoft. When you use
Passport, you do not need to implement your own authentication code, logon
page, and user table in some cases. Passport works using a cookie mechanism. If
clients have previously authenticated to Passport, they are allowed access to
your site. If not, they are automatically re-directed to the Passport site for
authentication.
Passport is a good choice if you
require single sign-on capability across multiple domains that also support
Passport. Passport provides additional services beyond its role as an
authentication service, including profile management and purchasing services.
On the Windows 2000 platform, there
is no direct integration of Passport to any authentication and authorization
mechanisms built into the operating system. While the .NET Framework does check
for Passport cookies, if you maintain your own user database, you must
implement your own code to map the Passport user to your own user, as well as
implement your own authorization mechanism.
No comments:
Post a Comment