If you’re working with an AD FS farm with multiple claims providers, you may find it advantageous to generate “identifier” claims from those providers, so that in subsequent workflow in the claims pipeline, this can be used to build authorization logic around them and claims issued.
For example, let’s say we have Identity Providers FOO and BAR, using e-mail address as the inbound assertion/claim.
In the claims provider settings for each we’re going to validate the inbound request from the Foo IdP and the Bar IdP, based on the Issuer (Entity ID) and then insert a value into a claims description called http://schemas.microsoft.com/2012/01/requestcontext/claims/x-idp
Foo Issuer / IdP
c:[Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress", Issuer == "https://foo.mydomain/com/idp"]
=> issue(Type = http://schemas.microsoft.com/2012/01/requestcontext/claims/x-idp, Value = "Foo IdP");
Bar Issuer / IdP
c:[Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress", Issuer == "https://bar.theirdomain/com/idp"]
=> issue(Type = http://schemas.microsoft.com/2012/01/requestcontext/claims/x-idp, Value = "Bar IdP");
If we then wish to insert further values from an attribute store or modify the claim later on , then this allows us to do so by calling upon the previously defined http://schemas.microsoft.com/2012/01/requestcontext/claims/x-idp description, validating the value against our expected result and then issuing a new claim according to our requirements.