I am acting as an SSO initiated Service Provider. I have configured a LocalServiceProviderConfiguration and multiple PartnerIdentityProviderConfigurations. I am successfully making the InitiateSsoAsync call to the identity provider. When that is complete and succesful, the service provider is getting called (via SAML controller / AssertionConsumerService). However, in the AssertionConsumerService when I execute ReceiveSsoAsync() in the service provider, I am getting an error that the “A SAML authn request was expected. Instead samlp:Response was received.”. I don’t understand why I am getting this message since my service provider would not need to have a local identity provider. Can you give me an idea what the problem might be?
this is the below code i wrote
public async Task InitiateSingleSignOn()
{
// Get the name of the logged in user.
var userName = User?.Identity?.Name;
// For demonstration purposes, include some claims.
var attributes = new List<SamlAttribute>()
{
new SamlAttribute(ClaimTypes.Email, User?.FindFirst(ClaimTypes.Email)?.Value),
new SamlAttribute(ClaimTypes.GivenName, User?.FindFirst(ClaimTypes.GivenName)?.Value),
new SamlAttribute(ClaimTypes.Surname, User?.FindFirst(ClaimTypes.Surname)?.Value),
new SamlAttribute("PrimarySid", "10554"),
new SamlAttribute("Name", "civicuser")
};
var partnerName = _configuration["PartnerName"];
var relayState = _configuration["RelayState"];
var authnContext = "urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport";
// Initiate single sign-on to the service provider (IdP-initiated SSO)
// by sending a SAML response containing a SAML assertion to the SP.
// The optional relay state normally specifies the target URL once SSO completes.
await _samlIdentityProvider.InitiateSsoAsync(partnerName, userName, attributes, relayState);
return new EmptyResult();
}
await _isamlIdentityProvider.ReceiveSsoAsync();