Intro to Windows Identity Foundation (WIF)

By Douglas at April 14, 2010 20:09
Filed Under: Geneva Framework, WIF, ADFS 2.0

Yesterday, 04/13/2010, I gave a talk on Windows Identity Foundation at ALEMUG, the Atlanta Leading Edge Microsoft User Group. As a follow up to that talk, I’m providing links to resources that you can use to become familiar with WIF and Claims based security in general.


http://msdn.microsoft.com/en-us/security/aa570351.aspx, is the primary landing page for Microsoft Identity Management. Here you will find the download links for the WIF runtime, the current download for Active Directory Federation Server 2.0 and CardSpace 2.0, and numerous other resources.


The WIF SDK can be downloaded here. The SDK provides Visual Studio templates and a number of code samples that are a great help in developing WIF enabled applications.


Vittorio Bertocci gave a great session on WIF at PDC09. The video of the session can be found here. The application that is demoed during that session has been made available at the MSDN Code Gallery.


There are a number of bloggers who are talking about Windows Identity Foundations. A Bing search for Windows Identity Foundation, or the original code name “Geneva Framework” will surface a wealth of information.


Well that’s all for now. Happy Coding.

Announcing BizTalk Server 2010

By Douglas at March 29, 2010 17:20
Filed Under: BizTalk

BizTalk Server 2009 R2 has been rebranded as BizTalk Server 2010. You can see the announcement here.

New Home

By Douglas at March 29, 2010 16:39
Filed Under:

On the advise of my friend and colleague Whitney Weaver,  I’ve decided to invest in myself and host a blog under my own domain name.

Welcome. More coming soon

Terrarium Returns

By douglas at July 17, 2008 13:51
Filed Under: Terrarium

In ancient antiquity, members of the Microsoft .NET Framework team envisioned a universe where creatures would compete for Ecosystem dominance. Terrarium was that universe and it was good.

The .NET Terrarium was a .NET 1.x game/learning tool that allowed developers to develop "creatures" that where then released into a peer networked ecosystem to battle it out for world dominance.
The Terrarium has a large following but as the original developers moved on the universe stagnated and died... until now.

This post on Bil Simsers blog announces the reintroduction of the .NET Terrarium... as a CodePlex project!!!! So not only can you participate in bug battling goodness, you can help develop the next generations of the Terrarium. So go check-out http://www.codeplex.com/terrarium2 and I'll see you on the battlefield.

Cannot locate document specification because multiple schemas matched the message type

By Douglas at April 09, 2008 10:47
Filed Under: BizTalk

I ran into an interesting issue a couple of weeks ago and I thought I would share.

1st, the meat of the post.

If you have extracted the schemas from an XmlSerializable object and deployed those schemas to BizTalk, you can't use that object (or any of its dependant objects) as a BizTalk message type.
Why? Because BizTalk registers XmlSerializable types that are used as messages as schemas. If you have already registered the schema, you will end up with message type duplication.



I was working on an application where BizTalk was operating as a SOA messaging bus.
The system was designed to receive data from a number of different systems, map that data to a canonical object model.

The canonical object model consisted of several XmlSerializable classes written in C#.
I used xsd.exe to extract schemas for the objects so that I could use the BizTalk mapper to map to and from the object model.

All of this worked great until I decided to break some common functionality into a separate orchestration.
Since no mapping would occur in the Helper orchestration, I decided to pass the canonical object directly to the orchestration.
I also decided that calling the Helper orchestration via Direct Message Box binding would increase its overall utility and reduce coupling.
The end result was that I created a Message Type and a Port Type that referenced the canonical object instead of the canonical object schemas.

I deployed my changes and submitted a test message.
As soon as my "core" orchestration called the new helper orchestration, I got a familiar error message in an unexpected point in the process.

Cannot locate document specification because multiple schemas matched the message type
 

My first reaction was total disbelief. I hadn't changed any schemas. In fact, I didn't even redeploy my schema project.
I checked the Schemas folder under BizTalk Application 1 and there was only one schema with the offending namespace#rootnode combination.
So I checked the Schemas folder under <All Artifacts> and there where two schemas... and the new schema was filed under the BizTalk.System Application.

I this point, I was quite confused. You can't deploy to BizTalk.System. It is for system use only. 
I dug a little deeper and discovered that my Canonical object C# assembly was the source of the duplicate schema... and then I understood.

My canonical object model was already "registered" in BizTalk via the schema I generated to enable mapping to the object model.
When I used the canonical class as a message type, BizTalk extracted the schema from the serialization metadata and registered the resulting message type with the messaging engine.
Because both schemas are the same, I had duplicate message types.

Luckily the fix was simple. I changed the Message Type and a Port Type to use the canonical object schemas and serialized between the different object representation in the orchestrations before sending the data to the Message Box.

About the author

Douglas Marsh is a Senior Consultant with Magenic Technologies.  His current focus is on EAI and SOA technologies within the Microsoft product line.  Over the past 10 years he has implemented .NET solutions for a number of industries including Manufactoring, Automotive Services, Financial Services, and Telecommunications. 

Page List