public void DeserializeCollection()
        {
            var serializer = new ParamSerializer();
            var collection = new NameValueCollection
                                    {
                                            { "Prop1", "test" },
                                            { "Prop2", "10" },
                                            { "Prop3", "32.45" },
                                            { "Prop4", "true" },
                                            { "Prop5", "2013-10-03" },
                                            { "Prop6", "test1" },
                                            { "Prop6", "test2" },
                                            { "Prop6", "test3" },
                                            { "Prop6", "test4" },
                                    };
            var startObj = new FakeObject
                             {
                                 Prop1 = "test",
                                 Prop2 = 10,
                                 Prop3 = 32.45,
                                 Prop4 = true,
                                 Prop5 = new DateTime(2013, 10, 3),
                                 Prop6 = new[] { "test1", "test2", "test3", "test4" },
                             };

            var endObj = serializer.Deserialize<FakeObject>(collection);

            Assert.AreEqual(startObj, endObj);
        }
Esempio n. 2
0
        protected void Page_Load(object sender, EventArgs e)
        {
            var serializer = new ParamSerializer();

            var foo = serializer.Deserialize<Foo>(Request.Form);

            this.ResponseOutput.Text = JsonConvert.SerializeObject(foo);
        }
        public void Deserialize_EmptyKey()
        {
            var obj = new ParamSerializer().Deserialize<JObject>("a");
            var proplist = obj.Properties().ToList();

            Assert.AreEqual(1, proplist.Count);
            Assert.AreEqual("a", proplist.First().Name);
            Assert.AreEqual(new JValue((object)null), obj["a"]);
        }
        public void ProcessRequest(HttpContext context)
        {
            this.HttpContext = new HttpContextWrapper(context);

            if (this.IsValidRequest(this.HttpContext))
            {
                var paramserializer = new ParamSerializer();
                var requestParser = new RequestParser(paramserializer);
                var data = requestParser.GetData(new RawHttpRequest(this.HttpContext.Request));

                this.ProcessResponse(this.HttpContext, data);
            }
        }
        public async Task <IActionResult> Post()
        {
            try
            {
                if (Request.Form == null)
                {
                    return(BuildError(ErrorCodes.InvalidRequestCode, "no parameter in body request", HttpStatusCode.BadRequest));
                }
            }
            catch (Exception)
            {
                return(BuildError(ErrorCodes.InvalidRequestCode, "no parameter in body request", HttpStatusCode.BadRequest));
            }

            var          serializer           = new ParamSerializer();
            var          introspectionRequest = serializer.Deserialize <IntrospectionRequest>(Request.Form);
            StringValues authorizationHeader;
            AuthenticationHeaderValue authenticationHeaderValue = null;

            if (Request.Headers.TryGetValue("Authorization", out authorizationHeader))
            {
                var authorizationHeaderValue         = authorizationHeader.First();
                var splittedAuthorizationHeaderValue = authorizationHeaderValue.Split(' ');
                if (splittedAuthorizationHeaderValue.Count() == 2)
                {
                    authenticationHeaderValue = new AuthenticationHeaderValue(
                        splittedAuthorizationHeaderValue[0],
                        splittedAuthorizationHeaderValue[1]);
                }
            }

            var issuerName = Request.GetAbsoluteUriWithVirtualPath();
            var result     = await _introspectionActions.PostIntrospection(introspectionRequest.ToParameter(), authenticationHeaderValue, issuerName);

            return(new OkObjectResult(result.ToDto()));
        }
        public void SerializeDeserialize_Complex()
        {
            var serializer = new ParamSerializer();
            var startObj =
                new { a = new object[] { "1", "2", new { d = "8", e = "9" } }, b = "2", c = new { f = "10", g = "11" } };
            var endObj = serializer.Deserialize(serializer.Serialize(startObj));
            var startObjStr = JsonConvert.SerializeObject(startObj);
            var endObjStr = JsonConvert.SerializeObject(endObj);

            Assert.AreEqual(startObjStr, endObjStr);
        }
