Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

wren

Criando login pra intranet com Active Directory (C#)

Recommended Posts

Boa tarde a todos.

 

Comecei a criar aplicações com o .Net recentemente e estou caminhando.

 

No momento estou criando uma intranet em uma empresa com uma validação baseada em webforms e active directory.

 

Segue meu código atual:

 

web.config

<?xml version="1.0"?>
<configuration>
	<appSettings/>
	<connectionStrings>
	<add name="ADConnectionString" connectionString="LDAP://servmarsp.local/CN=Users,DC=servmarsp,DC=local"/>
	</connectionStrings>
	<system.web>
		<compilation debug="true"/>

		<authorization>
			<deny users="?"/>
			<allow users="*"/>
		</authorization>
		<authentication mode="Forms">
			<forms name=".ADAuthCookie" timeout="10"/>
		</authentication>

		<membership defaultProvider="MyADMembershipProvider">
			<providers>
				<add
				   name="MyADMembershipProvider"
				   type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, 
			 Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
				   connectionStringName="ADConnectionString"
				   connectionUsername="SERVMARSP\administrator" 
				   connectionPassword="****"/>
			</providers>
		</membership>

	</system.web>
</configuration>

login.aspx

 

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="login.aspx.cs" Inherits="_Default" %>

<!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>Intranet - SERVMAR</title>
</head>
<body>
	<form id="form1" runat="server">
	<div>
		<asp:Login ID="Login1" runat="server" DisplayRememberMe="False" DestinationPageUrl="~/Default.aspx" BackColor="#EFF3FB" BorderColor="#B5C7DE" BorderPadding="4" BorderStyle="Solid" BorderWidth="1px" Font-Names="Verdana" Font-Size="0.8em" ForeColor="#333333">
			<TextBoxStyle Font-Size="0.8em" />
			<LoginButtonStyle BackColor="White" BorderColor="#507CD1" BorderStyle="Solid" BorderWidth="1px"
				Font-Names="Verdana" Font-Size="0.8em" ForeColor="#284E98" />
			<InstructionTextStyle Font-Italic="True" ForeColor="Black" />
			<TitleTextStyle BackColor="#507CD1" Font-Bold="True" Font-Size="0.9em" ForeColor="White" />
		</asp:Login>
	
	</div>
	</form>
</body>
</html>

login.aspx.cs

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class _Default : System.Web.UI.Page 
{
	protected void Page_Load(object sender, EventArgs e)
	{

	}
}

 

 

default.aspx

 

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!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>Untitled Page</title>
</head>
<body>
	<form id="form1" runat="server">
	<div>
	
	</div>
	</form>
</body>
</html>

default.aspx.cs

 

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class _Default : System.Web.UI.Page
{
	protected void Page_Load(object sender, EventArgs e)
	{
		Response.Write("Olá, " + Server.HtmlEncode(User.Identity.Name));

		FormsIdentity id = (FormsIdentity)User.Identity;
		FormsAuthenticationTicket ticket = id.Ticket;

		Response.Write("<p/>TicketName: " + ticket.Name);
		Response.Write("<br/>Cookie Path: " + ticket.CookiePath);
		Response.Write("<br/>Ticket Expiration: " +
						ticket.Expiration.ToString());
		Response.Write("<br/>Expired: " + ticket.Expired.ToString());
		Response.Write("<br/>Persistent: " + ticket.IsPersistent.ToString());
		Response.Write("<br/>IssueDate: " + ticket.IssueDate.ToString());
		Response.Write("<br/>UserData: " + ticket.UserData);
		Response.Write("<br/>Version: " + ticket.Version.ToString());
	}
  
}

Pois bem, eu faço o login e ele não dá erro, porém, ele aparece uma mensagem em vermelho no próprio form dizendo que não foi possível realizar o login naquele momento.

 

Outra coisa, estou trabalhando localmente, e o AD está em um server, obviamente. E meu usuário é do grupo de administrador.

 

Acredito que a conexão com o LDAP esteja sendo criada sem problemas, uma vez que, se eu mudar o nome, vejo um erro: "Mensagem de Erro do Analisador: Não é possível estabelecer conexão segura com o servidor"

 

Gostaria de saber se alguém pode me apontar o que estou fazendo de errado, se eu devo configurar algo no Active Directory pra ele aceitar essa conexão, enfim, qualquer ajuda é bem vinda.

 

Obrigado desde já,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Um pouco complicado como você mesmo disse não deu nenhum erro, mas tem bastante conteúdo referente a Active Directory aqui no fórum, de uma olhada: http://forum.imasters.com.br/index.php...ctive+Directory

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu cara, já tinha visto esse exemplo.

 

De fato, o erro que dá é esse: "A tentativa de logon não teve êxito. Tente novamente."

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.