Hi,
I've got a RESTful WCF service using Basic authentication, a custom service host, and a . I've got a custom UserNamePasswordValidator set up, and a custom IPrincipal correctly flows through to the operation. For legacy interoperability, I need to support a different mode of authentication, however. The way it should work goes:
- User POSTs to a login URI
- The service authenticates the user as above, but returns a session token (encrypted user credentials) as an HTTP response header.
- All subsequent requests from the user contain the session token instead of Basic authentication.
My current thought is this: if the session token contains encrypted credentials, then it should be possible to manipulate the incoming message, decrypting the credentials and replacing the session header with a Basic authentication header. My problem is finding an extensibility point that:
- Exposes the message properties in some way AND
- Is executed -before- the custom UserNamePasswordValidator executes..
Do any of you gurus know of such an extensibility point, or a way to customize the transport security mechanism? I'm honestly bewildered by the vast array of options here, and browsing the System.ServiceModel namespaces in Reflector has been an exercise in frustration.
Thanks!