Solved

Multiple Forms Authentication

Posted on 2004-10-13
12
3,893 Views
Last Modified: 2008-01-09
I currently am using Web.Config to lock down a "members" folder which is for membors-only. I also have a completely different VB.NET project for the administrative side and wanted to see if there is a way to do multiple forms authentication inside Web.Config? Basically, it won't let you into members w/o a valid user/pass - this is a seperate DB table than the admin users though and I wouldn't want people who are members to be able to access the admin area and vice versa...unless of course a duplicate account exists and it can essentially do a pass-through of the login information and go from say the admin area to that person's member account.

I hope that makes sense. I know I can do role-based authentication but I want to try and use the existing setup that is currently in place.

Thanks in advance!
0
Comment
Question by:goconcepts
  • 6
  • 3
  • 2
12 Comments
 
LVL 18

Expert Comment

by:tusharashah
ID: 12304344
Do you want something like this?
http://www.experts-exchange.com/Programming/Programming_Languages/Dot_Net/ASP_DOT_NET/Q_21159585.html

------------------------------------------------------------------------
<!--Web.Config -->
<configuration>

 <system.web> <!-- This is default system.web -->
   <authentication mode="Forms">
     <forms loginUrl="Login.aspx" name=".sampleNETAUTH" protection="All" path="/" timeout="300"/>    
   </authentication>
 </system.web>

 <location path="SecurePage1.aspx">
   <system.web>
        <authorization>
            <allow users="?" />
        </authorization>
    </system.web>
 </location>

<location path="SecurePage2.aspx">
   <system.web>
        <authorization>
            <deny users="?" />
        </authorization>
    </system.web>
<!-- You can even setup Different connection string for different database -->
     <appSettings>
     <add key="connectionString" value="YourConnectionString"/>
    </appSettings>
 </location>

</configuration>
------------------------------------------------------------------------

-tushar
0
 
LVL 28

Expert Comment

by:mmarinov
ID: 12305379
tusharashah,

i'm sorry for the missunderstanding, but i was clicked on the admin comment when i've posted the normal comment

B..M
0
 

Author Comment

by:goconcepts
ID: 12305456
No, they are seperate folders, not just pages. If someone is considered authenticated for one would they be automatically authenticated for the other since it is one forms auth? Here is the code I am using currently and basically I want to know if I can duplicate it inside Web.Config...I know I can do another Web.Config file but wouldn't it require all the same stuff as the other one?

******************************************************************************

<configuration>
    <location path="members">
      <system.web>
            <authorization>
                  <deny users="?" />
            </authorization>
      </system.web>
   </location>


<authentication mode="Forms">
            <forms name="sqlAuthCookie" loginUrl="members/login.aspx" protection="All" timeout="60" path="/"/>
</authentication>

******************************************************************************

I would need two different login pages obviously as well...so how would I specify that since "members/login.aspx" is specified inside the forms name tag?
0
 
LVL 28

Expert Comment

by:mmarinov
ID: 12305486
goconcepts,

look here : http://www.codeproject.com/aspnet/aspnetsinglesignon.asp
about the multiple login pages - i don't think it is possible to do

B..M
0
 
LVL 18

Expert Comment

by:tusharashah
ID: 12307322
B..M,
you scared me with that Admin comment.. the moment I saw my name inside Admin comment.. i said "i never wrote anything wrong"...

Well, true.. if they are different Projects then you wont be able to have one Web.Config file for both of them. But you can setup for different folders. You can add different <location> tag for different folders.. (like i saw for different pages previously).

You can have Login page in one of the Project and you alwayz redirect the user to that particular page using full URL in authentication tag:
------------------------------------------------------------------------------------------------------------------------------
<!-- Project: Members -->
<authentication mode="Forms">
          <forms name="sqlAuthCookie" loginUrl="http://www.YourDomain.com/members/login.aspx" protection="All" timeout="60" path="/"/>
</authentication>

<!-- Project: Administrator -->
<authentication mode="Forms">
          <forms name="sqlAuthCookie" loginUrl="http://www.YourDomain.com/members/login.aspx" protection="All" timeout="60" path="/"/>
</authentication>
------------------------------------------------------------------------------------------------------------------------------

Now if Authenticated user is an Admin user then set some Session Variable & share it between 2 application from the method B..M showed in his 1st comment. So, you'll have let's say Session["Admin"] set up in both the application & you'll not have to log Admin user again.

