How to automatically log on to asp.net application - c#

I am building an intranet application, the requirement is to log in user without asking for credentials with the windows credentials he has logged on to computer, user if wants can logout from application and log in using the windows credentials pop up.

Use Windows Authentication.
Though, I don't think there's really a way to sign out of a website using Windows authentication. You're either authenticated or you aren't.
Also, I believe the automatic logging in will only occur:
When using IE
After saving credentials after logging in the first time in other browsers
After editing browser-specific settings (like FireFox's NTLM setting)

Related

How to get Windows user credentials using forms authentication?

Our all libraries and application use forms authentication, so it is necessary to use it here.
The application is hosted on IIS with below settings:
anonymous authentication: enabled
forms authentication: enabled
windows authentication: disabled (this must not be changed)
This returns the user under IIS runs (in my case IIS APPPOOL\tdm)
string userName = System.Security.Principal.WindowsIdentity.GetCurrent();
string userName = Environment.UserName;
In web.config:
<authentication mode="None" /> //(this again must not be changed)
Is it possible somehow to take the Windows credentials of the user who uses the application?
My job is when someone enters the app to log in with this credentials automatically, but for that, I must find a way to take his Windows user account.
I don't think that what you are asking for is possible within a standard webforms framework. You cannot automatically get a browser to send the windows credentials without enabling windows authentication.
If the application is hosted on the same domain, it is relatively easy to use standard forms authentication with an existing AD username/password - also called Single Sign On.
When you enable Windows authentication in an application, and then make a request from a browser, it actually returns a 401 - Unauthorized status code. The browser then decides based on your settings whether to send your identity in a second request. This may happen automatically, or it may prompt for credentials.

Integrated Windows Authentication - Logout

I am attempting to use Integrated Windows Authentication on IIS for an MVC web app. The original hope was that the user would be logged in automatically using the current Windows user credentials. I am running into the issue where the user is always prompted to enter user name and password. I have decided that we can live with this. However, I have also noticed that the user can enter any valid domain credentials...it's not limited to the currently logged in machine. But if this is the case, I need to provide a logout button, so the user can be switched if necessary.
Everything I can find on this issue, logging out in Windows Authentication, says you cannot do it because it pulls the credentials from the machine login. But it's obviously not doing that in my case, because I can enter any valid credentials and log in successfully. So a user could be logged onto the machine as user X, and then, when prompted, log into the web app as user Y. Am I to understand that, under Windows Authentication, there's no way to address this?
Are you sure you selected Windows Authentication While creating the Project? Confirm that and if yes, proceed to check your web.config that application authentication is set to windows.

Force user to enter credentials manually while using WIA

I‘ve got a MVC application configured to use Windows Authentication in IIS.
So If an user accesses the app from a machine within the same domain and a browser which supports WIA, no credentials dialog will be displayed and the user is logged in right away.
If an user accesses the app from a browser or a machine which does NOT support WIA or is outside the domain, the credentials dialog is being displayed correctly.
Additionally I‘d like to teach the app the following behavior.
Some users from the domains are not allowed to access my application, so the app should reject the user (e.g it is not within a specific AD group) even though it has authenticated successfully and force it to enter the credentials of a different user manually using the same dialog which is user to authenticate users using a browser not supporting it.
Thank you a lot in advance!
Got it - modifying the web.config according to this post does the trick.
https://serverfault.com/questions/352647/restrict-access-to-iis-site-to-an-ad-group

Umbraco and Windows Authentication

My team tries to setup an intranet portal powered by Umbraco which requires Windows Authentication for authenticating its users that are stored as (Umbraco) Members.
Currently we have done the following:
In the Authentication Feature of IIS, we enabled only Windows Authentication at the root of the web site (all other authentication options are disabled).
In Web Config, we changed the Authentication settings mode attribute from Forms to Windows.
The username of the Members is stored in the domain\username format.
That works fine as far it concerns authentication and authorization of members in the front end. But in the back office (that requires Forms Authentication), it does not work well with the above settings, as sometimes the browser displays the authentication popup window and requires for the back office user to enter his (domain) credentials or sometimes randomly terminates the back office user's session and logs user out.
Is there any suggested way for implementing Windows Authentication for Umbraco portals that does not raise such issues in the back office?
Any help will be greatly appreciated.

Get Windows user credentials with windows authorization disabled in IIS

Is it possible to grab a users windows credentials (i.e. username) without having windows authentication enabled in IIS? With windows auth disabled the code below returns either NT AUTHORITY or IIS APPPOOL\ASP.NET v4.0 depending on if impersonation and anonymous authentication are enabled or not.
System.Security.Principal.WindowsIdentity.GetCurrent().Name.ToString();
I am converting an asp.net web application that is using forms authentication to custom authentication. Basically if a user is connecting from outside the network I force a credential check whereas if they are connecting from within the network I would like to be able to just grab their windows username. The internal portion works when I turn on windows authentication but I get the popup login box when testing outside of the network. I either need to disable windows authentication for non local connections or figure out how to get the windows username with windows authentication disabled. Any suggestions? (The other alternative i thought of was splitting the application in two and having separate authentication modes for each but I'd like to avoid this).
-I have also tried:
System.Web.HttpContext.Current.User.Identity.ToString();
System.Threading.Thread.CurrentPrincipal.ToString();
something like this is actually (kind of) possible using Active Directory Federated Services. In the event of a windows user from inside the network they can be configured to use their account details. For external users, they can be redirected to a page that will require them to log in.
However. This is very heavy-duty and an extreme pain in the..neck to implement and is really only applicable to enterprise solutions that have the resourses to use this kind of solution. Otherwise, I'd say go with the 2 site approach.
Simple answer is no.
Best solution is to create 2 sites. One for internal users that user windows authentication, one for external user that user forms authentication but authenticate against AD. You can make users always go to external site by default and then redirect based on their IP. That is redirect intranet users to internal user.

Categories