private WebRioJsonWebTokenPayload GetWebRioSsoTokenPayload(WebRioSsoConfig configuration)
        {
            if (configuration == null)
            {
                throw new ArgumentNullException("configuration");
            }

            var payload = new WebRioJsonWebTokenPayload
            {
                IssuedAtTime = _jtiService.GetIssuedAtTime().ToString(),
                NotBefore    = _jtiService.GetNotBeforeTime(configuration.NotBeforeTime).ToString(),
                Expiry       = _jtiService.GetExpiry(configuration.ExpirySeconds).ToString(),
                Jti          = WebServiceExchangeHelper.GetJti().ToString(),
                BranchCode   = configuration.Login.BranchCode,
                AbtaNumber   = configuration.Login.AbtaNumber,
                EmployeeId   = configuration.Login.EmployeeId,
                Initials     = configuration.Login.Initials,
                Aud          = EntityRecords.Configuration.WebRioAudWebRio
            };

            if (configuration.RequestType == RequestType.TravelPlanner)
            {
                payload.TravelPlannerInitials = configuration.Initials;
                payload.IncludeInitials       = true;
            }
            else
            {
                payload.IncludeInitials = false;
            }

            return(payload);
        }
示例#2
0
        public void CreateJwtTokenTest()
        {
            var payload    = GetPayload();
            var fileName   = ConfigurationManager.AppSettings["privateKeyFileName"];
            var privateKey = File.ReadAllText(fileName);
            var token      = WebServiceExchangeHelper.CreateJwtToken(privateKey, payload);

            Assert.IsNotNull(token);
        }
示例#3
0
        private HttpRequestMessage CreateRequest(JsonWebTokenPayload payload)
        {
            var fileName   = ConfigurationManager.AppSettings["privateKeyFileName"];
            var privateKey = File.ReadAllText(fileName);

            var token = WebServiceExchangeHelper.CreateJwtToken(privateKey, payload);
            HttpRequestMessage request = new HttpRequestMessage();

            request.Headers.Add("Authorization", "Bearer " + token);
            return(request);
        }
 private void SetRequestData(WebRioSsoConfig configuration)
 {
     if (configuration.RequestType == RequestType.Admin)
     {
         configuration.Data = string.Empty;
     }
     else if (configuration.RequestType == RequestType.Booking || configuration.RequestType == RequestType.TravelPlanner)
     {
         configuration.Data = WebServiceExchangeHelper.SerializeOpenConsultationSsoRequestToJson(new WebRioSsoRequest {
             Consultation = configuration.ConsultationReference
         });
     }
 }
示例#5
0
        public void SendHttpRequestTest()
        {
            var fileName   = ConfigurationManager.AppSettings["privateKeyFileName"];
            var privateKey = File.ReadAllText(fileName);
            var payload    = GetPayload();
            var token      = WebServiceExchangeHelper.CreateJwtToken(privateKey, payload);

            Assert.IsNotNull(token);
            var data = WebServiceExchangeHelper.GetCustomerTravelPlannerJson();

            Assert.IsNotNull(data);
            var serviceUrl = ConfigurationManager.AppSettings["serviceUrl"];
            var content    = WebServiceExchangeHelper.SendHttpRequest(serviceUrl, token, data);
        }
 private WebRioResponse GetWebRioSsoResponse(string content)
 {
     if (string.IsNullOrWhiteSpace(content))
     {
         return(null);
     }
     try
     {
         return(WebServiceExchangeHelper.DeserializeWebRioSsoResponseJson(content));
     }
     catch (Exception)
     {
         return(null);
     }
 }
