Boa tarde!
Estou tendo dificuldade em desenvolver uma API .Net Core que realize uma autenticação com o AD.
Consegui desenvolver uma parte, para logar ele só está aceitando o Username conectado no próprio AD, porém a senha eu quero que seja igual a senha do AD do próprio usuário.
using System;
using System.Collections.Generic;
using System.Security.Claims;
using System.Threading.Tasks;
using Identity.Models;
using Microsoft.AspNetCore.Authentication;
using Microsoft.AspNetCore.Authentication.Cookies;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
namespace Identity.Controllers
{
public class UsuarioController : Controller
{
public IActionResult Index()
{
return View();
}
public IActionResult LoginPage()
{
if (User.Identity.IsAuthenticated)
{
return RedirectToAction("UserPage");
}
return View();
}
[HttpPost]
public IActionResult LoginPage(Usuario usuario)
{
try
{
if (ModelState.IsValid)
{
if (usuario.Login == System.Environment.UserName && usuario.Senha == "123")
{
Login(usuario);
return RedirectToAction("UserPage");
}
else
{
ViewBag.Erro = "Usuário e / ou senha incorretos!";
}
}
}
catch (Exception)
{
ViewBag.Erro = "Ocorreu algum erro ao tentar se logar, tente novamente!";
}
return View();
}
private async void Login(Usuario usuario)
{
var claims = new List<Claim>
{
new Claim(ClaimTypes.Name, usuario.Login),
new Claim(ClaimTypes.Role, "Usuario_Comum")
};
var identidadeDeUsuario = new ClaimsIdentity(claims, "Login");
ClaimsPrincipal claimPrincipal = new ClaimsPrincipal(identidadeDeUsuario);
var propriedadesDeAutenticacao = new AuthenticationProperties
{
AllowRefresh = true,
ExpiresUtc = DateTime.Now.ToLocalTime().AddHours(2),
IsPersistent = true
};
await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, claimPrincipal, propriedadesDeAutenticacao);
}
[Authorize]
public IActionResult UserPage()
{
return View();
}
public async Task<IActionResult> Logout()
{
await HttpContext.SignOutAsync();
return RedirectToAction("Index");
}
}
}
Estou pegando o nome de usuário com o System.Environment.UserName;
E a senha está fixa como “123”, teria algum jeito de pegar a senha desse usuário?
Se puderem dar um exemplo seria ótimo.
Desde já eu agradeço!!