-tushar
0
Top 6 Sources for Identifying Threat Actor TTPs

Understanding your enemy is essential. These six sources will help you identify the most popular threat actor tactics, techniques, and procedures (TTPs).

 
LVL 28

Expert Comment

by:mmarinov
ID: 12307342
I'm really sorry for this tusharashah, it was Alt+A shortcut and i didn't see that i was press it :(

B..M
0
 
LVL 18

Expert Comment

by:tusharashah
ID: 12307411
Oh dont worry B..M, i understand.. sometimes such shock are good.. specially in Morning ;)

-tushar

ps. sorry for off topic comments goconcepts
0
 

Author Comment

by:goconcepts
ID: 12316665
So...tushar, based on what you posted I can have the following code:

<!-- Members -->
 <location path="members">
     <system.web>
          <authorization>
               <deny users="?" />
          </authorization>
     </system.web>
   </location>

<!-- Admin -->
 <location path="admin">
     <system.web>
          <authorization>
               <deny users="?" />
          </authorization>
     </system.web>
   </location>


And then two different authentication modes? If someone goes to members will it automatically go to the "login.aspx" page located in members or wouldn't it just go to the first one listed and ignore the other one?

0
 
LVL 18

Expert Comment

by:tusharashah
ID: 12318006
Having 2 <location> is only helpful for 2 different folders inside one project. I Believe you have 2 different project. In that scenario..
I'm suggesting:
  - Have 1 Login Page
  - 2 different Web.Config file for both of them..
  - Both file will point to same login page.
  - Store Session/Cookie variable while user is Authenticated in Login Page.
  - Share Session/Cookie among multiple project (with the method B..M showed above)
             - i.e. Session["MemberType"] = "Member" or "Admin"; // Now sharing this session among your application will allow you to identify your UserType..


-tushar
0
 
LVL 18

Accepted Solution

by:
tusharashah earned 350 total points
ID: 12318052
Now if in case you have 2 different folders inside one project then do something like following:

------------------------------------------------------------------------------------------

After you verify User Login/Password Call this function following way:
   FormsAuthentication.RedirectFromLoginPage("Member", false);   // If Authenticated user is Member
Or
   FormsAuthentication.RedirectFromLoginPage("Admin", false);   // If Authenticated user is Admin


------------------------------------------------------------------------------------------
<!-- Members -->
 <location path="members">
     <system.web>
          <authorization>
               <allow users="Member;Admin" /> <!-- Allow Member & Admin Only-->
               <deny users="?" />                      <!-- Deny UnAuthenticated Users -->
          </authorization>
     </system.web>
   </location>

<!-- Admin -->
 <location path="admin">
     <system.web>
          <authorization>
                <allow users="Admin"/>              <!-- Allow Admin Only-->
                <deny users="*" />                     <!-- Deny all other Users -->
          </authorization>
     </system.web>
   </location>
------------------------------------------------------------------------------------------

Again, this method is for 2 folders in Same Project.

-tushar
0
 
LVL 18

Expert Comment

by:tusharashah
ID: 12350572
Just came across this article, regarding signing in Multiple Applicatoin:
   http://www.codeproject.com/aspnet/aspnetsinglesignon.asp

-tushar
0

Featured Post

Find Ransomware Secrets With All-Source Analysis

Ransomware has become a major concern for organizations; its prevalence has grown due to past successes achieved by threat actors. While each ransomware variant is different, we’ve seen some common tactics and trends used among the authors of the malware.

Join & Write a Comment

One of the pain points with developing AJAX, JavaScript, JQuery, and other client-side behaviors is that JavaScript doesn’t allow for cross domain request for pulling content. For example, JavaScript code on www.johnchapman.name could not pull conte…
Today is the age of broadband.  More and more people are going this route determined to experience the web and it’s multitude of services as quickly and painlessly as possible. Coupled with the move to broadband, people are experiencing the web via …
Internet Business Fax to Email Made Easy - With eFax Corporate (http://www.enterprise.efax.com), you'll receive a dedicated online fax number, which is used the same way as a typical analog fax number. You'll receive secure faxes in your email, fr…
When you create an app prototype with Adobe XD, you can insert system screens -- sharing or Control Center, for example -- with just a few clicks. This video shows you how. You can take the full course on Experts Exchange at http://bit.ly/XDcourse.

757 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

Need Help in Real-Time?

Connect with top rated Experts

19 Experts available now in Live!

Get 1:1 Help Now