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