C# – MVC Identity login with WebAPI

Having an existing C# MVC application with Idenity authorization there was a necessity to implement the same Identity authentication with WebAPI within the same web application and allow a desktop app to authenticate via WebAPI.

The way to get this working is to implement the MVC login authentication generated into the WebAPI controller. The last POST method is the one used to authenticate from the desktop app that uses HTTP Post. The way shown here, the username and password are accepted (and therefore have been submitted) in plain text JSON format. You need to implement your encryption method to get this secure.

using Microsoft.AspNet.Identity;
using Microsoft.AspNet.Identity.EntityFramework;
using Microsoft.AspNet.Identity.Owin;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web;
using System.Web.Http;

namespace MyAppNameSpace
    public class WebApiController : ApiController
        private ApplicationSignInManager _signInManager;
        private ApplicationUserManager _userManager;

        public WebApiController() { }

        public WebApiController(ApplicationUserManager userManager, ApplicationSignInManager signInManager)
            UserManager = userManager;
            SignInManager = signInManager;

        public ApplicationSignInManager SignInManager
                return _signInManager ?? HttpContext.Current.GetOwinContext().Get();
            private set
                _signInManager = value;

        public ApplicationUserManager UserManager
                return _userManager ?? HttpContext.Current.GetOwinContext().GetUserManager();
            private set
                _userManager = value;

        // GET: api/WebApi
        public IEnumerable Get()
            return new string[] { "value1", "value2" };

        public HttpResponseMessage Post([FromBody]JToken jsonbody)
            AccountController accountController = new AccountController();

            dynamic data = JObject.Parse(jsonbody.ToString());

            string userId = data.userid;
            string userPassword = data.password;

            var result = SignInManager.PasswordSignIn(userId, userPassword, false, false);

            if (result.Equals(SignInStatus.Success))
                return new HttpResponseMessage(HttpStatusCode.Accepted);
                return new HttpResponseMessage(HttpStatusCode.Forbidden);

Having the controller ready, the next step is to call the method via our desktop app to perform the login:

private void LoginPostRequest(string username, string password)
                var httpWebRequest = (HttpWebRequest)WebRequest.Create("";
                httpWebRequest.Method = "POST";
                httpWebRequest.ContentType = "application/json; charset=utf-8";
                httpWebRequest.Accept = "application/json; charset=utf-8";

                using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
                    string loginjson = new JavaScriptSerializer().Serialize(new
                        userid = username,
                        password = password


                    var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
                    using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
                        var result = streamReader.ReadToEnd();
            catch (Exception ex)
                throw new Exception(ex.Message);

VTK re-compile (for Python) with PowerCrust algorithm support

The following was performed with VTK 5.8 and Python 2.7.8 on Debian Wheezy x86_64.

  1. Get the VTK source-code: http://vtk.org/VTK/resources/software.html
  2. Get the Tim Hutton’s PowerCrust C++ source-code: https://github.com/timhutton/vtkpowercrust
  3. Unzip both archives
  4. Copy the C++ files (.cxx & .h) into VTK/Hybrid
  5. Edit VTK/Hybrib/CMakeLists.txt and add the PowerCrust .cxx file
  6. cd VTK; mkdir build; cd build; ccmake ..
  7. Set desired installation directory
  9. While on ccmake first configured [c] and then generate [g]
  10. make && make install
  11. cd Wrapping/Python; python setup.py install
  12. Assuming all go well export the VTK libraries: export LD_LIBRARY_PATH=/<installation_path>/lib/vtk-5.8

VTK export JPG from DICOM

Exporting .jpg image copy from .dcm input using VTK in Python.

# Iterate through .dcm files and export to .jpg
for image in os.listdir(PathDicom):
if (image.endswith(".dcm")):

# Need to cast before writing to .jpg
castFilter = vtk.vtkImageCast()

# .jpg file write
writer = vtk.vtkJPEGWriter()
jpg_filename = image.replace(“.dcm”, “.jpg”)

Disable internal audio

Have been working with Ardour lately and the multiple audio devices (internal + PCI) have been causing issues both on output and input. The easiest workaround is removing totally the unused sound card, which in my case was the internal Intel HDA. The single step required was to blacklist the module of the sound card. You can identify the module by “lspci” and then blacklisting the module is straight forward:

vi /etc/modprobe.d/blacklist

and add the line

blacklist <module name>

A single reboot should do the job or you could unload the module instantly. Although, reboot would confirm whether the blacklist function worked or not.

GoogleMaps API multiple markers

I have a database with some records that among other details they also declare a local (Greek) street addresses. The requirement is to retrieve all these records from the database and display them with markers on a Google Map. Before everything, if you want to get an idea on how the API works see the following links:

GoogleMaps API – Getting started
GoogleMaps API – Simple markers

The flow for my task has as follows:

– Connect to database
– Retrieve all the locations from DB
– Convert Greek characters to Latin for avoiding issues with the Web Service request [ code on code.loon.gr ]
– Use GoogleMaps API to retrieve GPS coordinates based on the given location
– Parse JSON response
– Use JavaScript to add the markers layers

Full code on GitHub.