Solved

IIS authentication problem with "Network Service"..

Posted on 2006-11-22
11
464 Views
Last Modified: 2008-01-09
Hi, i have the following setup:
IIS 6.0 on W2K3.
A .NET 2.0 app.
A site with IUSR as anonymous access acount, running in the default app pool.
A sub folder "admin" in this site that has only the access config changed from the parent, using integrated win auth/digest domain auth with the domain in realm. No anonymous access..

I thought this would feed the users domain username to the app, but not so.. The app recieves all requests from the "NETWORK SERVICE"..

I guess this have to do something with the default app pool, and/or the auth methods used.. but i cant find any specifics on this on the web.. Anyone got an idea?

What this should work like is that all users/guest should be anonymous at the root, but the admin folder should require authentication through the domain. The users get the login box as intended now, but is still authenticated as "NETWORK SERVICE"..
0
Comment
Question by:mattisflones
  • 8
  • 3
11 Comments
 
LVL 10

Accepted Solution

by:
AndresM earned 500 total points
ID: 17997488
in asp.net 2.0 you have to specify that the app needs impersonation; by default asp.net does'nt impersonate

To impersonate the Microsoft Internet Information Services (IIS) authenticating user on every request for every page in an ASP.NET application, you must include an <identity> tag in the Web.config file of this application and set the impersonate attribute to true. For example: <identity impersonate="true" />
0
 
LVL 15

Author Comment

by:mattisflones
ID: 17998788
Hi there AndresM, i tried your tip, but got this error:

System.Data.SqlClient.SqlException: User does not have permission to perform this action.

My app is highly SQLE dependent, and this surprised me a bit.. there is no way to give a user acces but on NTFS level.. and thats done!
0
 
LVL 10

Expert Comment

by:AndresM
ID: 17998830
Now your app is impersonating, if you are using integrated authentication with SQL, you have to add the login in SQL Server for each user. Other option, use SQL authentication against SQL Server, with a generic user.
PS: If your SQL Server is in other machine than the web server, integrated authentication to SQL is little bit more complicated.
0
Use Case: Protecting a Hybrid Cloud Infrastructure

Microsoft Azure is rapidly becoming the norm in dynamic IT environments. This document describes the challenges that organizations face when protecting data in a hybrid cloud IT environment and presents a use case to demonstrate how Acronis Backup protects all data.

 
LVL 15

Author Comment

by:mattisflones
ID: 17998864
The funny part is that if i use <Page.User.Identity.Name.ToString()> in C# it gives me nothing.. On the devmachine it gives me the right (same) user name..
0
 
LVL 15

Author Comment

by:mattisflones
ID: 17998869
I am using SQL 2005 Express and cant add users.. Its all local, running from the App_Data folder..
0
 
LVL 15

Author Comment

by:mattisflones
ID: 17998904
Btw, this is my connstring:
<add name="ASPNETDB" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\ASPNETDB.MDF;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient"/>
0
 
LVL 10

Expert Comment

by:AndresM
ID: 17998924
Ok, if you don't impersonate, you can still obtain who is accesing your page, with a variable called 'user' I think. But the entire w3wp.exe process (IIS process) will run under network service (by default) or under the account configured in the IIS app pool. If you impersonate, w3wp.exe will run threads under the context of the user logged on to the website in that moment, that's why when you impersonate you get access denied in SQL.
0
 
LVL 15

Author Comment

by:mattisflones
ID: 17999038
Thats the Page.User in C# that dont give me anything.. :-(

The thought you had about giving a generic user to access the SQL server is a good one, but i must admit i dont know how to do that with a SQLE install.. It seems to be limited what you can do with a attached DB..

Do you know any good tricks?


0
 
LVL 15

Author Comment

by:mattisflones
ID: 17999181
I tried:

<add name="ASPNETDB" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\ASPNETDB.MDF;Database=ASPNETDB;User ID=sa;Password=<password>;" providerName="System.Data.SqlClient"/>

But got:

Cannot create file 'C:\Inetpub\SITES\test\DK2\App_Data\ASPNETDB_log.LDF' because it already exists. Change the file path or the file name, and retry the operation.
Could not open new database 'ASPNETDB'. CREATE DATABASE is aborted.
Could not attach file 'C:\Inetpub\SITES\test\DK2\App_Data\ASPNETDB.MDF' as database 'ASPNETDB'.
File activation failure. The physical file name "U:\Dev\ASP.NET\DataKjeden.no\5\App_Data\ASPNETDB_log.ldf" may be incorrect.

A wee bit of everything i guess.. :-)
0
 
LVL 15

Author Comment

by:mattisflones
ID: 17999189
And thats with <identity impersonate="true" />
0
 
LVL 15

Author Comment

by:mattisflones
ID: 17999658
The solution was:

Use: <identity impersonate="true" /> in web config.

Change the default generated ".\SQLEXPRESS" bit in the connstring to "<SERVERNAME>\SQLEXPRESS", and "User Instance=True" to User Instance=False"

Works like a charm!

The Page.User func in C# still does not work, but <System.Security.Principal.WindowsIdentity.GetCurrent().Name.ToString()> does!

The site can now run IUSR or whatever for the root, and use domain security for the admin section..
0

Featured Post

Simplifying Server Workload Migrations

This use case outlines the migration challenges that organizations face and how the Acronis AnyData Engine supports physical-to-physical (P2P), physical-to-virtual (P2V), virtual to physical (V2P), and cross-virtual (V2V) migration scenarios to address these challenges.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Logparser is the smartest tool I have ever used in parsing IIS log files and there are many interesting things I wanted to share with everyone one of the  real-world  scenario from my current project. Let's get started with  scenario - How do w…
What is an ISAPI filter?   •      It's an assembly (.dll file) that can add or change the way IIS works.   •      They can be enabled globally for your web server or on a site-by-site basis.   When the IIS server receives a request, enabling the ISAPI fi…
This Micro Tutorial will give you a basic overview how to record your screen with Microsoft Expression Encoder. This program is still free and open for the public to download. This will be demonstrated using Microsoft Expression Encoder 4.

810 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question