Esempio n. 7
0
        public void Serialize_SimpleObject()
        {
            var param = new ParamSerializer().Serialize(new { a = "1", b = "2" });

            Assert.AreEqual(param, "a=1&b=2");
        }
        public async Task <IActionResult> PostToken()
        {
            var certificate = GetCertificate();

            try
            {
                if (Request.Form == null)
                {
                    return(BuildError(ErrorCodes.InvalidRequestCode, "no parameter in body request", HttpStatusCode.BadRequest));
                }
            }
            catch (Exception)
            {
                return(BuildError(ErrorCodes.InvalidRequestCode, "no parameter in body request", HttpStatusCode.BadRequest));
            }

            var          serializer   = new ParamSerializer();
            var          tokenRequest = serializer.Deserialize <TokenRequest>(Request.Form);
            GrantedToken result       = null;
            StringValues authorizationHeader;
            AuthenticationHeaderValue authenticationHeaderValue = null;

            if (Request.Headers.TryGetValue("Authorization", out authorizationHeader))
            {
                var authorizationHeaderValue         = authorizationHeader.First();
                var splittedAuthorizationHeaderValue = authorizationHeaderValue.Split(' ');
                if (splittedAuthorizationHeaderValue.Count() == 2)
                {
                    authenticationHeaderValue = new AuthenticationHeaderValue(
                        splittedAuthorizationHeaderValue[0],
                        splittedAuthorizationHeaderValue[1]);
                }
            }

            var issuerName = Request.GetAbsoluteUriWithVirtualPath();

            switch (tokenRequest.GrantType)
            {
            case GrantTypes.password:
                var resourceOwnerParameter = tokenRequest.ToResourceOwnerGrantTypeParameter();
                result = await _tokenActions.GetTokenByResourceOwnerCredentialsGrantType(resourceOwnerParameter, authenticationHeaderValue, certificate, issuerName);

                break;

            case GrantTypes.authorization_code:
                var authCodeParameter = tokenRequest.ToAuthorizationCodeGrantTypeParameter();
                result = await _tokenActions.GetTokenByAuthorizationCodeGrantType(authCodeParameter, authenticationHeaderValue, certificate, issuerName);

                break;

            case GrantTypes.refresh_token:
                var refreshTokenParameter = tokenRequest.ToRefreshTokenGrantTypeParameter();
                result = await _tokenActions.GetTokenByRefreshTokenGrantType(refreshTokenParameter, authenticationHeaderValue, certificate, issuerName);

                break;

            case GrantTypes.client_credentials:
                var clientCredentialsParameter = tokenRequest.ToClientCredentialsGrantTypeParameter();
                result = await _tokenActions.GetTokenByClientCredentialsGrantType(clientCredentialsParameter, authenticationHeaderValue, certificate, issuerName);

                break;

            case GrantTypes.uma_ticket:
                var tokenIdParameter = tokenRequest.ToTokenIdGrantTypeParameter();
                result = await _umaTokenActions.GetTokenByTicketId(tokenIdParameter, authenticationHeaderValue, certificate, issuerName);

                break;
            }

            return(new OkObjectResult(result.ToDto()));
        }
        public void Deserialize_ArrayWithIndexes()
        {
            var obj = new ParamSerializer().Deserialize<JObject>("a[0]=1&a[1]=2");

            Assert.AreEqual(obj["a"], new JArray { "1", "2" });
        }
        public void Serialize_SimpleObject()
        {
            var param = new ParamSerializer().Serialize(new { a = "1", b = "2" });

            Assert.AreEqual(param, "a=1&b=2");
        }
        public void Serialize_ObjectWithArrayAndObject()
        {
            var param =
                new ParamSerializer().Serialize(
                    new { a = new object[] { "1", "2", new { d = "8", e = "9" } }, b = "2" });

            Assert.AreEqual(param, "a[]=1&a[]=2&a[2][d]=8&a[2][e]=9&b=2");
        }
 public static T Deserialize <T>(this ParamSerializer paramSerializer, NameValueCollection input)
 {
     return(paramSerializer.Deserialize <T>(ConvertNameValueCollection(input)));
 }
        public async Task <Microsoft.AspNetCore.Mvc.ActionResult> Get()
        {
            var query = Request.Query;

            if (query == null)
            {
                throw new IdentityServerException(
                          ErrorCodes.InvalidRequestCode,
                          ErrorDescriptions.RequestIsNotValid);
            }

            var originUrl            = this.GetOriginUrl();
            var sessionId            = GetSessionId();
            var serializer           = new ParamSerializer();
            var authorizationRequest = serializer.Deserialize <AuthorizationRequest>(query);

            authorizationRequest = await ResolveAuthorizationRequest(authorizationRequest);

            authorizationRequest.OriginUrl = originUrl;
            authorizationRequest.SessionId = sessionId;
            var authenticatedUser = await _authenticationService.GetAuthenticatedUser(this, _authenticateOptions.CookieName);

            var parameter    = authorizationRequest.ToParameter();
            var actionResult = await _authorizationActions.GetAuthorization(parameter, authenticatedUser);

            if (actionResult.Type == TypeActionResult.RedirectToCallBackUrl)
            {
                var redirectUrl = new Uri(authorizationRequest.RedirectUri);
                return(this.CreateRedirectHttpTokenResponse(redirectUrl,
                                                            _actionResultParser.GetRedirectionParameters(actionResult),
                                                            actionResult.RedirectInstruction.ResponseMode));
            }

            if (actionResult.Type == TypeActionResult.RedirectToAction)
            {
                if (actionResult.RedirectInstruction.Action == IdentityServerEndPoints.AuthenticateIndex ||
                    actionResult.RedirectInstruction.Action == IdentityServerEndPoints.ConsentIndex)
                {
                    // Force the resource owner to be reauthenticated
                    if (actionResult.RedirectInstruction.Action == IdentityServerEndPoints.AuthenticateIndex)
                    {
                        authorizationRequest.Prompt = Enum.GetName(typeof(PromptParameter), PromptParameter.login);
                    }

                    // Set the process id into the request.
                    if (!string.IsNullOrWhiteSpace(actionResult.ProcessId))
                    {
                        authorizationRequest.ProcessId = actionResult.ProcessId;
                    }

                    // Add the encoded request into the query string
                    var encryptedRequest = _dataProtector.Protect(authorizationRequest);
                    actionResult.RedirectInstruction.AddParameter(Core.Constants.StandardAuthorizationResponseNames.AuthorizationCodeName,
                                                                  encryptedRequest);
                }

                var url            = GetRedirectionUrl(this.Request, actionResult.RedirectInstruction.Action);
                var uri            = new Uri(url);
                var redirectionUrl = uri.AddParametersInQuery(_actionResultParser.GetRedirectionParameters(actionResult));
                return(new RedirectResult(redirectionUrl.AbsoluteUri));
            }

            return(null);
        }
