Though WCF routing features for content-based routing, protocol bridging, and error handling seem to be very exciting, I have faced some issues while defining their security context in Routing service environment. In this article, we will discuss custom authentication and security for routing services.
- Routing_Service_POC.zip
- Routing_Service_POC
- POC
- library
- ICSharpCode.SharpZipLib.dll
- Ionic.Zip.dll
- RoutingServicePOC
- _ReSharper.RoutingServicePOC
- BuildScriptCache
- .crc
- .version
- 5
- 9
- 6ecd42b4.dat
- DecompilerCache
- ModuleIds.xml
- NamedArguments
- .crc
- .version
- 1
- 8
- 64bd7be7.dat
- PdbInfo
- ProjectModel
- ProjectModel.dat
- Resources
- .crc
- .version
- SymbolCache.bin
- TagPrefixes
- .crc
- .version
- 0
- 1
- 2
- 5
- 5402198f.dat
- 6
- TodoCache
- .crc
- .version
- 5
- 5402198f.dat
- 7
- WebsiteFileReferences
- .crc
- .version
- WordIndex
- .crc
- .version
- 1
- 3da9581c.dat
- 3
- Client
- ClientCommonLib
- GlobalCommonLib
- RoutingServicePOC.5.1.ReSharper.user
- RoutingServicePOC.sln
- RoutingServicePOC.suo
- RoutingServicePOC
- ServiceA.Contract
- ServiceA
- ServiceB.Contract
- ServiceB
- ServiceCommonLib
- Routing_Service_POC-noexe.zip
|
using System.Diagnostics;
using System.Linq;
using System.ServiceModel.Channels;
using System.ServiceModel;
namespace GlobalCommonLib
{
public class CredentialHelper
{
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
private const string HnForUserName = "UserName";
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
private const string HNamespaceForUserName = @"http://UserName.url";
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
private const string HnForPassword = "Password";
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
private const string HNamespaceForPassword = @"http://Password.url";
public static CentralRequestSession GetSessionData(Message request)
{
var user = string.Empty;
var pass = string.Empty;
if (request.Headers.Any(h => h.Name.Equals(HnForUserName)))
user = request.Headers.GetHeader<string>(HnForUserName, HNamespaceForUserName, HnForUserName);
if (request.Headers.Any(h => h.Name.Equals(HnForPassword)))
pass = request.Headers.GetHeader<string>(HnForPassword, HNamespaceForPassword, HnForPassword);
return new CentralRequestSession(user, pass);
}
public static void SetSessionData(string userName, string password, ref Message request)
{
var userHeader = new MessageHeader<string> { Actor = HnForUserName, Content = userName };
//Creating an untyped header to add to the WCF context
System.ServiceModel.Channels.MessageHeader unTypedHeaderForUser = userHeader.GetUntypedHeader(HnForUserName, HNamespaceForUserName);
//Add the header to the current request
request.Headers.Add(unTypedHeaderForUser);
var passwordHeader = new MessageHeader<string> { Actor = HnForPassword, Content = password };
//Creating an untyped header to add to the WCF context
System.ServiceModel.Channels.MessageHeader unTypedHeaderForPassword = passwordHeader.GetUntypedHeader(HnForPassword, HNamespaceForPassword);
//Add the header to the current request
request.Headers.Add(unTypedHeaderForPassword);
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
In my childhood, my uncle has shown me how to see the cloud in a close look and I understand that one can draw some elements of the Earth in the sky-canvas if he/she wants to. After that the cloud becomes closer to me and It teaches me one thing that, a deeper-look to something will give you some clues to draw your imagination. You can able to see that one which you have build-up in your mind.
Years past, I have started my career as a software engineer and has been looking for passion in my coding and development which I should be to enjoy my profession and has started asking myself- 'am I doing any engineering here?!' Is my code becoming that thing which I have designed in my mind? So to find that answer I have tried that old solution here... I have decided to come closer to my code and start analyzing them. And it is really working for me and at least it gives me the confidence that I can build something that I really want to. I can draw my thinking there through my code and can build-up my vision that I have designed in my mind. It also helps me to think out of the box, solve each problems by making blocks and make me careful on each steps.
• Morshed's Technical Blog site: http://morshedanwar.wordpress.com/
• Morshed's Technical articles those are published in Codeproject site: http://www.codeproject.com/script/Articles/MemberArticles.aspx?amid=2992452
• Morshed's Linkedin profile: http://www.linkedin.com/in/morshedanwar
• Morshed's Facebook Profile : http://www.facebook.com/morshed.pulok
Beside all these I like to do - photography and music. Here is my Flickr photos : http://www.flickr.com/photos/morshed_anwar/