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

ASP.NET MVC Discussion :

Authentification mixte via AD et via BDD pour un site ASP.NET MVC 4


Sujet :

ASP.NET MVC

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 68
    Points : 39
    Points
    39
    Par défaut Authentification mixte via AD et via BDD pour un site ASP.NET MVC 4
    Bonjour,

    J'aimerai savoir s'il était possible d'implémenter facilement une authentification de type "intranet" via l'AD mais aussi d'avoir la possibilité de bypasser l'AD en renseignant un login et un mot de passe stockés en base de données (form authentification) via un écran de login sans connexion à l'AD.
    Ceci pour une même application ASP.NET MVC 4.

    Merci d'avance

  2. #2
    Nouveau membre du Club
    Inscrit en
    Octobre 2005
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 26
    Points : 29
    Points
    29
    Par défaut
    Bonjour,

    Possible : oui, Simple.. c'est une autre histoire.

    En fait la solution est a penser de manière différente : Il faut transformer l'identification AD (ou AAD) en CookieAuthentication (c'est à dire l'authentification par formulaire).

    J'ai réussi à le faire avec AAD mais la procédure doit être sensiblement identique avec un AD on premise j'imagine.

    J'ai utilisé dans mon cas L'OpenId mais le principe reste le même quelque soit le mode.

    Dans Startup.Auth.cs :

    Code : 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
     
     
    app.SetDefaultSignInAsAuthenticationType(DefaultAuthenticationTypes.ApplicationCookie)
     
    app.UseCookieAuthentication(new CookieAuthenticationOptions
                {               
                    AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,               
                    LoginPath = new PathString("/Account/ExternalLogin"),
                    Provider = new CookieAuthenticationProvider
                    {
     
                    }
                });
     
    app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);
     
    app.UseOpenIdConnectAuthentication(
                  new OpenIdConnectAuthenticationOptions
                  {                  
                      AuthenticationType = OpenIdConnectAuthenticationDefaults.AuthenticationType, 
                      ClientId = ConfigHelper.ClientId,
                      Authority = ConfigHelper.Authority,
                      PostLogoutRedirectUri = ConfigHelper.PostLogoutRedirectUri,
                      AuthenticationMode = Microsoft.Owin.Security.AuthenticationMode.Passive,
                      CallbackPath = new PathString("/Account/ExternalLoginCallback"), //New
                      RedirectUri = ConfigHelper.PostLogoutRedirectUri+ "/Account/ExternalLoginCallback",  
                      Notifications = new OpenIdConnectAuthenticationNotifications
                      {
                          AuthenticationFailed = context =>
                          {
                              context.HandleResponse();
                              context.Response.Redirect("/Home/Error?message=" + context.Exception.Message);
                              return Task.FromResult(0);
                          }
                      }
                  });
    Le reste est une question d'utilisation de l'attribut Authorize.

    Dans la page login les externals connexions vont prendre la valeur OpenId (un bouton) et à gauche il y aura le formulaire normal.

    Quand tu te connecte avec AD (ou ici AAD) la première fois il va aller sur la page ExternalLoginConfirmation et associer ton compte AAD à un compte local (UserApplication).

    En suite il remplace l'authentification en cours par celle du local.

    l'OpenId ne sert en fait qu'a dire : ok c'est bien un utilisateur reconnu, tu peux le lier à un compte local.

Discussions similaires

  1. [Débutant] ASP.NET MVC 4 fait appel à des web service pour intéragir avec la BDD
    Par asma2881 dans le forum ASP.NET MVC
    Réponses: 3
    Dernier message: 27/03/2013, 22h14
  2. Réponses: 2
    Dernier message: 01/04/2011, 17h18
  3. Identification automatique pour un site ASP.Net
    Par maitrebn dans le forum ASP.NET
    Réponses: 6
    Dernier message: 12/05/2010, 11h23
  4. [Joomla!] Une seule bdd pour plusieurs sites
    Par Imp rusg dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 23/02/2009, 10h16
  5. Probléme de debug du code C# pour un site ASP.net
    Par UNi[FR] dans le forum ASP.NET
    Réponses: 1
    Dernier message: 07/06/2008, 12h04

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