public object AfterReceiveRequest(ref Message request, IClientChannel channel, InstanceContext instanceContext) { object correlationState = null; HttpRequestMessageProperty requestMessage = request.Properties["httpRequest"] as HttpRequestMessageProperty; if (request == null) { throw new InvalidOperationException("Invalid request type."); } string authHeader = requestMessage.Headers["Authorization"]; if (string.IsNullOrEmpty(authHeader) || !this.Authenticate(authHeader)) { WcfErrorResponseData error = new WcfErrorResponseData(HttpStatusCode.Unauthorized, string.Empty, new KeyValuePair<string, string>("WWW-Authenticate", "Bearer authorization_uri=\"" + authority + "\"" + "," + "resource_id=" + audience)); correlationState = error; } return correlationState; }
public object AfterReceiveRequest(ref Message request, IClientChannel channel, InstanceContext instanceContext) { object correlationState = null; HttpRequestMessageProperty requestMessage = request.Properties["httpRequest"] as HttpRequestMessageProperty; if (request == null) { throw new InvalidOperationException("Invalid request type."); } string authHeader = requestMessage.Headers["Authorization"]; if (string.IsNullOrEmpty(authHeader) || !this.Authenticate(authHeader)) { WcfErrorResponseData error = new WcfErrorResponseData(HttpStatusCode.Unauthorized, string.Empty, new KeyValuePair <string, string>("WWW-Authenticate", "Bearer authorization_uri=\"" + authority + "\"" + "," + "resource_id=" + audience)); correlationState = error; } return(correlationState); }
public void BeforeSendReply(ref Message reply, object correlationState) { WcfErrorResponseData error = correlationState as WcfErrorResponseData; if (error != null) { HttpResponseMessageProperty responseProperty = new HttpResponseMessageProperty(); reply.Properties["httpResponse"] = responseProperty; responseProperty.StatusCode = error.StatusCode; IList <KeyValuePair <string, string> > headers = error.Headers; if (headers != null) { for (int i = 0; i < headers.Count; i++) { responseProperty.Headers.Add(headers[i].Key, headers[i].Value); } } } }