Exemplo n.º 1
0
        public async ValueTask <IActionResult> Basic([FromServices] IKeyVaultLogic keyVault)
        {
            string authorization = HttpContext.Request.Headers["Authorization"];

            if (authorization != null && authorization.StartsWith("Basic ", StringComparison.Ordinal))
            {
                var credentials = Encoding.UTF8.GetString(Convert.FromBase64String(authorization.Substring(6)));
                int x           = credentials.IndexOf(':');
                if (x > 0)
                {
                    string user     = credentials.Substring(0, x);
                    string password = credentials.Substring(x + 1);
                    var    result   = await keyVault.AuthenticateBasic(user, password);

                    if (result.success)
                    {
                        return(new ObjectResult(result.token));
                    }
                }
            }

            HttpContext.Response.Headers["WWW-Authenticate"] = "Basic realm=\"KeyVault basic authentication\", charset=\"UTF-8\"";
            return(StatusCode(401));
        }