Sitecore.owin.authentication.collection.identityProvider Sitecore 9.2

upgraded Sitecore 9.0 to 9.2. after upgrading everything working except sitecore.owin.authentication.collection.identityProvider (SAML2) 

 

Getting below error message : 

Could not create instance of type sitecore.owin.authentication.collection.identityProvider for sitemap entry not matching constructor was found. 

Please, can you guide me on the same? 

 

Thanks,

  • Hi, 

    Did you manage to solve this? I am also stuck same way.

  • Configure Identity Provider

    Enter values for the name and type attributes. The value of the name attribute must be unique for each entry. The type must be Sitecore.Owin.Authentication.Collections.IdentityProvidersPerSitesMapEntrySitecore.Owin.Authentication, or inherit from this.

    Applying builder to site

    Find mapEntry within the identityProvidersPerSites node of the site that you are going to define a user builder for, and specify the externalUserBuilder node. For example:

    <mapEntry type="Sitecore.FederatedAuthentication.Collections.IdentityProvidersPerSitesMapEntry, Sitecore.FederatedAuthentication">
        <sites hint="list">
            <site>shell</site>
            <site>admin</site>
            <site>website</site>
        </sites>
        <identityProviders hint="list:AddIdentityProvider">mapEntry
            <identityProvider ref="federatedAuthentication/identityProviders/identityProvider[@id='AzureAd']" />
            <identityProvider ref="federatedAuthentication/identityProviders/identityProvider[@id='IdentityServer']" />
        </identityProviders>
        <externalUserBuilder type="Sitecore.Owin.Authentication.Services.DefaultExternalUserBuilder, Sitecore.Owin.Authentication">
             <param desc="isPersistentUser">true</param>
        </externalUserBuilder>
    </mapEntry>
    

    In the example above, Sitecore applies the builder to the shelladmin, and websites sites.

    The applied builders override the builders for the relevant site(s).

     

    Please have a look. 

    https://doc.sitecore.com/developers/91/sitecore-experience-manager/en/configure-federated-authentication.html

  • Add resolve="true" attribute in all mapEntry nodes like this:

    <mapEntry name="<customeName>" type="Sitecore.Owin.Authentication.Collections.IdentityProvidersPerSitesMapEntry, Sitecore.Owin.Authentication" resolve="true">

    In Sitecore 9.2, the parameter less constructor is removed from IdentityProvidersPerSitesMapEntry class. There is only one parameterized constructor and this attribute will resolve the parameters by DI when this class object is initialized.

     

    Also, you will need to add the same attribute in all externalUserBuilder nodes as well (if there are any)