private static StringBuilder TryReadFromtheSerializedData()
        {
            StringBuilder message = new StringBuilder();

            var acd = ProtobufSerializer <AuthCodeDetail> .Deserialize(GenericStaticCache <string> .Get("cp-cache"));

            message.AppendLine(acd.ResponseMode);
            foreach (var claim in acd.Principal.Claims)
            {
                message.AppendLine($"{claim.Type} : {claim.Value} - {claim.ValueType}");
            }

            return(message);
        }
        public ActionResult Logon(LoginModel model)
        {
            if (_loginCombos.ContainsKey(model.Name) && _loginCombos[model.Name].Equals(model.Password))
            {
                var claims = new List <Claim>
                {
                    new Claim(ClaimTypes.Name, model.Name),
                    new Claim(ClaimTypes.Upn, model.Name),
                    new Claim(ClaimTypes.NameIdentifier, Guid.NewGuid().ToString())
                };
                var id = new ClaimsIdentity(claims, "forms");
                var cp = new ClaimsPrincipal(id);

                var ac = new AuthCodeDetail()
                {
                    ResponseMode = "AwesomeResposne",
                    Principal    = cp
                };

                if (!RuntimeTypeModel.Default.IsDefined(typeof(ClaimsPrincipal)))
                {
                    RuntimeTypeModel.Default.Add(typeof(ClaimsPrincipal), false)
                    .SetSurrogate(typeof(CustomPrincipal));
                }

                var strAcd = ProtobufSerializer <AuthCodeDetail> .SerializeToString(ac);

                GenericStaticCache <string> .Add2Cache("cp-cache", strAcd);

                Request.GetOwinContext().Authentication.SignOut("forms");
                Request.GetOwinContext().Authentication.SignIn(id);

                return(RedirectToAction("index"));
            }

            ModelState.AddModelError("", "failed authentiation");
            return(View("Login"));
        }