Esempio n. 14
0
        public async Task <IActionResult> PostToken()
        {
            var certificate = GetCertificate();

            try
            {
                if (Request.Form == null)
                {
                    return(BuildError(ErrorCodes.InvalidRequestCode, "no parameter in body request", HttpStatusCode.BadRequest));
                }
            }
            catch (Exception)
            {
                return(BuildError(ErrorCodes.InvalidRequestCode, "no parameter in body request", HttpStatusCode.BadRequest));
            }

            var          serializer   = new ParamSerializer();
            var          tokenRequest = serializer.Deserialize <TokenRequest>(Request.Form);
            GrantedToken result       = null;
            StringValues authorizationHeader;
            AuthenticationHeaderValue authenticationHeaderValue = null;

            if (Request.Headers.TryGetValue("Authorization", out authorizationHeader))
            {
                var authorizationHeaderValue         = authorizationHeader.First();
                var splittedAuthorizationHeaderValue = authorizationHeaderValue.Split(' ');
                if (splittedAuthorizationHeaderValue.Count() == 2)
                {
                    authenticationHeaderValue = new AuthenticationHeaderValue(
                        splittedAuthorizationHeaderValue[0],
                        splittedAuthorizationHeaderValue[1]);
                }
            }

            var issuerName = Request.GetAbsoluteUriWithVirtualPath();

            switch (tokenRequest.GrantType)
            {
            case GrantTypes.password:
                var resourceOwnerParameter = tokenRequest.ToResourceOwnerGrantTypeParameter();
                result = await _tokenActions.GetTokenByResourceOwnerCredentialsGrantType(resourceOwnerParameter, authenticationHeaderValue, certificate, issuerName);

                break;

            case GrantTypes.authorization_code:
                var authCodeParameter = tokenRequest.ToAuthorizationCodeGrantTypeParameter();
                result = await _tokenActions.GetTokenByAuthorizationCodeGrantType(authCodeParameter, authenticationHeaderValue, certificate, issuerName);

                break;

            case GrantTypes.refresh_token:
                var refreshTokenParameter = tokenRequest.ToRefreshTokenGrantTypeParameter();
                result = await _tokenActions.GetTokenByRefreshTokenGrantType(refreshTokenParameter, authenticationHeaderValue, certificate, issuerName);

                break;

            case GrantTypes.client_credentials:
                var clientCredentialsParameter = tokenRequest.ToClientCredentialsGrantTypeParameter();
                result = await _tokenActions.GetTokenByClientCredentialsGrantType(clientCredentialsParameter, authenticationHeaderValue, certificate, issuerName);

                break;

            case GrantTypes.uma_ticket:
                var tokenIdParameter           = tokenRequest.ToTokenIdGrantTypeParameter();
                var getTokenByTicketIdResponse = await _umaTokenActions.GetTokenByTicketId(tokenIdParameter, _authorizationServerOptions.OpenidWellKnownConfiguration, issuerName);

                if (!getTokenByTicketIdResponse.IsValid)
                {
                    var errorResponse = new ErrorResponse
                    {
                        Error = Errors.ErrorCodes.NotAuthorized
                    };

                    var errorDetails = new List <object>();
                    foreach (var policyResult in getTokenByTicketIdResponse.ResourceValidationResult.AuthorizationPoliciesResult)
                    {
                        var dic = new Dictionary <string, object>
                        {
                            { "status", policyResult.Type.ToString() },
                            { "details", policyResult.ErrorDetails }
                        };
                        if (policyResult.Policy != null)
                        {
                            dic.Add("policy_id", policyResult.Policy.Id);
                        }

                        errorDetails.Add(dic);
                    }

                    errorResponse.ErrorDetails = errorDetails;
                    return(new JsonResult(errorResponse)
                    {
                        StatusCode = (int)HttpStatusCode.InternalServerError
                    });
                }

                result = getTokenByTicketIdResponse.GrantedToken;
                break;
            }

            return(new OkObjectResult(result.ToDto()));
        }
