Authentification composant login

Authentification composant login - C#/.NET managed - Programmation

Marsh Posté le 17-10-2007 à 19:28:30    

Bonjour,
 
J'essaie actuellement d'implémenter une sécurité pour un site web et donc je voudrait utiliser les les compsant Login et autres existant déja dans ASP mais sans utiliser de DB et donc tout dans le web.config.
 
Mon but est est de laisser une partie libre et d'avoir un dossier Admin sécurisé.
 
Pour ce j'ai donc un web.Config dans mon repertoire de base contenant:

Code :
  1. <authentication mode="Forms">
  2.       <forms loginUrl="~/Admin/Login.aspx" protection="Encryption" timeout="20">
  3.         <credentials passwordFormat="MD5">
  4.           <user name="ben" password="6875991F9B848D94C8B6DB253849CDDE"/>
  5.         </credentials>
  6.       </forms>
  7.     </authentication>
  8.     <authorization>
  9.       <allow users="*" />     
  10.     </authorization>


Et un autre Web.Config dans mon répertoire Admin.

Code :
  1. <authorization>
  2.         <allow users="ben"/>
  3.         <deny users="*" />
  4.       </authorization>


Mon formulaire Admin/Login.aspx contient bien sur mon composant Login.  
 
Pour la racine tout est ok j accède à ce que je veut et si j essai d'accéder au repertoire admin je tombe effectivement sur la page de login. Mais par contre quand j'essai de me logger il me dit toujours que le login est impossible!
 
Pourtant mon mot de passe est correctement encore en MD5 j ai fait via un site web et via la proc  FormsAuthentication.HashPasswordForStringInConfigFile("benji", "MD5" ); ca me donne la meme chose!
 
Question subsidiare: comment faire pour utiliser les roles dans le Web.Config??
 
D'avance merci
 
Ben

Reply

Marsh Posté le 17-10-2007 à 19:28:30   

Reply

Marsh Posté le 18-10-2007 à 14:27:24    

Personne???
 
J'ai également essayer sans encryption:

Code :
  1. <authentication mode="Forms">
  2.   <forms loginUrl="~/Admin/Login.aspx" protection="None" timeout="20">
  3.    <credentials passwordFormat="Clear">
  4.     <user name="ben" password="benji"/> <!-- 6875991F9B848D94C8B6DB253849CDDE -->
  5.    </credentials>
  6.   </forms>
  7.  </authentication>


 
Mais sans plus de succès

Reply

Marsh Posté le 19-10-2007 à 13:59:25    

Perso j'utilise cela dans le fichier web.config :
 

Code :
  1. <roleManager enabled="true" defaultProvider="CustomizedRoleProvider" cacheRolesInCookie="true">
  2.   <providers>
  3.    <add name="CustomizedRoleProvider" type="classe_RoleProvider"/>
  4.   </providers>
  5.  </roleManager>
  6.  <membership defaultProvider="CustomizedMembershipProvider">
  7.   <providers>
  8.    <add name="CustomizedMembershipProvider" type="classe_MembershipProvider"/>
  9.   </providers>
  10.  </membership>


 
J'ai également défini dans mon dossier App_Code, les classes "classe_MembershipProvider" et "classe_RoleProvider"qui héritent respectivement de MembershipProvider et RoleProvider afin de personnaliser totalement mon controle Login.
J'essayerai de t'en dire + ce soir !

Reply

Marsh Posté le 19-10-2007 à 14:11:42    

Mon but serait d'éviter d'utiliser la db et d avoir tout dans le Web.Config

Reply

Marsh Posté le 19-10-2007 à 17:54:56    

Par défaut, si tu ne spécifies rien dans le fichier Web.config, ASP.NET (et plus particulièrement ton contrôle de Login) considère que tu utilises SQL Server et son schéma spécifique pour te connecter. D'après les exemples que j'ai pu voir en faisant une recherche sous Google, beaucoup réimplémente un controle Login a leur manière sans passer par le contrôle ASP.NET déjà dispo.
 
Par ailleurs, tu n'es pas obligé d'utiliser la DB si tu implémentes ton propre Membership.
 
Voir ici, il utilise un fichier texte :  
 
http://ditch.developpez.com/aspnet [...] pprovider/


Message édité par arnaudm57 le 19-10-2007 à 18:02:46
Reply

Marsh Posté le 19-10-2007 à 19:59:34    

personnellement, réimplémenter son membership est la meilleure solution car tout le mécanisme existe déjà. Pas besoin de faire soit même des vérifications dans tous les sens. .NET le fait pour nous. Alors franchement, oui il faut utiliser les membership pour la sécurité en .NET. Les pages seront ainsi bcp plus sécurisée à tout point de vue.

Reply

Marsh Posté le 01-12-2007 à 18:51:19    

Moi j'ai réussi en faisant comme ça. Alors tout d'abord le coté asp:
 

Code :
  1. <asp:Login ID="Login1" runat="server" OnAuthenticate="Login1_Authenticate" DestinationPageUrl="AspLogged.aspx">
  2. <TitleTextStyle BackColor="#5D7B9D" Font-Bold="True" Font-Size="0.9em" ForeColor="White" />
  3. <InstructionTextStyle Font-Italic="True" ForeColor="Black" />
  4. <TextBoxStyle Font-Size="0.8em" />
  5. <LoginButtonStyle BackColor="#FFFBFF" BorderColor="#CCCCCC" BorderStyle="Solid" BorderWidth="1px"
  6.  Font-Names="Verdana" Font-Size="0.8em" ForeColor="#284775" />
  7. </asp:Login>


 
Ensuite dans la partie C# de mon code, j'ai dû faire ceci:

Code :
  1. protected void Login1_Authenticate(object sender, AuthenticateEventArgs e){
  2.  if (FormsAuthentication.Authenticate(Login1.UserName, Login1.Password))
  3.  {
  4.   FormsAuthentication.RedirectFromLoginPage(Login1.UserNameLabelText, true);
  5.   //Response.Redirect("AspLogged.aspx" );
  6.  }
  7. }


 
Redis-moi si jamais t'as tj des pb, j'pourrai t'envoyer la totalité de mon code.
Bonne chance! :hello:


Message édité par TranceVibes le 01-12-2007 à 19:38:26
Reply

Marsh Posté le 02-12-2007 à 21:04:21    

mauvaise solution désolé.  
La bonne solution dans son cas c'est d'implémenté sur membership soit même. ça t'assure une réelle sécurité pour utiliser tous ce qui existe. Car la, ça ne te sert à rien du tout pour gérer la sécurité. A moins de faire du marteau burin dans toutes tes pages.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed