Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,000

    [Asp.net] Autenticazione tramite Ldap

    Ciao,
    devo eseguire l'autenticazione degli utenti tramite Ldap, ma non so da dove partire.

    Sto leggendo dei doc in rete, ma se qualcuno ha già esperienza in merito....

  2. #2
    Ciao, allora la problematica non è complicata...

    innanzitutto devi inserire nel tuo web.config un provider con i dati di connessione verso LDAP in questo modo

    codice:
    <add name="AD1" type="Microsoft.Office.Server.Security.LdapMembershipProvider, Microsoft.Office.Server, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
     server="_INDIRIZZOIPDELSERVERLDAP" 
    port="PORTA" 
    useSSL="false" 
    userDNAttribute="distinguishedName" 
    userNameAttribute="sAMAccountName" 
    userContainer="CN=Users,dc=dominio,dc=it" userObjectClass="person" userFilter="ObjectClass=User" 
    scope="Subtree" 
    connectionUsername="usernameConnessione" 
    connectionPassword="PasswordConnessione" otherRequiredUserAttributes="sn,givenname,cn" />
    questo va in
    codice:
    <system.web> 
    <membership defaultProvider="defaultProvider"> 
    <providers>

    e Poi per la validazione dell'utente puoi utilizzare una semplice funzione fatta in questo modo.

    codice:
    public override bool ValidateUser(string username, string password) { 
    bool success = false; 
    try { 
    if (!success) 
    { try 
    { 
    LdapMembershipProvider ldap1 = Membership.Providers["AD1"] as LdapMembershipProvider; 
    success = success || ldap1.ValidateUser(username, password); 
    } 
    catch (Exception ex)
     { // throw (new Exception("Errore in fase di accesso al Provider AD1", ex)); 
    } 
    } 
    return success; 
    } 
    catch (Exception ex) { throw (new Exception("Errore nel metodo Validate", ex)); } }
    Devi usare come reference:
    using Microsoft.Office.Server.Security;
    using System.Security;

    Ed il gioco è fatto.

  3. #3
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,000
    Attualmente uso questo :

    codice:
     Function AuthenticateUser(path As String, user As String, pass As String) As Boolean
    
            Dim de As New DirectoryEntry("LDAP://172.XX.20.XX/DC=aXXXXXa,DC=local", user, pass, AuthenticationTypes.None)
    
            Try
    
                Dim ds As DirectorySearcher = New DirectorySearcher(de)
    
    
                ds.Filter = "(objectClass=*)"
    
                ds.PropertiesToLoad.Add("cn")
    
                Dim results = ds.FindOne()
    
                For Each c In results.Properties
                    Dim a = c.ToString
                Next
    
    
                ds.Dispose()
    
                Return True
    
              
            Catch
                de.Dispose()
                de = Nothing
                Return False
            End Try
        End Function
    E mi funziona mi fa passare l'autenticazione, però poi vorrei recuperare tutte le proprietà assegnate all'utente loggato e non so come fare.

    In questo modo ho mantenuto l'autenticazione classica di Asp.net.
    Se mi passa questa routine di ldap successivamente uso la FormsAuthentication per creare il ticket di autenticazione.

  4. #4
    Questo è in c#
    codice:
    foreach (string property in de.Properties.PropertyNames) 
    { 
    properties += property + ", "; 
    }
    dove de è il DirectoryEntry

  5. #5
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,000
    Nel frattempo ho risolto.

    Adesso sto cercando come cambiare la password dell'utente.

    Grazie.

  6. #6

  7. #7
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,000
    Sto provando cosi ma mi da un errore strano chilometrico.

    Codice PHP:
     utente.Invoke("ChangePassword", New Object() {pass"nuovapassword"})
                
    utente.CommitChanges()
                
    utente.Close() 

  8. #8
    io ho sempre fatto così invece.....


    codice:
    DirectoryAttributeModification modifyUserPassword = new DirectoryAttributeModification(); 
    modifyUserPassword.Operation = DirectoryAttributeOperation.Replace;
     modifyUserPassword.Name = "userPassword"; modifyUserPassword.Add("NUOVAPASSWORD");
     ModifyRequest modifyRequest = new ModifyRequest("USERNAME", modifyUserPassword); 
    DirectoryResponse response = connection.SendRequest(modifyRequest);

  9. #9
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,000
    La prenderò in considerazione....certo ci sono tanti modi per farlo.

    Grazie ancora.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.