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); }
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); }
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_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); }
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())); }
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 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))); }
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")); }
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()); }