示例#7
0
        public void CallSsoService()
        {
            var login            = GetSsoDetails();
            var privateKey       = GetPrivateInfo();
            var expiredSeconds   = GetConfig(DataKey.SsoTokenExpired);
            var notBeforeSeconds = GetConfig(DataKey.SsoTokenNotBefore);
            var payload          = GetPayload(login, expiredSeconds, notBeforeSeconds);
            var token            = WebServiceExchangeHelper.CreateJwtToken(privateKey, payload);
            var data             = WebServiceExchangeHelper.GetCustomerTravelPlannerJson();
            var serviceUrl       = GetConfig(DataKey.OwrUrlConfigName);
            var content          = WebServiceExchangeHelper.SendHttpRequest(serviceUrl, token, data);
            var eventParams      = WebServiceExchangeHelper.ContentToEventParams(content);

            FireEvent(EventName.SsoCompleteEvent, eventParams);
        }
 public void Setup()
 {
     _jtiService = new JwtService(new Logger());
     _payload    = new OwrJsonWebTokenPayload
     {
         IssuedAtTime = _jtiService.GetIssuedAtTime().ToString(),
         NotBefore    = _jtiService.GetNotBeforeTime("100").ToString(),
         Expiry       = _jtiService.GetExpiry("100").ToString(),
         Jti          = WebServiceExchangeHelper.GetJti().ToString(),
         Aud          = "CRM",
         BranchCode   = "001",
         AbtaNumber   = "002",
         EmployeeId   = "1010",
         Initials     = "IMS",
         CreatedBy    = "IMS"
     };
 }
        public void CallSsoService(RequestActionEventArgs args)
        {
            var opportunityId     = GetParamValue(args, EntityRecords.Configuration.OwrOpportunityIdParamName);
            var createdByInitials = GetCreatorsInitials(opportunityId);
            var login             = GetSsoDetails(_client.CrmInterface.GetMyCrmUserId());
            var privateKey        = GetPrivateInfo();
            var expiredSeconds    = GetConfig(EntityRecords.Configuration.OwrSsoTokenExpired);
            var notBeforeSeconds  = GetConfig(EntityRecords.Configuration.OwrSsoTokenNotBefore);
            var payload           = GetPayload(login, expiredSeconds, notBeforeSeconds, createdByInitials);
            var token             = _jtiService.CreateJwtToken(privateKey, payload);
            var data        = WebServiceExchangeHelper.GetCustomerTravelPlannerJson();
            var serviceUrl  = GetConfig(EntityRecords.Configuration.OwrUrlConfigName);
            var content     = _jtiService.SendHttpRequest(HttpMethod.Post, serviceUrl, token, data).Content;
            var eventParams = WebServiceExchangeHelper.ContentToEventParams(content);

            FireEvent(EntityRecords.Configuration.SsoCompleteEvent, eventParams);
        }
示例#10
0
        private JsonWebTokenPayload GetPayload()
        {
            var payload = new JsonWebTokenPayload
            {
                IssuedAtTime = WebServiceExchangeHelper.GetIssuedAtTime().ToString(),
                NotBefore    = WebServiceExchangeHelper.GetNotBeforeTime("100").ToString(),
                Expiry       = WebServiceExchangeHelper.GetExpiry("100").ToString(),
                Jti          = WebServiceExchangeHelper.GetJti().ToString(),
                Aud          = "CRM",
                BranchCode   = "001",
                AbtaNumber   = "002",
                EmployeeId   = "1010",
                Initials     = "IMS",
                CreatedBy    = "IMS"
            };

            return(payload);
        }
示例#11
0
        private JsonWebTokenPayload GetPayload(Entity login, string expiredSeconds, string notBeforeSeconds)
        {
            var payload = new JsonWebTokenPayload
            {
                IssuedAtTime = WebServiceExchangeHelper.GetIssuedAtTime().ToString(),
                NotBefore    = WebServiceExchangeHelper.GetNotBeforeTime(notBeforeSeconds).ToString(),
                Expiry       = WebServiceExchangeHelper.GetExpiry(expiredSeconds).ToString(),
                Jti          = WebServiceExchangeHelper.GetJti().ToString(),
                BranchCode   = login.GetAttributeValue <string>("tc_branchcode"),
                AbtaNumber   = login.GetAttributeValue <string>("tc_abtanumber"),
                EmployeeId   = login.GetAttributeValue <string>("tc_employeeid"),
                Initials     = login.GetAttributeValue <string>("tc_initials"),
                CreatedBy    = login.GetAttributeValue <EntityReference>("createdby").Name,
                Aud          = DataKey.AudOneWebRetail
            };

            return(payload);
        }
        private OwrJsonWebTokenPayload GetPayload(Entity login, string expiredSeconds, string notBeforeSeconds, string createdByInitials)
        {
            var payload = new OwrJsonWebTokenPayload
            {
                IssuedAtTime = _jtiService.GetIssuedAtTime().ToString(),
                NotBefore    = _jtiService.GetNotBeforeTime(notBeforeSeconds).ToString(),
                Expiry       = _jtiService.GetExpiry(expiredSeconds).ToString(),
                Jti          = WebServiceExchangeHelper.GetJti().ToString(),
                BranchCode   = login.GetAttributeValue <string>("tc_branchcode"),
                AbtaNumber   = login.GetAttributeValue <string>("tc_abtanumber"),
                EmployeeId   = login.GetAttributeValue <string>("tc_employeeid"),
                Initials     = login.GetAttributeValue <string>("tc_initials"),
                CreatedBy    = createdByInitials,
                Aud          = EntityRecords.Configuration.OwrAudOneWebRetail
            };

            return(payload);
        }
        private Dictionary <string, string> GetEventParameters(WebRioResponse webRioResponse, ResponseEntity response)
        {
            if (response == null)
            {
                throw new ArgumentNullException("response");
            }
            var eventParameters = WebServiceExchangeHelper.ContentToEventParamsForWebRio(webRioResponse);

            if (eventParameters == null || eventParameters.Count == 0)
            {
                return(null);
            }

            string jsessionId = string.Empty;

            if (response.Cookies != null && response.Cookies.TryGetValue(ResponseAttribute.WebRioResponseCookie_JSessionId, out jsessionId))
            {
                eventParameters.Add(ResponseAttribute.WebRioResponseCookie_JSessionId, jsessionId);
            }
            return(eventParameters);
        }
