Exportar (0) Imprimir
Expandir Tudo

Como: Acesso o SQL servidor usando segurança integrada do Windows

Se seu aplicativo é executado em uma intranet baseada em windows, você pode ser capaz de usar a autenticação integrada do Windows para acessar o banco de dados. Segurança integrada usa a identidade atual do Windows estabelecida no segmento de sistema operacional para acessar o banco de dados SQL Server. Você pode então mapear a identidade do Windows para um banco de dados SQL Server e permissões.

Para conectar-se ao SQL Server usando autenticação integrada do Windows , você deve identificar a sua identidade do Windows sob a qual o aplicativo ASP.NET está sendo executado. Você também deve ter certeza de que a identidade tenha acesso ao banco de dados SQL Server. Este tópico inclui um exemplo de código que exibe a identidade Windows atual do aplicativo ASP.NET .

Se o SQL Server estiver em um computador diferente do servidor Web , a identidade do Windows deve ser capaz de acessar através da rede a instância remota do SQL Server. ( Redes Windows que foram configurados adequadamente com autenticação Kerberos são capazes de fazer isso.) No entanto, dependendo das configurações do elemento identity, a identidade do Windows estabelecida na thread de sistema operacional para aplicações ASP.NET não pode ser capaz de acessar corretamente o SQL Server remoto.

Você pode fornecer um nome de usuário e senha específicos para a identidade do processo de trabalho do site Web , como mostrado em Como: acessar o SQL Server usando um usuário de domínio mapeado do Windows , ou poderepresentar a identidade autenticada fornecida pelo Internet Information Services (IIS). Para representar a identidade do Windows fornecida pelo IIS, defina o atributo impersonate do elemento identity de configuração para true, conforme mostrado no exemplo à seguir:

<system.web>
  <identity impersonate="true" />
</system.web>

No IIS, somente a autenticação básica registra os usuários com um token de segurança que acessa através da rede um servidor SQL remoto. Por padrão , outros modos de segurança do IIS usados em conjunto como elemento identity não resultará em um token que pode autenticar em um SQL Server remoto.

Se o site está configurado para suportar apenas o acesso anônimo no IIS, então o token de segurança fornecido pelo IIS será da conta de usuário do Windows que esta configurada para acessar anonimamente no IIS. A conta anônima de usuário pode ser usada para autenticar em um servidor SQL remoto. No entanto, a conta de usuário anônimo padrão é uma conta de máquina local e , portanto, não irá existir como uma conta no SQL Server remoto. É possível alterar a conta anônima IIS para usar uma conta de domínio , ou você pode espelhar a conta de máquina local no SQL Server remoto , criando uma conta local no SQL Server remoto com o mesmo nome de usuário e senha . Além disso, a propriedade da metabase LogonMethod para IIS6 deve ser definida como uma opção que permita que as credenciais acessem através da rede. Por exemplo , a definição MD_LOGON_NETWORK_CLEARTEXT metabase permite que as credenciais de logon acessem através da rede.

Se você não tiver certeza da identidade do Windows para o seu aplicativo e se essa identidade está conectado com um token que pode acessar pela rede, você pode executar a seguinte página ASP.NET como parte de seu aplicativo para exibir o nome da identidade do Windows se um valor que indica se a identidade permite acesso através da rede. Note que o exemplo à seguir não leva em conta se delegação Kerberos foi definida com sucesso ou não para o seu domínio.

<%@ Page Language="C#" %>
<%@ Import namespace="System.Security.Principal" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>ASP.NET Example</title>
<script runat="server">

public bool WillFlowAcrossNetwork(WindowsIdentity w)
{
  foreach (SecurityIdentifier s in w.Groups)
  {
    if (s.IsWellKnown(WellKnownSidType.InteractiveSid)) { return true; }
    if (s.IsWellKnown(WellKnownSidType.BatchSid))       { return true; }
    if (s.IsWellKnown(WellKnownSidType.ServiceSid))     { return true; }
  }

  return false;
}

</script>
</head>
<body>
<%
  WindowsIdentity current =  WindowsIdentity.GetCurrent();
  Response.Write(current.Name + ", " + WillFlowAcrossNetwork(current) + "<br />");
%>
</body>
</html>


O procedimento à seguir mostra como acessar um banco de dados SQL Server usando autenticação integrada do Windows em um cenário de intranet, onde foi concedido para cada usuário o acesso ao SQL Server individualmente.

Para começar , você precisa configurar seu aplicativo no IIS desativando o acesso anônimo e ativando a autenticação do Windows .

Para configurar o IIS para autenticação integrada do Windows

  1. No Windows, abra a ferramenta de administração do Internet Information Services.

    • Nos sistemas operacionais Microsoft Windows server 2000 ou Windows Server 2003: No menu Iniciar, aponte para programas, em seguida, ferramentas administrativas, em seguida, Internet Services Manager.

    • No sistema operacional Microsoft Windows XP Professional: abra as ferramentas administrativas no painel de controle.

  2. Abra o nó do seu servidor e, em seguida, abra os nós até encontrar o para de sua aplicação, que normalmente está localizado em Default Web Site.

  3. Clique com o botão direito em sua aplicação e então clique em Properties.

  4. Na aba Directory Security, clique em Edit.

  5. Na caixa de diálogo Métodos de autenticação , desmarque a caixa de seleção Acesso anônimo e então faça o seguinte:

    • Se o SQL Server estiver no mesmo computador que o IIS , marque a caixa de seleção autenticação integrada do Windows.

    • Se o SQL Server é um servidor remoto , marque a caixa de seleção Autenticação básica e desmarque a caixa de seleção autenticação integrada do Windows.

  6. Clique em todas as caixas de diálogo.

No arquivo de configuração do aplicativo ( Web.config) , especifique que o aplicativo irá passar as credenciais do usuário fornecidas pelo IIS .

Para configurar o Web.config para representar a identidade fornecida pelo IIS

  • Abra o arquivo Web.config do seu aplicativo e adicione o seguinte ao elemento system.web :

    <identity impersonate="true"/>
    
    ObservaçãoObservação:

    Elementos no Web.config são case-sensitive.

Quando você cria uma string de conexão para acessar o SQL Server, você deve incluir atributos que informam ao SQL Server que você está usando segurança integrada.

Para configurar sequências de conexão para segurança integrada do Windows

  • Em qualquer string de conexão do SQL Server,incluir o atributo Trusted_Connection= Yes e remover os atributos usuário e senha.

    A seguir, mostra uma string de conexão configurada para segurança Integrada do Windows.

    "workstation id=WebServer1;packet size=4096;
    Trusted_Connection=Yes;data source=SQLServer01";
    persist security info=False;initial catalog=northwind"
    

Configure o SQL Server para reconhecer os usuários que estarão acessando .

Para configurar o SQL Server para segurança integrada do Windows

  1. No menu Iniciar, selecione Microsoft SQL Server, e então selecione Enterprise Manager.

  2. Abra o nó do servidor e expanda o nó de banco de dados que você quer dar permissões aos usuários .

  3. Clique com o botão direito no nó Users e então seleciona New Database User.

  4. Na caixa de dialogo Database User Properties, digite domínio\NomeDoUsuário na caixa Login name e clique em OK.
    Além disso, configurar o SQL Server para permitir que todos os usuários do domínio acessem o banco de dados.

Contribuições da comunidade

ADICIONAR
A Microsoft está realizando uma pesquisa online para saber sua opinião sobre o site do MSDN. Se você optar por participar, a pesquisa online lhe será apresentada quando você sair do site do MSDN.

Deseja participar?
Mostrar:
© 2015 Microsoft