Configuration par programme de l’élément federatedAuthentication dans microsoft.identityModel sur l’application asp.net

J’essaie de générer par programme la configuration suivante contenue dans la configuration microsoft.identityModel.

    

Jusqu’à présent, je n’ai pas réussi à configurer cela. J’ai essayé de définir les éléments suivants dans application_Start mais un message d’erreur apparaît lorsque j’essaie de fédérer

“ID5002: la propriété Issuer du contrôle FederatedPassiveSignIn doit être définie sur l’adresse d’un noeud final STS pouvant traiter les messages de protocole passif WS-Federation.”

 FederatedAuthentication.WSFederationAuthenticationModule.Realm = "http://Foo.com/"; FederatedAuthentication.WSFederationAuthenticationModule.Issuer = "https://IssuedByFoo.com"; FederatedAuthentication.WSFederationAuthenticationModule.PassiveRedirectEnabled = false; FederatedAuthentication.WSFederationAuthenticationModule.RequireHttps = true; FederatedAuthentication.SessionAuthenticationModule.CookieHandler.RequireSsl = true; FederatedAuthentication.SessionAuthenticationModule.CookieHandler.Path = "/"; 

Je suis à peu près sûr de ne pas configurer FederatedAuthentication correctement et je ne sais pas où le configurer correctement. Une chose que j’ai remarquée, c’est que lorsque je définis un point d’arrêt sur une demande de début et que j’inspecte le FederatedAuthentication.WSFederationAuthenticationModule, je ne vois pas les propriétés définies dessus lorsque les valeurs ne sont pas présentes dans le fichier web.config

Je gère toujours toute ma configuration depuis le code et n’utilise que les parameters de l’application pour les noms de serveur RP, sts, etc. Cette configuration devrait fonctionner pour vous. btw – C’est la configuration pour une partie de confiance (la configuration de sts est plus simple.)

  protected void Application_Start() { FederatedAuthentication.FederationConfigurationCreated += FederatedAuthentication_FederationConfigurationCreated; } private static void FederatedAuthentication_FederationConfigurationCreated(object sender, FederationConfigurationCreatedEventArgs e) { //from appsettings... const ssortingng allowedAudience = "http://audience1/user/get"; const ssortingng rpRealm = "http://audience1/"; const ssortingng domain = ""; const bool requireSsl = false; const ssortingng issuer = "http://sts/token/create; const ssortingng certThumbprint = "mythumbprint"; const ssortingng authCookieName = "StsAuth"; var federationConfiguration = new FederationConfiguration(); federationConfiguration.IdentityConfiguration.AudienceRessortingction.AllowedAudienceUris.Add(new Uri(allowedAudience)); var issuingAuthority = new IssuingAuthority(internalSts); issuingAuthority.Thumbprints.Add(certThumbprint); issuingAuthority.Issuers.Add(internalSts); var issuingAuthorities = new List {issuingAuthority}; var validatingIssuerNameRegistry = new ValidatingIssuerNameRegistry {IssuingAuthorities = issuingAuthorities}; federationConfiguration.IdentityConfiguration.IssuerNameRegistry = validatingIssuerNameRegistry; federationConfiguration.IdentityConfiguration.CertificateValidationMode = X509CertificateValidationMode.None; var chunkedCookieHandler = new ChunkedCookieHandler {RequireSsl = false, Name = authCookieName, Domain = domain, PersistentSessionLifetime = new TimeSpan(0, 0, 30, 0)}; federationConfiguration.CookieHandler = chunkedCookieHandler; federationConfiguration.WsFederationConfiguration.Issuer = issuer; federationConfiguration.WsFederationConfiguration.Realm = rpRealm; federationConfiguration.WsFederationConfiguration.RequireHttps = requireSsl; e.FederationConfiguration = federationConfiguration; 

J’ai fini par aller avec ça

Est-il possible d’obtenir des revendications ACS sans modifier web.config?

Cela semble fonctionner et nous utilisions déjà un module personnalisé, il était donc facile à mettre en œuvre.