Login AD .Net Core API (ERR_SSL_PROTOCOL_ERROR)

Estou com um problema quando tento fazer uma chamada na minha API que me fornece os dados de quem está conectado no AD essa minha API está no servidor IIS e me trás esse erro: ( Não foi possível estabelecer uma conexão segura com este site ERR_SSL_PROTOCOL_ERROR). Alguém saberia me dizer o motivo desse erro? Teria alguma coisa haver com a conexão direto no AD?

Possivelmente, sua maquina não confia no certificado de desenvolvimento do .Net Core SDK.
Esse comando, deve resolver:
dotnet dev-certs https --trust

1 curtida

Edit.
Continua o mesmo erro de SSL, em localhost eu consigo pegar mas na minha rede de DEV não

Ao publicar, você instalou um certificado no IIS?

Essa doc da Microsoft ensina a gerar um certificado auto-assinado e adiciona-lo ao IIS:
https://support.microsoft.com/pt-br/help/228991/how-to-create-and-install-an-ssl-certificate-in-internet-information-s

Se você está rodando no IIS Express em modo debug, sugiro que faça uma publicação no IIS Local, gere e instale o certificado no IIS Local e refaça o teste.

Funcionou esse certificado, porém eu rodei a DLL no CLI do dotNet e ele me trouxe esse erro :
# Connection id "0HLF65M4A0D4I", Request id "0HLF65M4A0D4I:0000000E": An unhandled exception was thrown by the application
Seria algo relacionado com a minha controler?

[Route("api/[controller]")]
    [ApiController]
    [EnableCors("CorsPolicy")]
    [Authorize]
    public class ValuesController : ControllerBase
    {
        // GET api/login
        [HttpGet]
        public IActionResult IISAuthorize()
        {
            var name = HttpContext.User.Claims.FirstOrDefault(p => p.Type == ClaimTypes.Name)?.Value;
            return new ContentResult() { Content = $@"{name.ToUpper()}" };
        }

Teria algum outro jeito de eu pegar somente o dominio e o nome do usuario? Quando eu pego na rede ele não me trás quem está logado

Precisa ver o Stacktrace no momento da execução. A CLI mostrou apenas essa mensagem, nada mais?

Desculpe-me, não entendi sua pergunta. Poderia explicar melhor ?

Eu tenho uma api que pega o nome e dominio de quem está logado, porém quando eu subo ela no servidor, ela me trás o nome do servidor e da API, só consigo pegar o usuário logado em LocalHost

Isso me leva a crer que você está recuperando os dados do usuário que está logado no computador/servidor e não na sua API…

Você pode mostrar o trecho do código que retorna essa informação?

 [HttpGet]
    public ActionResult<IEnumerable<string>> Get()
    {
         string UserName = System.Environment.UserName;
         string UserDomainName = System.Environment.UserDomainName;
        return new string[] { UserName, UserDomainName };
    }

Meu código é bem simples, como pode ver.
Coloquei como:
“windowsAuthentication”: true,
“anonymousAuthentication”: false,

Como imaginei, na realidade você está retornando o usuário que está logado na maquina em questão.

Como você está controlando o processo de login na sua API? Pq não devolve um token JWT ao realizar o login e então verifica se a pessoa está logada, se possui autorização(roles) e os dados(tipo o nome de usuário e/ou nome) através do Token, que será enviado no cabeçalho das requisições?

Eu sou novo em DotNet por isso eu não manjo muito dessas autenticações, o meu front está em React.js, o usuáro não possuirá uma tela de login, ele irá conectar direto pelo AD.
Mesmo assim, muito obrigado pela ajuda! Eu tentarei fazer isso!! Boa!

Ah sim, dê uma olhada nesses link’s acho que poderão lhe ajudar.

Boa sorte!

1 curtida

Esse do Medium eu fiz igual porém no Servidor IIS ele dá um erro 500, não consigo acessar o método, aí que dá aquele erro que mencionei lá em cima “Connection id “0HLF65M4A0D4I”, Request id “0HLF65M4A0D4I:0000000E”: An unhandled exception was thrown by the application”, mas em localhost ele funciona certinho.

Vou seguir esse outro tutorial da balta.io, novamente muito obrigado!

Essa foi a unica mensagem que apareceu? Não apareceram mais coisas embaixo? Acho que deveria ser +/- assim:

Connection id “0HLF65M4A0D4I”, Request id “0HLF65M4A0D4I:0000000E”: An unhandled exception was thrown by the application
    System.ArgumentNullException: Value cannot be null.
    Parameter name: XYZABC
...

Isso, tinha mais coisas, achei que não fosse tão importante… ksk

Geralmente, essas coisas a mais são as que nos dizem a causa do problema kkk… Você poderia enviar para eu dar uma olhada?

Microsoft.AspNetCore.Server.Kestrel[13]
Connection id "0HLULEUJ5EHIT", Request id "0HLULEUJ5EHIT:00000001": An andled exception was thrown by the application. 
Systen.InvalidOperationException: No authenticationScheme was specified, an are was no DefaultChallegeScheme found.
at Microsoft.AspNetCore.Authentication.AuthenticationService.ChallengeAsync httpContext context. String scheme, AuthenticationProperties properties.

Talvez tenham alguns erros de escrita porque eu tive que digitar, isso está na minha máquina do serviço eu só tinha a foto…

Sem problemas…

No método ConfigureServices da classe Startup.cs adicione a linha services.AddAuthentication(IISDefaults.AuthenticationScheme);
e no método Configure adicione app.UseAuthentication();

Acho que isso deve resolver.

1 curtida