Esempio n. 15
0
        public void Serialize_ObjectWithArray()
        {
            var param = new ParamSerializer().Serialize(new { a = new[] { "1", "2", "3" }, b = "2" });

            Assert.AreEqual(param, "a[]=1&a[]=2&a[]=3&b=2");
        }
        public void SerializeDeserialize_Simple()
        {
            var serializer = new ParamSerializer();
            var startObj = new { a = "1", b = "2" };
            var endObj = serializer.Deserialize(serializer.Serialize(startObj));
            var startObjStr = JsonConvert.SerializeObject(startObj);
            var endObjStr = JsonConvert.SerializeObject(endObj);

            Assert.AreEqual(startObjStr, endObjStr);
        }
        public void Serialize_ObjectWithArray()
        {
            var param = new ParamSerializer().Serialize(new { a = new[] { "1", "2", "3" }, b = "2" });

            Assert.AreEqual(param, "a[]=1&a[]=2&a[]=3&b=2");
        }
 public static T Deserialize <T>(this ParamSerializer paramSerializer, IFormCollection form)
 {
     return(paramSerializer.Deserialize <T>(ConvertNameValueCollection(form)));
 }
        public void Serialize_SimpleJObject()
        {
            var param = new ParamSerializer().Serialize(new JObject { { "a", "1" }, { "b", "2" } });

            Assert.AreEqual(param, "a=1&b=2");
        }
 public static T Deserialize <T>(this ParamSerializer paramSerializer, IQueryCollection query)
 {
     return(paramSerializer.Deserialize <T>(ConvertNameValueCollection(query)));
 }
