Cadeia de conexão usando autenticação do Windows

133

Estou criando um site, mas no banco de dados eu uso a autenticação do Windows.

Eu sei que você usa isso para autenticação SQL

<connectionStrings> 
    <add name="NorthwindContex" 
       connectionString="data source=localhost;
       initial catalog=northwind;persist security info=True; 
       user id=sa;password=P@ssw0rd" 
       providerName="System.Data.SqlClient" /> 
</connectionStrings>

Como modifico isso para funcionar com a autenticação do Windows?

MDC
fonte

Respostas:

192

Substitua o nome de usuário e a senha por Integrated Security=SSPI;

Portanto, a cadeia de conexão deve ser

<connectionStrings> 
<add name="NorthwindContex" 
   connectionString="data source=localhost;
   initial catalog=northwind;persist security info=True; 
   Integrated Security=SSPI;" 
   providerName="System.Data.SqlClient" /> 
</connectionStrings> 
heads5150
fonte
1
Eu sei que você pode definir um usuário específico do AD para o pool de aplicativos (aplicativo da web). você pode fazer o mesmo com o aplicativo windows?
user384080
6
Persist Security Infoprovavelmente não é necessário: stackoverflow.com/a/2010059/1869660
Sphinxxx
@ heads5150: É possível que não haja seqüências de conexão no meu projeto? estou esquecendo de algo. Eu procurei em toda a minha solução para encontrar uma seqüência de conexão como acima. não consegui encontrar nenhum. O que eu fundei foi comentado no release e na configuração da web. Estou usando o vs express 2013 com db local.
Vini
19

Para a solução correta após muitas horas:

  1. Abra o arquivo de configuração
  2. Altere a cadeia de conexão com o seguinte

<add name="umbracoDbDSN" connectionString="data source=YOUR_SERVER_NAME;database=nrc;Integrated Security=SSPI;persist security info=True;" providerName="System.Data.SqlClient" />

  1. Altere YOUR_SERVER_NAME com o nome do servidor atual e salve
  2. Abra o Gerenciador do IIS
  3. Encontre o nome do pool de aplicativos que o site ou aplicativo da web está usando
  4. Clique com o botão direito e escolha Configurações avançadas
  5. Nas configurações avançadas em Modelo de processo, altere a identidade para conta personalizada e adicione os detalhes do administrador do servidor, consulte as imagens anexas:

insira a descrição da imagem aqui

Espero que isso ajude.

Ahmed Na.
fonte
2
Essa solução funcionou para mim, mas eu queria saber como essa alteração na identidade afeta o comportamento do aplicativo, em termos de segurança?
CesarB
Todas as ações executadas pelo processo serão executadas com as permissões / privilégios dessa conta. Não conceda mais permissões do que o necessário. Uma conta de serviço dedicada seria aconselhável. Recomendaria verificar também o DISA IIS e Windows Server STIG
duct_tape_coder
12

Para conectar-se a um banco de dados sql server via autenticação do Windows, você precisa basicamente de qual servidor você deseja conectar, qual é o nome do banco de dados, as informações de Segurança Integrada e o nome do provedor.

Basicamente, isso funciona:

<connectionStrings>      
<add name="MyConnectionString"
         connectionString="data source=ServerName;
   Initial Catalog=DatabaseName;Integrated Security=True;"
         providerName="System.Data.SqlClient" />
</connectionStrings> 

Definir o campo Segurança Integrada como true significa basicamente que você deseja acessar o banco de dados via autenticação do Windows, se você definir esse campo, a autenticação falsa do Windows não funcionará.

Também está funcionando de acordo com o provedor que você está usando.

  • SqlClient tanto Integrated Security = true; ou IntegratedSecurity = SSPI; está funcionando.

  • OleDb é Segurança Integrada = SSPI;

  • Odbc é Trusted_Connection = yes;
  • OracleClient é Segurança Integrada = sim;

Segurança Integrada = true lança uma exceção quando usada com o provedor OleDb.

nzrytmn
fonte
6

Isso é mais curto e funciona

<connectionStrings>      
<add name="DBConnection"
             connectionString="data source=SERVER\INSTANCE;
       Initial Catalog=MyDB;Integrated Security=SSPI;"
             providerName="System.Data.SqlClient" />
</connectionStrings> 

Informações de segurança persistentes não necessárias

Carlos E
fonte