none
Mapear usuarios do active directory para o SQL Server 2005 RRS feed

  • Pergunta

  • Boa noite, colegas.

    Estamos migrando para base SQL Server na empresa em que trabalho, porém estou passando por algumas dificuldades por não ter experiencia no assunto, por isso conto com sua ajuda.
    Minha aplicaçao conectace ao banco de dados via ODBC e dentro do SQL Server criei um login para o banco de dados onde sua autenticaçao é via SQL Server. Pergunto, caso eu queira criar um login X e mapear todos os usuarios do active directory, para este login X tem como eu mapear todos usuarios de uma unica vez para o SQL Server, ou tenho que mapear um a um?

    Grata.
    terça-feira, 11 de agosto de 2009 02:44

Respostas

  • Neia, veja se o "LDAP://" utilizando um Linkedserver com o AD te ajuda....


    /*
     Cria o LinkedServer com o AD
    */

    exec sp_addlinkedserver
      'adsi',
      '',
      'ADSDSOObject',
      ''
    go

    /*
     você tem que colocar um login AD válido no linkedserver
    */

    exec sp_addlinkedsrvlogin
      'adsi',
      false,
      'Seu_Dominio\Seu_Usuario',
      'Seu_Dominio\Seu_Usuario',
      'Aqui_a_Senha'
    go

    /*
         Aqui a Query vai trazer todos os usuários do AD

    */

    select  *
    from  openquery(adsi, '
    select  givenName,
        sn,
        sAMAccountName,
        displayName,
        mail,
        telephoneNumber,
        mobile,
        physicalDeliveryOfficeName,
        department,
        division
    from    ''LDAP://dc=Seu_Dominio,dc=local''
    where   objectCategory = ''Person''
            and
            objectClass = ''user''
    ')



    Com essas informações na mão, dá p/ fazer muita coisa.......


    Tks. Fausto Fiorese Branco DBA - SQL Server 2k5 São Paulo - Brasil
    • Marcado como Resposta Neia_S quinta-feira, 13 de agosto de 2009 13:09
    terça-feira, 11 de agosto de 2009 20:55

Todas as Respostas

  • Olá Neia_S

    Não é possível mapear os usuários do Active Directory para um login do tipo SQL Server.
    Os usuários do Active Directory que são mapeados utilizam o login do WINDOWS (Domínio) que é um tipo de Login diferente do tipo SQL Server.

    Com o login do Windows o SQL Server valida as credenciais do usuário de acordo com o usuário logado na estação de trabalho ou servidor que se conecta ao SQL Server,no seu caso,para seus usuários se conectarem ao SQL Server utilizando a aplicação você terá que mapear um login do tipo SQL Server para cara usuário.

    Para criar o login utilize o comando abaixo:
    CREATE LOGIN [LOGIN_NAME] WITH PASSWORD = 'PWD'

    Para mapear um usuário no banco de dados para utilizar este login utilize:
    USE [DATABASE_NAME]
    CREATE USER [USER_NAME] FOR LOGIN [LOGIN_NAME]

    Espero ter ajudado.
    Até mais.

    MCP 2003
    • Sugerido como Resposta Felipesf terça-feira, 11 de agosto de 2009 10:45
    terça-feira, 11 de agosto de 2009 10:45
  • bom dia Neia,

    só complementando a resposta do meu chará Felipe... como ele disse... usários do tipo SQL Authentication não são mapeados com usuários do windows...eles são independentes, armazenados internamente pelo sql server e utilizam um SID gerado pelo SQL Server...

    agora... se você for utilizar autenticação do windows (na hora de criar o usuario, selecionar Windows Authentication) aí sim você pode especificar um grupo do AD e depois adicionar seus usuários nesse grupo... liberando acesso para todos de uma única vez... 
    lembrando que nesse caso vc vai ter que modificar seu ODBC pra utilizar autenticacao windows ao inves de sql... 

    pergunta... se vc já utiliza autenticacao do tipo Sql Server, pra que vc iria mapear os usuarios do AD no banco?

    att.

    Felipe Ferreira
    http://weblogs.asp.net/felipeferreira
    MCT, MCITP, MCPD, 5X MCTS
    terça-feira, 11 de agosto de 2009 14:23

  • Boa tarde, Felipe
    Respondendo sua pergunta.

    pergunta... se vc já utiliza autenticacao do tipo Sql Server, pra que vc iria mapear os usuarios do AD no banco?

    att.

    Felipe Ferreira
    http://weblogs.asp.net/felipeferreira
    MCT, MCITP, MCPD, 5X MCTS
    No inicio eu havia criado um login e usuario com autenticação do windows, e resolvi criar um unico usuario com autenticação SQL e mapealo no ODBC de cada client. Mas só fiz isso quando vi que teria que mapear usuario a usuario do AD dentro do novo grupo que eu havia criado, então postei minha duvida no forum, para ver se teria algum jeito de mapaer os usurios do AD automaticamente para o grupo que criei no SQL Server ja que é uma ferramenta da microsoft.

    Mas o usuario com autenticação do SQL esta atendendo minha necessidade muito bem, o unico problema que estou tendo é que cada vez que vou abrir a aplicação tennho que informar a senha do usuario mapeado no ODBC. Não sei porque o ODBC não grava a senha que digitei quando mapeie o usuario, você tem alguma dica?

    Abraço
    terça-feira, 11 de agosto de 2009 19:43
  • Neia, veja se o "LDAP://" utilizando um Linkedserver com o AD te ajuda....


    /*
     Cria o LinkedServer com o AD
    */

    exec sp_addlinkedserver
      'adsi',
      '',
      'ADSDSOObject',
      ''
    go

    /*
     você tem que colocar um login AD válido no linkedserver
    */

    exec sp_addlinkedsrvlogin
      'adsi',
      false,
      'Seu_Dominio\Seu_Usuario',
      'Seu_Dominio\Seu_Usuario',
      'Aqui_a_Senha'
    go

    /*
         Aqui a Query vai trazer todos os usuários do AD

    */

    select  *
    from  openquery(adsi, '
    select  givenName,
        sn,
        sAMAccountName,
        displayName,
        mail,
        telephoneNumber,
        mobile,
        physicalDeliveryOfficeName,
        department,
        division
    from    ''LDAP://dc=Seu_Dominio,dc=local''
    where   objectCategory = ''Person''
            and
            objectClass = ''user''
    ')



    Com essas informações na mão, dá p/ fazer muita coisa.......


    Tks. Fausto Fiorese Branco DBA - SQL Server 2k5 São Paulo - Brasil
    • Marcado como Resposta Neia_S quinta-feira, 13 de agosto de 2009 13:09
    terça-feira, 11 de agosto de 2009 20:55
  • Obrigada pela dica Fausto,
    Mas acho que fiz algo errado, pois na primeira vez que rodei o script que me mandou criou o linked server corretamente, alterei meu ODBC para conectar pelo windows authentication, mas nao funionei, mapei este linked server para o login AUTORIDADE NT\SYSTEM mas tbm nao consegui fazer minha aplicação abrir pelos usuarios mapeados para o linked server.

    Depois de tantas tentaivas exclui o adsi que eu havia criado e agora não consigo criar mai só tenho o seguinte retrno.

    Msg 15028, Level 16, State 1, Procedure sp_MSaddserver_internal, Line 89
    The server 'adsi' already exists.
    Msg 7321, Level 16, State 2, Line 3
    An error occurred while preparing the query "
    select  givenName,
        sn,
        sAMAccountName,
        displayName,
        mail,
        telephoneNumber,
        mobile,
        physicalDeliveryOfficeName,
        department,
        division
    from    'LDAP://dc=abacaxi,dc=local'
    where   objectCategory = 'Person'
            and
            objectClass = 'user'
    " for execution against OLE DB provider "ADSDSOObject" for linked server "adsi".


    O que estou fazendo de errado?
    No ODBC terei que especificar que a conexão é por autenticação SQL ou Windows?

    Conto muito com sua ajuda.

    Obrigada

    quarta-feira, 12 de agosto de 2009 15:47

  • Nao sei se vai ajudar, mas uma estrategia pode ser.

    1. Criar um grupo no Ad para todos os usuarios que terao acesso ao seu sql server
    2. Colocar todos os usuarios nesse grupo
    3. Criar um login ai sim no sql server para esse grupo e estabelecer as permissoes.


    soh lembrando que de dentro da sua aplicacao ou odbc vc tem que passar o parametro Integrated Security na string de conexao.

    se tiver duvidas de como montar a string entre no site
    http://www.connectionstrings.com/


    WTN
    quarta-feira, 12 de agosto de 2009 16:05
  • Neia,

       Primeiro você pode fazer um teste de conxão no Linked Server: sp_testlinkedserver ADSI

       Se estiver conectando, verifique se os usuários que você colocou para ele (pela sp_addlinkedsrvlogin no script que eu passei) estão cadastrados: sp_helplinkedsrvlogin ADSI

       Esse usuário tem que ser um usuário válido do seu dominio do Active Directory.


       E para desencargo, verifique se você tem o ADSDSOObject no servidor: exec xp_enum_oledb_providers  
    Tks. Fausto Fiorese Branco DBA - SQL Server 2k5 São Paulo - Brasil
    quarta-feira, 12 de agosto de 2009 16:22
  • Obrigada a todas pelas dicas!

    Fausto, obrigada pela atenção!
    quinta-feira, 13 de agosto de 2009 13:11
  • Pessoal,

    Estou fazendo uma consulta no meu AD, através de Query do SQL, porém a consulta não traz todos os usuários do meu Active Directory.

    SELECT

     

    * FROM OPENQUERY(ADSI, 'SELECT distinguishedname, mail, displayName, sAMAccountName

    FROM ''LDAP://bahw3dc1.mceba.com.br'' WHERE objectCategory = ''person'' AND objectClass = ''user'''

     

    )

    WHERE

     

    distinguishedname LIKE '%CAMACARI%'

    ORDER

     

    BY displayName

    Nesta minha OU tem 299 usuários, porém a consulta ele só traz 176. Já comparei as propriedades de dois usuários, porém não consegui localizar nada de anormal.

    Alguém já passou por essa situação e que possa me ajudar?? Aguardo retorno.


    Mateus Batista da Silva MCP Windows Server 2003 / Windows XP Professional
    terça-feira, 14 de dezembro de 2010 19:37