public Task <T> PostAsync <T>(IRestRequest postRequest, CancellationToken cancellationToken) { if (postRequest is SFRestRequest) { // authenticator AuthnResponse authnResponse = new AuthnResponse { success = true, data = new AuthnResponseData { tokenUrl = TokenUrl, ssoUrl = SSOUrl, } }; return(Task.FromResult <T>((T)(object)authnResponse)); } else { //idp onetime token IdpTokenResponse tokenResponse = new IdpTokenResponse { CookieToken = "cookie", }; return(Task.FromResult <T>((T)(object)tokenResponse)); } }
public Task <T> PostAsync <T>(IRestRequest postRequest, CancellationToken cancellationToken) { SFRestRequest sfRequest = (SFRestRequest)postRequest; if (sfRequest.jsonBody is AuthnRequest) { AuthnResponse authnResponse = new AuthnResponse { data = new AuthnResponseData() { token = "session_token", masterToken = "master_token", authResponseSessionInfo = new SessionInfo(), nameValueParameter = new List <NameValueParameter>() }, success = true }; // login request return success return(Task.FromResult <T>((T)(object)authnResponse)); } CloseResponse closeResponse = new CloseResponse { message = "Session no longer exists. New login required to access the service.", data = null, code = SESSION_GONE, success = false }; return(Task.FromResult <T>((T)(object)closeResponse)); }
public ActionResult Consumer(string samlResponse, string relayState) { var bytes = Convert.FromBase64String(samlResponse); var xmlString = Encoding.UTF8.GetString(bytes); AuthnResponse respose = new AuthnResponse(xmlString); if (respose.IsValid()) { var userName = respose.GetNameID(); var returnUrl = Session[relayState].ToString(); return RedirectToAction("Login", "Account", new { UserName = userName, ReturnUrl = returnUrl }); } else { return View(); } }
public Task <T> PostAsync <T>(IRestRequest request, CancellationToken cancellationToken) { SFRestRequest sfRequest = (SFRestRequest)request; if (sfRequest.jsonBody is AuthnRequest) { AuthnResponse authnResponse = new AuthnResponse { data = new AuthnResponseData() { token = "session_token", masterToken = "master_token", authResponseSessionInfo = new SessionInfo(), nameValueParameter = new List <NameValueParameter>() }, success = true }; // login request return success return(Task.FromResult <T>((T)(object)authnResponse)); } else if (sfRequest.jsonBody is QueryRequest) { QueryExecResponse queryExecResponse = new QueryExecResponse { success = false, code = QUERY_IN_EXEC_CODE }; return(Task.FromResult <T>((T)(object)queryExecResponse)); } else if (sfRequest.jsonBody is RenewSessionRequest) { return(Task.FromResult <T>((T)(object)new RenewSessionResponse { success = true, data = new RenewSessionResponseData() { sessionToken = "new_session_token" } })); } else { return(Task.FromResult <T>((T)(object)null)); } }
public void ShouldSerializeAuthnResponseAttributes() { #region Arrange string responseWithAttributes = @"<?xml version='1.0' encoding='UTF-8'?> <samlp:Response xmlns:samlp = 'urn:oasis:names:tc:SAML:2.0:protocol' ID = '_622edc75-4251-4069-bd0f-cf96a504e83b' Version = '2.0' IssueInstant = '2020-02-28T09:34:06.325Z' Destination = 'https://someSp/start' Consent = 'urn:oasis:names:tc:SAML:2.0:consent:unspecified' InResponseTo = 'ONELOGIN_4fee3b046395c4e751011e97f8900b5273d56685' > </samlp:Response >"; #endregion #region Act AuthnResponse result = this.service.Deserialize <AuthnResponse>(responseWithAttributes); #endregion #region Assert Assert.NotNull(result); Assert.Equal("_622edc75-4251-4069-bd0f-cf96a504e83b", result.Id); Assert.Equal("2.0", result.Version); Assert.Equal(DateTimeOffset.Parse("2020-02-28T09:34:06.325Z"), result.IssueInstant); Assert.Equal("https://someSp/start", result.Destination); Assert.Equal("ONELOGIN_4fee3b046395c4e751011e97f8900b5273d56685", result.InResponseTo); this.logger.Received(1).LogInformation($"Unknown attribute found serializing xml - Consent with value urn:oasis:names:tc:SAML:2.0:consent:unspecified."); #endregion }
public Task <T> PostAsync <T>(IRestRequest request, CancellationToken cancellationToken) { var message = request.ToRequestMessage(HttpMethod.Post); var param = new NameValueParameter { name = "SERVICE_NAME" }; if (!message.Headers.Contains("X-Snowflake-Service")) { param.value = INIT_SERVICE_NAME; } else { IEnumerable <string> headerValues = message.Headers.GetValues("X-Snowflake-Service"); foreach (string value in headerValues) { param.value = value + 'a'; } } SFRestRequest sfRequest = (SFRestRequest)request; if (sfRequest.jsonBody is AuthnRequest) { AuthnResponse authnResponse = new AuthnResponse { data = new AuthnResponseData() { token = "session_token", masterToken = "master_token", authResponseSessionInfo = new SessionInfo(), nameValueParameter = new List <NameValueParameter>() { param } }, success = true }; // login request return success return(Task.FromResult <T>((T)(object)authnResponse)); } else if (sfRequest.jsonBody is QueryRequest) { QueryExecResponse queryExecResponse = new QueryExecResponse { success = true, data = new QueryExecResponseData { rowSet = new string[, ] { { "1" } }, rowType = new List <ExecResponseRowType>() { new ExecResponseRowType { name = "colone", type = "FIXED" } }, parameters = new List <NameValueParameter> { param } } }; return(Task.FromResult <T>((T)(object)queryExecResponse)); } else { return(Task.FromResult <T>((T)(object)null)); } }
public Task <T> PostAsync <T>(SFRestRequest postRequest, CancellationToken cancellationToken) { if (postRequest.jsonBody is AuthnRequest) { AuthnResponse authnResponse = new AuthnResponse { data = new AuthnResponseData() { token = EXPIRED_SESSION_TOKEN, masterToken = "master_token", authResponseSessionInfo = new SessionInfo(), nameValueParameter = new List <NameValueParameter>() }, success = true }; // login request return success return(Task.FromResult <T>((T)(object)authnResponse)); } else if (postRequest.jsonBody is QueryRequest) { if (postRequest.authorizationToken.Equals(String.Format(TOKEN_FMT, EXPIRED_SESSION_TOKEN))) { QueryExecResponse queryExecResponse = new QueryExecResponse { success = false, code = SESSION_EXPIRED_CODE }; return(Task.FromResult <T>((T)(object)queryExecResponse)); } else if (postRequest.authorizationToken.Equals(String.Format(TOKEN_FMT, "new_session_token"))) { QueryExecResponse queryExecResponse = new QueryExecResponse { success = true, data = new QueryExecResponseData { rowSet = new string[, ] { { "1" } }, rowType = new List <ExecResponseRowType>() { new ExecResponseRowType { name = "colone", type = "FIXED" } }, parameters = new List <NameValueParameter>() } }; return(Task.FromResult <T>((T)(object)queryExecResponse)); } else { QueryExecResponse queryExecResponse = new QueryExecResponse { success = false, code = 1 }; return(Task.FromResult <T>((T)(object)queryExecResponse)); } } else if (postRequest.jsonBody is RenewSessionRequest) { return(Task.FromResult <T>((T)(object)new RenewSessionResponse { success = true, data = new RenewSessionResponseData() { sessionToken = "new_session_token", masterToken = "new_master_token" } })); } else { return(Task.FromResult <T>((T)(object)null)); } }