Esempio n. 21
0
        public async Task <IActionResult> Get()
        {
            var query = Request.Query;

            if (query == null)
            {
                return(BuildError(ErrorCodes.InvalidRequestCode, "no parameter in body request", HttpStatusCode.BadRequest));
            }

            var originUrl            = this.GetOriginUrl();
            var sessionId            = GetSessionId();
            var serializer           = new ParamSerializer();
            var authorizationRequest = serializer.Deserialize <AuthorizationRequest>(query);

            authorizationRequest = await ResolveAuthorizationRequest(authorizationRequest).ConfigureAwait(false);

            authorizationRequest.OriginUrl = originUrl;
            authorizationRequest.SessionId = sessionId;
            var authenticatedUser = await _authenticationService.GetAuthenticatedUser(this, Constants.CookieNames.CookieName);

            var    parameter            = authorizationRequest.ToParameter();
            var    issuerName           = Request.GetAbsoluteUriWithVirtualPath();
            string authenticatedSubject = null;
            double?authInstant          = null;

            if (authenticatedUser != null)
            {
                authenticatedSubject = authenticatedUser.GetSubject();
                var authInstantClaim = authenticatedUser.Claims.FirstOrDefault(c => c.Type == Core.Common.StandardClaimNames.AuthenticationTime || c.Type == ClaimTypes.AuthenticationInstant);
                if (authInstantClaim != null)
                {
                    authInstant = double.Parse(authInstantClaim.Value);
                }
            }

            var actionResult = await _authorizationActions.GetAuthorization(parameter, issuerName, authenticatedSubject, authInstant);

            if (actionResult.Type == TypeActionResult.RedirectToCallBackUrl)
            {
                var redirectUrl = new Uri(authorizationRequest.RedirectUri);
                return(this.CreateRedirectHttpTokenResponse(redirectUrl,
                                                            _actionResultParser.GetRedirectionParameters(actionResult),
                                                            actionResult.RedirectInstruction.ResponseMode));
            }

            if (actionResult.Type == TypeActionResult.RedirectToAction)
            {
                if (actionResult.RedirectInstruction.Action == IdentityServerEndPoints.AuthenticateIndex ||
                    actionResult.RedirectInstruction.Action == IdentityServerEndPoints.ConsentIndex)
                {
                    // Force the resource owner to be reauthenticated
                    if (actionResult.RedirectInstruction.Action == IdentityServerEndPoints.AuthenticateIndex)
                    {
                        authorizationRequest.Prompt = Enum.GetName(typeof(PromptParameter), PromptParameter.login);
                    }

                    // Set the process id into the request.
                    if (!string.IsNullOrWhiteSpace(actionResult.ProcessId))
                    {
                        authorizationRequest.ProcessId = actionResult.ProcessId;
                    }

                    // Add the encoded request into the query string
                    if (actionResult.AmrLst != null)
                    {
                        authorizationRequest.AmrValues = string.Join(" ", actionResult.AmrLst);
                    }

                    var encryptedRequest = _dataProtector.Protect(authorizationRequest);
                    actionResult.RedirectInstruction.AddParameter(Core.Constants.StandardAuthorizationResponseNames.AuthorizationCodeName, encryptedRequest);
                }

                var url            = GetRedirectionUrl(Request, actionResult.AmrLst == null || !actionResult.AmrLst.Any() ? null : actionResult.AmrLst.First(), actionResult.RedirectInstruction.Action);
                var uri            = new Uri(url);
                var redirectionUrl = uri.AddParametersInQuery(_actionResultParser.GetRedirectionParameters(actionResult));
                return(new RedirectResult(redirectionUrl.AbsoluteUri));
            }

            return(null);
        }
        public void Deserialize_Object()
        {
            var obj = new ParamSerializer().Deserialize<JObject>("a[b]=bVal&a[c]=cVal");

            Assert.AreEqual(obj["a"], new JObject { { "b", "bVal" }, { "c", "cVal" } });
        }
        public void Deserialize_ArrayWithObject()
        {
            var obj = new ParamSerializer().Deserialize<JObject>("a[0][b]=1&a[1][b]=2");

            Assert.AreEqual(obj["a"], new JArray { new JObject { { "b", "1" } }, new JObject { { "b", "2" } } });
        }
        public void Deserialize_PararmsAndEmptyKey()
        {
            var obj = new ParamSerializer().Deserialize<JObject>("a&b=1");

            Assert.AreEqual(new JObject { { "a", null }, { "b", "1" } }, obj);
        }
        public void Deserialize_NestedObject()
        {
            var obj = new ParamSerializer().Deserialize<JObject>("a[b][c]=cVal&a[b][d]=dVal&a[e]=eVal");

            Assert.AreEqual(
                obj["a"], new JObject { { "b", new JObject { { "c", "cVal" }, { "d", "dVal" } } }, { "e", "eVal" } });
        }
        public void Deserialize_SingleDimension()
        {
            var obj = new ParamSerializer().Deserialize<JObject>("a=1&b=2");

            Assert.AreEqual(obj["a"], new JValue("1"));
            Assert.AreEqual(obj["b"], new JValue("2"));
        }
