none
Autenticação Via Windows + PHP RRS feed

  • Pergunta

  • Pessoal Boa tarde,

    Preciso desenvolver um código PHP que pegue o usuário logado na máquina "domínio\usuário" e com essa informação consiga autenticar em um SQL Server habilitado para autenticação via Windows. Sou iniciante em PHP e SQL Server, isso é possível?
    Obrigado.
    quinta-feira, 12 de setembro de 2019 18:03

Todas as Respostas

  • Oziel,

    Sinceramente falando, acredito que você deveria postar a sua dúvida nos fóruns de desenvolvimento ou algum forum do PHP, esta dúvida esta mais para desenvolvimento do que para o SQL Server.


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    quinta-feira, 12 de setembro de 2019 23:50
  • Oziel, você já tem a string de conexão?

    Experimente utilizar "trusted connection".

    Sugestão de leitura: Connect Using Windows Authentication 

     


    José Diz     Belo Horizonte, MG - Brasil     [query performance tuning: Porto SQL]


    Este conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.

    • Editado José Diz sexta-feira, 20 de setembro de 2019 10:32
    sexta-feira, 13 de setembro de 2019 00:37
  • Vou procurar, obrigado pelo retorno.
    sexta-feira, 13 de setembro de 2019 11:18
  • Já tinha dado uma olhada nesse link, mas se entendi bem, esse modo, pegaria a autenticação do servidor Web em que o apache está rodando e não o usuário final que está executando a página. O que nesse caso, para o meu problema, não resolveria.
    Obrigado pelo retorno.
    sexta-feira, 13 de setembro de 2019 11:21
  • OzielBr,

    Sim, ele vai justamente fazer isso, no caso de alguma maneira o SQL Server consegue identificar de que forma o mesmo esta sendo acessado, por quem e como.

    Mas acredito que isso não iria te ajudar.

    O que você poderia pensar em fazer, não sei se é possível, mas quando o link da sua aplicação for aberto, será que o uso de algum arquivo de texto, xml ou json armazenado na máquina a qual a aplicação esta sendo utilizada não poderia te ajudar?


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    sexta-feira, 13 de setembro de 2019 12:21
  • Junior,

    Já havia pensado nisso guardando em um LOG, inclusive cheguei a fazer notificação via e-mail também. Mas o pessoal não aceitou, pois no monitoramento do SQL Server, eles precisam que mostre o usuário que está consultando em tempo real.
    Obrigado pelo retorno.
    segunda-feira, 16 de setembro de 2019 11:16
  • OzielBr,

    Ok, veja se os exemplos abaixo poderá lhe ajudar de alguma forma:

    -- Identificando o número de conexões por aplicação --
    Select hostname, program_Name, count(*) Quantidade
    From sysprocesses A 
    Where spid > 50
    Group By hostname, program_Name
    Order by Quantidade Desc

    Neste outro exemplo você vai obter a relação de conexões, IPs e nomes de programas utilizados:

    SELECT  ec.client_net_address, 
                  es.[program_name],
                  es.[host_name], 
                  es.login_name,
                  COUNT(ec.session_id) AS [connection count]
    FROM sys.dm_exec_sessions AS es INNER JOIN sys.dm_exec_connections AS ec
                                                               ON es.session_id = ec.session_id
    GROUP BY ec.client_net_address, 
                      es.[program_name],
                      es.[host_name], 
                      es.login_name
    ORDER BY ec.client_net_address,  es.[program_name];

    Já este você consegui identificar todas as informações relacionadas aos usuários e filtrar por nome de aplicação:

    SELECT sess.session_id, 
                sess.login_time, 
                sess.original_login_name, 
                sess.login_name, 
                sess.host_name, 
                sess.program_name 
     FROM sys.dm_exec_sessions sess Inner JOIN sys.dm_exec_connections conn 
                                                               ON sess.session_id = conn.session_id
    WHERE program_name = 'Microsoft SQL Server Management Studio'

    Espero que estes exemplos possam te ajudar, destaco que ambos não são de minha autoria, alguns extraídos de partes da documentação official da Microsoft em relãção a DMV sys.dm_exec_sessions e sys.dm_exec_connections.


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    segunda-feira, 16 de setembro de 2019 11:24
  • Obrigado pelo retorno Júnior, mas infelizmente para o meu caso não me ajudou.

    Depois de muita pesquisa, acredito que não seja possível realizar o que eu preciso, pelo menos via APACHE.
    Vou realizar um teste em um ambiente com IIS. Vi que ele tem alguns diferenciais que não tem no APACHE.
    Obrigado mais uma vez.
    quinta-feira, 19 de setembro de 2019 15:25
  • OzielBr,

    Ok, ficamos no aguardo de um retorno.


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    quinta-feira, 19 de setembro de 2019 16:51
  • Já tinha dado uma olhada nesse link, mas se entendi bem, esse modo, pegaria a autenticação do servidor Web em que o apache está rodando e não o usuário final que está executando a página.

     
    Verifique se com uma das seguintes funções você obtém a informação que necessita:

    • SYSTEM_USER 
      It returns the name of the currently executing context.
      If the current user is logged in to SQL Server by using Windows Authentication, SYSTEM_USER returns the Windows login identification name in the form: DOMAIN\user_login_name. However, if the current user is logged in to SQL Server by using SQL Server Authentication, SYSTEM_USER returns the SQL Server login identification name
        
    • CURRENT_USER 
        
    • SUSER_NAME 
        
       


    Lembre-se de marcar esta resposta se ela te ajudou a resolver o problema.


    José Diz     Belo Horizonte, MG - Brasil     [query performance tuning: Porto SQL]


    Este conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.

    sexta-feira, 20 de setembro de 2019 10:32