public DateTime GetJsonWebTokenValidFrom()
        {
            const string JsonWebTokenValidFrom = "JsonWebTokenValidFrom";

            if (IOMap.ContainsKey(JsonWebTokenValidFrom))
            {
                return(new DateTime(long.Parse(IOMap[JsonWebTokenValidFrom])));
            }

            throw new InvalidOperationException("Unexpected missing dictionary key");
        }
Ejemplo n.º 2
0
        public string Authenticate(Uri requestUri, Uri callbackUri)
        {
            string key   = requestUri.AbsoluteUri + callbackUri.AbsoluteUri;
            string value = null;

            if (IOMap.ContainsKey(key))
            {
                value = IOMap[key];
                if (value[0] == 'P')
                {
                    return(value.Substring(1));
                }

                if (value[0] == 'A')
                {
                    string [] segments = value.Substring(1).Split(new [] { Delimiter }, StringSplitOptions.RemoveEmptyEntries);
                    throw new AdalServiceException(errorCode: segments[0], message: segments[1])
                          {
                              StatusCode = int.Parse(segments[2])
                          };
                }
            }

            try
            {
                string result = this.internalWebUI.Authenticate(requestUri, callbackUri);
                value = 'P' + result;
                return(result);
            }
            catch (AdalException ex)
            {
                AdalServiceException serviceException = ex as AdalServiceException;
                if (serviceException != null && serviceException.StatusCode == 503)
                {
                    value = null;
                }
                else
                {
                    value = 'A' + string.Format("{0}{1}{2}{3}{4}", ex.ErrorCode, Delimiter, ex.Message, Delimiter,
                                                (serviceException != null) ? serviceException.StatusCode : 0);
                }

                throw;
            }
            finally
            {
                if (value != null)
                {
                    IOMap.Add(key, value);
                }
            }
        }
        public DateTime GetJsonWebTokenValidFrom()
        {
            const string JsonWebTokenValidFrom = "JsonWebTokenValidFrom";

            if (IOMap.ContainsKey(JsonWebTokenValidFrom))
            {
                return(new DateTime(long.Parse(IOMap[JsonWebTokenValidFrom])));
            }

            DateTime result = this.internalRequestCreationHelper.GetJsonWebTokenValidFrom();

            IOMap[JsonWebTokenValidFrom] = result.Ticks.ToString();

            return(result);
        }
        public string GetJsonWebTokenId()
        {
            const string JsonWebTokenIdPrefix = "JsonWebTokenId";
            string       jsonWebTokenId       = JsonWebTokenIdPrefix + RecorderJwtId.JwtIdIndex;

            if (IOMap.ContainsKey(jsonWebTokenId))
            {
                return(IOMap[jsonWebTokenId]);
            }

            string id = Guid.NewGuid().ToString();

            IOMap[jsonWebTokenId] = id;

            return(id);
        }
        public void Authenticate(Uri authorizationUri, Uri redirectUri, IDictionary <string, object> headersMap, CallState callState)
        {
            string key = authorizationUri.AbsoluteUri + redirectUri.AbsoluteUri;

            LastAuthorizationResult = null;
            if (IOMap.ContainsKey(key))
            {
                string value = IOMap[key];
                if (value[0] == 'P')
                {
                    LastAuthorizationResult = OAuth2Response.ParseAuthorizeResponse(value.Substring(1), callState);
                }
                else if (value[0] == 'A')
                {
                    string[] segments = value.Substring(1).Split(new[] { Delimiter }, StringSplitOptions.RemoveEmptyEntries);
                    LastAuthorizationResult = new AuthorizationResult(error: segments[0], errorDescription: segments[1]);
                }
            }

            LastHeadersMap = headersMap;
        }
Ejemplo n.º 6
0
        public async Task <AuthorizationResult> AuthenticateAsync(Uri authorizationUri, Uri redirectUri, CallState callState)
        {
            string key = authorizationUri.AbsoluteUri + redirectUri.AbsoluteUri;

            if (IOMap.ContainsKey(key))
            {
                string value = IOMap[key];
                if (value[0] == 'P')
                {
                    return(OAuth2Response.ParseAuthorizeResponse(value.Substring(1), callState));
                }

                if (value[0] == 'A')
                {
                    string [] segments = value.Substring(1).Split(new [] { Delimiter }, StringSplitOptions.RemoveEmptyEntries);
                    return(new AuthorizationResult(error: segments[0], errorDescription: segments[1]));
                }
            }

            return(null);
        }
        public async Task <IHttpWebResponse> GetResponseSyncOrAsync(CallState callState)
        {
            foreach (var headerKey in this.internalHttpWebRequest.Headers.AllKeys)
            {
                this.keyElements["Header-" + headerKey] = this.internalHttpWebRequest.Headers[headerKey];
            }

            if (this.internalHttpWebRequest.BodyParameters != null)
            {
                foreach (var kvp in this.internalHttpWebRequest.BodyParameters)
                {
                    string value = (kvp.Key == "password") ? "PASSWORD" : kvp.Value;
                    this.keyElements["Body-" + kvp.Key] = value;
                }
            }

            string key = string.Empty;

            foreach (var kvp in this.keyElements)
            {
                key += string.Format("{0}={1},", kvp.Key, kvp.Value);
            }

            if (IOMap.ContainsKey(key))
            {
                string value = IOMap[key];
                if (value[0] == 'P')
                {
                    value = value.Substring(1);
                    return(new ReplayerHttpWebResponse(value, HttpStatusCode.OK));
                }
                else
                {
                    throw SerializationHelper.DeserializeWebException(value.Substring(1));
                }
            }

            throw new Exception("There is no recorded response to replay");
        }
Ejemplo n.º 8
0
        public async Task <IHttpWebResponse> GetResponseSyncOrAsync(CallState callState)
        {
            foreach (var headerKey in this.internalHttpWebRequest.Headers.AllKeys)
            {
                this.keyElements["Header-" + headerKey] = this.internalHttpWebRequest.Headers[headerKey];
            }

            if (this.internalHttpWebRequest.BodyParameters != null)
            {
                foreach (var kvp in this.internalHttpWebRequest.BodyParameters)
                {
                    string value = (kvp.Key == "password") ? "PASSWORD" : kvp.Value;
                    this.keyElements["Body-" + kvp.Key] = value;
                }
            }

            string key = string.Empty;

            foreach (var kvp in this.keyElements)
            {
                key += string.Format("{0}={1},", kvp.Key, kvp.Value);
            }

            Stream responseStream;

            if (IOMap.ContainsKey(key))
            {
                string value = IOMap[key];
                if (value[0] == 'P')
                {
                    value = value.Substring(1);
                    return(new RecorderHttpWebResponse(value, HttpStatusCode.OK));
                }
                else
                {
                    value = value.Substring(1);
                    WebException ex = SerializationHelper.DeserializeWebException(value);
                    throw ex;
                }
            }

            if (RecorderSettings.Mode == RecorderMode.Replay)
            {
                throw new InvalidDataException("Data missing from recorder in replay mode");
            }

            try
            {
                IHttpWebResponse response = await this.internalHttpWebRequest.GetResponseSyncOrAsync(callState);

                responseStream = response.GetResponseStream();
                string str = SerializationHelper.StreamToString(responseStream);
                IOMap.Add(key, 'P' + str);
                return(new RecorderHttpWebResponse(str, HttpStatusCode.OK));
            }
            catch (WebException ex)
            {
                IOMap[key] = 'N' + SerializationHelper.SerializeWebException(ex);
                throw ex;
            }
        }