Calculating values in SOAP envelope

If you run Fiddler when authenticating to SDL Knowledge Center, you see:

  1. A POST to /InfoShareSTS/issue/wstrust/mixed/username that sends the credentials. 
  2. The client receives a response that contains a large <xenc:EncryptedData> element.
  3. The client sends (almost unmodified) the <xenc:EncryptedData> in a POST to /InfoShareWS/Wcf/API25/Application.

But appended after this <xenc:EncryptedData> block in step 3 is a <Signature> block that contains a <DigestValue> and <SignatureValue>.

How is the <DigestValue> calculated?

How is the <SignatureValue> calculated?

Parents Reply
  • In Publication Manager this is solved through the Microsoft WCF components offered by the .NET Framework (and before by Microsoft Windows Identity Framework (WIF)). In essence Publication Manager does it very similar to the open-sourced API client 'ISHRemote'

    For example in https://github.com/sdl/ISHRemote/blob/master/Source/ISHRemote/Trisoft.ISHRemote/InfoShareWcfConnection.cs you'll recognize ChannelFactory. But the magic on the SOAP envelope is hidden in .NET.

    Personally I think it is pretty courageous to build that up from scratch. As an alternative the Content Manager on your version still holds the DEPRECATED ASMX based API. This one is probably quite a lot faster to get working in python but is going to be removed eventually (at the time of writing it will still be available in upcoming Tridion Docs 14, then again still deprecated).

    Adding some reasons for deprecation... First it relies on the built-in security system so where the CMS owns the username and the password which is not where the world is heading. Second, the ASMX-based SOAP implementation is old and bypassed by various other standards - then again that makes that there are a lot of libraries to help you implement it.

Children
No Data