示例#14
0
        private void CallTravelPlannerSso(string id)
        {
            var opportunity = CrmService.GetOpportunity(_client.CrmInterface, _logger, id);

            if (opportunity == null)
            {
                FireEventOnOwrError("There is no opportunity in context.");
                return;
            }

            var rooms             = CrmService.GetTravelPlannerRooms(id, _logger, _client.CrmInterface);
            var createdByInitials = opportunity.GetAttributeValue <string>(Opportunity.Initials);
            var login             = CrmService.GetSsoDetails(_client.CrmInterface.GetMyCrmUserId(), _logger, _client.CrmInterface);

            if (login == null)
            {
                FireEventOnOwrError("Login details are missing for the logged-in user.");
                return;
            }

            var privateKey = CrmService.GetPrivateInfo(_logger, _client.CrmInterface);

            if (privateKey == null)
            {
                FireEventOnOwrError("Private Key is missing in the system");
                return;
            }
            var expiredSeconds   = CrmService.GetConfig(Configuration.OwrSsoTokenExpired, _logger, _client.CrmInterface);
            var notBeforeSeconds = CrmService.GetConfig(Configuration.OwrSsoTokenNotBefore, _logger, _client.CrmInterface);

            if (expiredSeconds == null || notBeforeSeconds == null)
            {
                FireEventOnOwrError("Missing payload configuration");
                return;
            }
            var payload = GetPayload(login, expiredSeconds, notBeforeSeconds, createdByInitials);
            var token   = _jtiService.CreateJwtToken(privateKey, payload);

            if (token == null)
            {
                FireEventOnOwrError("JWT token is null");
                return;
            }
            var owrJsonHelper = new OwrJsonHelper(_client.CrmInterface, opportunity);
            var data          = owrJsonHelper.GetCustomerTravelPlannerJson(rooms);

            _logger.LogInformation($"Json to be passed to owr: {data}");
            var serviceUrl = CrmService.GetConfig(Configuration.OwrUrlConfigName, _logger, _client.CrmInterface);

            if (serviceUrl == null)
            {
                FireEventOnOwrError("Service Url is null");
                return;
            }
            var content = _jtiService.SendHttpRequest(HttpMethod.Post, serviceUrl, token, data).Content;

            if (content == null)
            {
                FireEventOnOwrError("Owr response content is null. Please See Details in log output");
                return;
            }
            var ssoResponse = WebServiceExchangeHelper.DeserializeOwrResponseJson(content, _logger);

            if (ssoResponse == null)
            {
                FireEventOnOwrError($"SSO Response could not be parsed. Response is {content}");
                return;
            }
            var eventParams = WebServiceExchangeHelper.ContentToEventParams(ssoResponse, _logger);

            if (eventParams == null)
            {
                FireEventOnOwrError("SSO Response could not be parsed. Please See Details in log output");
                return;
            }
            FireEventOnOwrSuccess(eventParams);
        }