Esempio n. 27
0
        public string GetQueryString()
        {
            var serializer = new ParamSerializer();

            return(serializer.Serialize(this));
        }
        public async Task <TokenResponse> PostToken()
        {
            var certificate = GetCertificate();

            if (Request.Form == null)
            {
                throw new ArgumentNullException(nameof(Request.Form));
            }

            var          serializer   = new ParamSerializer();
            var          tokenRequest = serializer.Deserialize <TokenRequest>(Request.Form);
            GrantedToken result       = null;
            StringValues authorizationHeader;
            AuthenticationHeaderValue authenticationHeaderValue = null;

            if (Request.Headers.TryGetValue("Authorization", out authorizationHeader))
            {
                var authorizationHeaderValue         = authorizationHeader.First();
                var splittedAuthorizationHeaderValue = authorizationHeaderValue.Split(' ');
                if (splittedAuthorizationHeaderValue.Count() == 2)
                {
                    authenticationHeaderValue = new AuthenticationHeaderValue(
                        splittedAuthorizationHeaderValue[0],
                        splittedAuthorizationHeaderValue[1]);
                }
            }

            switch (tokenRequest.GrantType)
            {
            case GrantTypes.password:
                var resourceOwnerParameter = tokenRequest.ToResourceOwnerGrantTypeParameter();
                result = await _tokenActions.GetTokenByResourceOwnerCredentialsGrantType(resourceOwnerParameter, authenticationHeaderValue, certificate);

                break;

            case GrantTypes.authorization_code:
                var authCodeParameter = tokenRequest.ToAuthorizationCodeGrantTypeParameter();
                result = await _tokenActions.GetTokenByAuthorizationCodeGrantType(
                    authCodeParameter,
                    authenticationHeaderValue);

                break;

            case GrantTypes.refresh_token:
                var refreshTokenParameter = tokenRequest.ToRefreshTokenGrantTypeParameter();
                result = await _tokenActions.GetTokenByRefreshTokenGrantType(refreshTokenParameter);

                break;

            case GrantTypes.client_credentials:
                var clientCredentialsParameter = tokenRequest.ToClientCredentialsGrantTypeParameter();
                result = await _tokenActions.GetTokenByClientCredentialsGrantType(clientCredentialsParameter, authenticationHeaderValue);

                break;

            case GrantTypes.uma_ticket:
                var tokenIdParameter = tokenRequest.ToTokenIdGrantTypeParameter();
                result = await _umaTokenActions.GetTokenByTicketId(tokenIdParameter, authenticationHeaderValue);

                break;
            }

            return(result.ToDto());
        }