IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

IIS Discussion :

Authentification Windows et par formulaire [IIS 7.5]


Sujet :

IIS

  1. #1
    Membre chevronné
    Avatar de Pelote2012
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2008
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2008
    Messages : 925
    Points : 1 839
    Points
    1 839
    Billets dans le blog
    2
    Par défaut Authentification Windows et par formulaire
    Bonjour,

    J'ai développé un intranet en VB.NET. Au début, identification Windows est accès au site pat http://NomServeurort. Nickel. Pas de demande de mot de passe au lancement.
    Puis on m'a demandé, pour les personnes pas encore inscrite sur l'intranet de pouvoir y accéder par identifiant/Mot de passe (Default.aspx) Nickel.

    Puis on m'a demandé de pouvoir y accéder de l'extérieur... Achat du certificat (https) mise en place DNS. J'accède bien au site. Mais le serveur me demande un identifiant/Mot de passe par un popup, même en interne. Après recherche, j'ai mis le site https... dans les Intranets (Option IE/Sécurité/Intranet/Sites/Avancé) ça marche en interne sur https. Mais toujours rien en externe, toujours cette popup.
    Si je veux y accéder, il faut que je passe IIS en connexion anonyme. Mais là je perd du coup les identifiant Windows en interne. J'ai essayé avec
    Code vb.net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    HttpContext.Current.User.Identity.Name
    WindowsIdentity.GetCurrent.Name
    Request.ServerVariables("LOGON_USER")
    Mais c'est vide ou ça me retourne l'identifiant IIS APPPOOL de mon site. J'ai essayé en impersonnate = true, marche pas.
    J'ai essayé de mettre par connexion form, marche pas non plus.
    J'ai essayé aussi des mixes Windows/Form; Windows/Basics; Windows/Anonime.
    J'ai essayé de redirigé aussi les erreurs 401 sur default.aspx (à partir du global.asax/ application_endrequest), mais même combat, soit la popup en externe, soit pas d'identification automatique en interne.

    Après avoir essayé 15000 solutions sur google, je suis complètement perdu.

    J'ai activer sur mon serveur ASP.NET, mais pas l'ASP. Mais je ne crois pas que ça changera grand chose.
    Quelqu'un a-t-il eu déjà à faire une connexion automatique Windows en interne et Par loin/Mot de passe en externe?

    Merci de votre aide

  2. #2
    Membre chevronné
    Avatar de Pelote2012
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2008
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2008
    Messages : 925
    Points : 1 839
    Points
    1 839
    Billets dans le blog
    2
    Par défaut
    Après réflexions supplémentaires, je me suis rendu compte qu'il faut que je prenne le problème dans l'autre sens.
    Il faut que je parte d'une appli authentification mode = forms et que j'ai une page en authentification Windows.

    Je passe par une "page" ashx :
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    Imports System.Web
    Imports System.Web.Services
     
    Public Class AutoLogin1
        Implements System.Web.IHttpHandler, IRequiresSessionState
     
        Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
     
            Dim ContextName = HttpContext.Current.User.Identity.Name
     
            Try
                'Supprime le ticket d'authentification
                System.Web.Security.FormsAuthentication.SignOut()
     
                Dim LesDatas As New PersoEntities
                Dim ConnectedUser As Collaborateur = (From c In LesDatas.Collaborateurs Where c.Login.ToLower = ContextName.ToLower Select c).SingleOrDefault
                If ConnectedUser IsNot Nothing Then
                    context.Session("ConnectedMail") = ConnectedUser.Login
                    FormsAuthentication.RedirectFromLoginPage(ConnectedUser.Login, False)
                    context.Response.Redirect("~/Client/LstClients.aspx")
                End If
            Catch ex As Exception
                HelperJournal.WriteException(ex, "AutoLogin. ContextName=" & ContextName)
                context.Response.Redirect("~/Default.aspx")
            End Try
     
        End Sub
     
        ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
            Get
                Return False
            End Get
        End Property
     
    End Class

    et mon Web.config
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
     
    <?xml version="1.0" encoding="utf-8"?>
    <!--
      Pour plus d'informations sur la configuration de votre application ASP.NET, consultez
      http://go.microsoft.com/fwlink/?LinkId=169433
      -->
    <configuration>
    	<configSections>
    		<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    		<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    	</configSections>
    	<connectionStrings>
    		<add name="PersoEntities" connectionString="... />
    	</connectionStrings>
    	<appSettings>
     
    	</appSettings>
    	<!--
        Pour obtenir une description des modifications de web.config, voir http://go.microsoft.com/fwlink/?LinkId=235367.
     
        Les attributs suivants peuvent être définis dans la balise <httpRuntime>.
          <system.Web>
            <httpRuntime targetFramework="4.5" />
          </system.Web>
      -->
    	<system.web>
    		<compilation debug="true" strict="false" explicit="true" targetFramework="4.5">
    			<assemblies>
    				<add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    			</assemblies>
    		</compilation>
    		<authentication mode="Forms">
    			<forms defaultUrl="Client/LstClients.aspx" loginUrl="Default.aspx" path="/" ></forms>
    		</authentication>
    		<identity impersonate="false" />
    		<membership>
    			<providers>
    				<clear />
    				<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
    			</providers>
    		</membership>
    		<profile>
    			<providers>
    				<clear />
    				<add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/" />
    			</providers>
    		</profile>
    		<roleManager enabled="false">
    			<providers>
    				<clear />
    				<add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/" />
    				<add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />
    			</providers>
    		</roleManager>
    		<pages controlRenderingCompatibilityVersion="4.0" />
    	</system.web>
    	<location path="Scripts">
    		<system.web>
    			<authorization>
    				<allow users="*" />
    			</authorization>
    		</system.web>
    	</location>
    	<location path="Styles">
    		<system.web>
    			<authorization>
    				<allow users="*" />
    			</authorization>
    		</system.web>
    	</location>
    	<location path="Images">
    		<system.web>
    			<authorization>
    				<allow users="*" />
    			</authorization>
    		</system.web>
    	</location>
    	<location path="Extraction/WcfDevis.svc">
    		<system.web>
    			<authorization>
    				<allow users="*" />
    			</authorization>
    		</system.web>
    	</location>
    	<location path="AutoLogin.ashx">
    		<system.web>
    			<authorization>
    				<allow users="*" />
    			</authorization>
    		</system.web>
    	</location>
    	<system.webServer>
    		<defaultDocument enabled="true">
    			<!-- this line enables default documents for a directory -->
    			<files>
    				<clear />
    				<!-- removes the existing default document list -->
    				<add value="~/Client/LstClients.aspx" />
    			</files>
    		</defaultDocument>
    		<modules runAllManagedModulesForAllRequests="true" />
    	</system.webServer>
    	<entityFramework>
    		<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
    		<providers>
    			<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    		</providers>
    	</entityFramework>
    	<system.serviceModel>
     
    		<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
    	</system.serviceModel>
    	<runtime>
    		<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    			<dependentAssembly>
    				<assemblyIdentity name="Microsoft.Data.Services" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    				<bindingRedirect oldVersion="0.0.0.0-5.7.0.0" newVersion="5.7.0.0" />
    			</dependentAssembly>
    			<dependentAssembly>
    				<assemblyIdentity name="Microsoft.Data.Services.Client" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    				<bindingRedirect oldVersion="0.0.0.0-5.7.0.0" newVersion="5.7.0.0" />
    			</dependentAssembly>
    			<dependentAssembly>
    				<assemblyIdentity name="Microsoft.Data.Edm" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    				<bindingRedirect oldVersion="0.0.0.0-5.7.0.0" newVersion="5.7.0.0" />
    			</dependentAssembly>
    			<dependentAssembly>
    				<assemblyIdentity name="System.Spatial" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    				<bindingRedirect oldVersion="0.0.0.0-5.7.0.0" newVersion="5.7.0.0" />
    			</dependentAssembly>
    		</assemblyBinding>
    	</runtime>
    </configuration>

    Mais quand je lance http://Localhost:XXX/AutoLogin.ashx, le code s'exécute RedirectFromLoginPage et response.redirect mais je fini quand même sur la page Default.aspx (page de login)

    Pourquoi????

  3. #3
    Membre chevronné
    Avatar de Pelote2012
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2008
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2008
    Messages : 925
    Points : 1 839
    Points
    1 839
    Billets dans le blog
    2
    Par défaut
    Enfin...

    Comment j'ai fait?
    Il faut rester sur l'idée d'un site connexion forms mais une page d'autologin (ou ashx ça marche aussi en étant moins lourd) connexion windows avec redirectfromloginPage.

    J'ai mis tout le site en accès anonyme côté IIS et mon ashx en connexion windows.
    Dans mon Web.config authentification forms.
    que je passe par le formulaire ou ashx je remplie des infos en session
    Dans ma master, je vérifie que mes infos en session sont Ok sinon retour à la connexion formulaire.
    Dans l'ashx si le compte n'est pas référencer dans mon appli, je bascule l'uti sur le formulaire avec mot de passe.
    J'aurai pu forcer toutes les connexions par l'ashx, pour simplifier, mais faire des rebonds entre page juste pour ça...
    En interne, j'ai fais créer des raccourcis sur leur session TSE sur https://Monappli.fr/Connexiondirect.ashx et quand ils sont en externe https://Monappli.fr

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Authentification par formulaire
    Par IcedLand dans le forum ASP.NET
    Réponses: 17
    Dernier message: 20/07/2009, 15h38
  2. Réponses: 2
    Dernier message: 09/03/2009, 16h54
  3. Réponses: 3
    Dernier message: 23/11/2007, 12h50
  4. Réponses: 7
    Dernier message: 22/08/2007, 09h43
  5. [1.1] Authentification par formulaire
    Par kakek dans le forum ASP.NET
    Réponses: 2
    Dernier message: 30/05/2005, 09h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo