Mapping Credentials to Authentication Schemes

You may have noticed that an HTTP binding is configured with an HttpClientCredentialType whereas an HTTP binding element is configured with an AuthenticationScheme. How are these two settings related? If you want to switch between a custom binding and a standard binding for HTTP, then you need to know how to do the translation. Here’s…

3

Controlling HTTP Connection Limits

I need to make many simultaneous HTTP calls to the same service from my client application. How do I increase the limit on the number of HTTP connections? This setting isn’t available on any of the bindings or binding elements but the default limit can be set through the DefaultConnectionLimit property on System.Net.ServicePointManager. This will…

3

Cleaning up Async

There needs to be some concept of cleanup that takes place when an asynchronous request can’t be completed. For example, when a service is shut down or a socket is closed you know that any asynchronous operation waiting on that resource will never get a result. Something needs to happen to the asynchronous operations to…

1

Sharing Contracts Across Services

I’ve deployed several services that share some of their data contracts. When I build a client application that calls more than one of the services, each service contributes a copy of the data contract during proxy generation. This causes a compile error because the same type is defined multiple times. How do I resolve the…

3

2007 Year in Review

The year in review comes at the end of December rather than the beginning of January this year. Another year has gone by, with 250 articles posted so far (exactly as many as were posted during all of last year). Counting today and four more to come by the end of the year, the total…

1

Session Security

How often does authorization occur? Authorization is typically scoped to either messages or sessions. When authorization is scoped to messages, then an authorization request occurs each time a message is sent. When authorization is scoped to sessions, then an authorization request occurs at the start of the session and all of the messages that are…

1

Windows and UPN Format Credentials

There are many different formats for representing an identity. Some of the popular styles are distinguished names (CN=Name,OU=Users,DC=Domain), Windows (Domain\Name), and user principals (Name@Domain.com). The style you choose when setting the ClientCredentials is not necessarily going to be the same style selected for presenting the identity in ServiceSecurityContext. For example, you may provide credentials on…

1

Concurrent Channel Performance

Being thread-safe is different than being concurrent. The channel interfaces are thread-safe so that multiple callers can use them at the same time without getting garbled messages. However, if multiple callers try to send messages on a single channel at the same time then a few different things might happen. The channel might be fully…

1

Understanding MustUnderstand

The MustUnderstand attribute is frequently misunderstood because people assume that it must be much more complex and powerful than it really is. I explained the mechanics of using MustUnderstand last year but today’s article is about some of the misconceptions for how the attribute is used. Annotating a message header with MustUnderstand creates a contract…

1

Printing Flexible Message Headers

When a message header supports multiple representations, which version is used when the message header is printed? A message header is a piece of data about the message that’s carried on the wire somewhere apart from the message contents. When using an enveloped message format like SOAP, there’s typically an explicit container for message headers…

1