title: SAML 2.0 authentication assertion between service providers (C#, .net, MVC4, Component Space)
body: <p>I am having a problem with a system I am building. I have successfully implemented a SP initiated SSO system. However, the issue arises when considering that this system has multiple unique and fully segregated Service Providers that must be capable of interacting and exchanging data. When one SP (SP1) needs to communicate to another SP (SP2), they need to be able to seamlessly transition while remaining secure. Thus, I assume they need to be able to assert or share SAML data. </p>
  
  <p>For instance, a user tries to access the system via SP1 and is redirected to the IdP. The user authenticates against the IdP which will then assert via http post back to SP1. The user now performs a series of tasks on SP1 which eventually require data transmission or a browser redirect to SP2. SP2 is unaware that SP1 had successfully authenticated the user and received a SAML response from the IdP. This is where my problem arises. I need to implement a mechanism that will allow SP2 to become aware of the user's status on SP1. More generally, I need to allow any service provider in a set of service providers to make assertions to one another about the status of a user. However, I cannot find documentation on the "official" way to accomplish this task. </p>
  
  <p>I have thought of multiple solutions to the problem but I doubt that any of them are "official" in the least. 
  One would be persisting a list of SAML assertions on the IdP which can be referenced by guid. Then passing a link from SP1 to SP2 which would reference a controller action and guid that would allow the IdP to re-assert data to SP2. This seems slow and convoluted. 
  Two would be persisting the SAML response somehow after the response is received on SP1 and somehow passing the data to SP2 whenever a user is redirected. </p>
  
  <p>I may be over-thinking and over complicating this process. I may need to move to an IdP initiated SSO based solution. I may be over looking something in the documentation. </p>
  
  <p>If anyone could shed any light on this topic, it would be appreciated. I will be glad to provide any additional information about the subject. </p>