Authenticatie voor web api

Aanmaken van hash

        public ActionResult Post_Init()
        {
            var CredHelper = new Credentials();
            // doorsturen gebruikersnaam voor aanmaken hash
            string gebruiker = CredHelper.Cred_init(User.Identity.Name);

            // gebruikersnaam en hash meesturen naar View
            ViewBag.hashcode = gebruiker.ToString();
            ViewBag.gebruiker = User.Identity.Name;

            return View();
        }

Hash helper

    public string Cred_init (string gebruiker)
    {
        string TeEncoderen = gebruiker;
        // voer allerlei bewerkingen uit op TeEncoderen
        byte[] tekst = System.Text.Encoding.UTF8.GetBytes(TeEncoderen.ToUpper());
        byte[] resultaat;
            
        SHA1 sha = new SHA1CryptoServiceProvider();
        resultaat = sha.ComputeHash(tekst);

        var sb = new StringBuilder();
        foreach(byte b in resultaat)
        {
            var hex = b.ToString("x2");
            sb.Append(hex);
        }
        return sb.ToString();
    }

 

Bij aanroepen van web api in View, de gebruikersnaam en hash terug meesturen

    function WebApiAanroepen() {

        var naam = encodeURIComponent($("#txt_aanvrager").val());
        var gebruiker = encodeURIComponent($("#txt_gebruiker").val());
        var code = encodeURIComponent($("#txt_code").val());
        $.ajax({
            url: "@Url.Action("GetPostOverzicht", "api/ws_Post")" + "?naam=" + naam + "&gebruiker=" + gebruiker + "&code=" + code,
            type: "GET",
            crossDomain: true,
            contentType: "application/json;  charset=utf-8",
            dataType: 'json',
            success: function (data) {
                if (data.length > 0) {
                    if (data[0].naam == "ongeldig") {
                        // GeenToegang();
                    }
                    else {
                        // Toegang
                }
                else {
                    //Geen Gegevens;
                }

            },
            error: function (error) {
                alert("Error: " + error.Error);
            }
        });
 }

In de API gebruikersnaam en code doorsturen naar controle functie

public class ws_PostController : ApiController
 {
    public List<OverzichtPost> GetPostOverzicht()
    {
       OverzichtPost p = new OverzichtPost();
       List<OverzichtPost> lijst = new List<OverzichtPost>();
       var queryItems = Request.RequestUri.ParseQueryString();
       var check = new Helpers.Credentials();
       Boolean ok = check.Cred_check(queryItems["gebruiker"], queryItems["code"]);

       if (ok == true)
       {          
          // geverifieerd
       }
       else
       {
          // geen toegang
       }
       return lijst;
     }

Controle functie

   public Boolean Cred_check(string gebruiker,string code)
    {
        Boolean ok = false;
        string TeEncoderen = gebruiker;

        // voer allerlei bewerkingen uit op TeEncoderen

        byte[] tekst = System.Text.Encoding.UTF8.GetBytes(TeEncoderen.ToUpper());
        byte[] resultaat;

        SHA1 sha = new SHA1CryptoServiceProvider();
        resultaat = sha.ComputeHash(tekst);

        var sb = new StringBuilder();
        foreach (byte b in resultaat)
        {
            var hex = b.ToString("x2");
            sb.Append(hex);
        }
        if (sb.ToString() == code)
        {
            ok = true;
        }
        return ok;
    }

 

Categories:

Related Article