public CosignLoginResultModel Extract(IQueryCollection query)
        {
            StringValues states       = query["state"];
            string       state        = states.FirstOrDefault();
            StringValues redirectUrls = query["redirectUrl"];
            string       redirectUrl  = redirectUrls.FirstOrDefault();
            StringValues codes        = query[$"cosign-{_cosignClientName}"];
            string       code         = codes.FirstOrDefault();
            string       token        = code.Replace(" ", "+");

            return(CosignLoginResultModel.Create(state, redirectUrl, token));
        }
Esempio n. 2
0
        public async Task <IActionResult> Login()
        {
            CosignLoginResultModel cosignModel = _cosignLoginResultsExtractor.Extract(Request.Query);
            JObject payload = _tcpBackchannel.Send(
                cosignModel.Token,
                _cosignServer.Name,
                _cosignServer.Port,
                _cosignClient.Name,
                _cosignServer.TryCount);

            LoggedinUserModel loggedinUserModel = _payloadExctractor.Exctract(payload);

            string cacheKey = await _loggedUsersStorage.SaveLoginAsync(loggedinUserModel);

            Dictionary <string, string> parameters = new Dictionary <string, string>
            {
                { "code", cacheKey },
                { "state", cosignModel.State }
            };
            string redirectUrl = QueryHelpers.AddQueryString(cosignModel.RedirectUrl, parameters);

            return(Redirect(redirectUrl));
        }