Nous essayons d'utiliser l'exemple ACS 4 (à partir de http://claimsid.codeplex.com/) comme modèle pour notre projet ADFS. Nous n'avons aucun problème avec les demandes passives aux services authentifiés ADFS. Dans l'exemple, le fournisseur de fédération est un STS personnalisé et l'exemple fonctionne correctement.Implémentation d'ACS avec et ADFS en tant que STS
Maintenant, nous souhaitons remplacer le fournisseur de fédération personnalisé (Adatum FP dans l'exemple) par notre propre système ADFS.
Notre bonne configuration est maintenant comme suit (espaces de noms cachés)
- serviceclient: Console Applicaton, qui appelle les services
- Services: WCF Webservice, méthode simple retour d'une chaîne. Ceci est la valeur par défaut [Ordertracking.Services dans l'exemple]
- Services.Authentication: Notre fournisseur d'identité personnalisé. Ceci est par défaut [Litware.SimulatedIssuer dans l'échantillon]
- ADFS: Notre fournisseur Fédération [FederationProvider.Adatum dans exemple]
serviceclient veut appeler les services, et de la configuration, il sait qu'il doit obtenir un jeton à partir de IP (Services.Authentication). Le jeton est ensuite transmis à ADFS, qui valide le jeton et renvoie un nouveau jeton à ServiceClient. Le client nouveau passe le jeton FP au service, et le service (étant une partie de confiance sur ADFS) vérifie le jeton contre ADFS et exécute la méthode de service.
La question:
Remplacement de la STS dans l'exemple avec ADFS, semble briser l'intégration. Nous semblons obtenir correctement le jeton de l'adresse IP, mais nous rencontrons des problèmes lors de la transmission du jeton IP à ADFS. Il semble que nous avons un problème avec notre public Uri de, mais nous avons ajouté
https: // 'adfs fqdn'/ADFS/services/Confiance/13/IssuedTokenMixedSymmetricBasic256
Exception client Nous obtenons un MessageSecurityException dans le client avec ce InnerException InnerException { « ID3242. le jeton de sécurité ne peut pas être authentifié ou autorisé »}
[System.ServiceModel.FaultException]: {"ID3242: The security token could not be authenticated or authorized."}
Data: {System.Collections.ListDictionaryInternal}
HelpLink: null
InnerException: null
Message: "ID3242: The security token could not be authenticated or authorized."
Source: null
StackTrace: null
TargetSite: null
ADFS journal de débogage
<TraceRecord xmlns="http://schemas.microsoft.com/2009/10/IdentityModel/TraceRecord" Severity="Error">
<Description>Handled exception.</Description>
<AppDomain>Microsoft.IdentityServer.ServiceHost.exe</AppDomain>
<Exception>
<ExceptionType>Microsoft.IdentityModel.Tokens.AudienceUriValidationFailedException, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35</ExceptionType>
<Message>ID1038: The AudienceRestrictionCondition was not valid because the specified Audience is not present in AudienceUris. Audience: 'https://<adfs fqdn>/adfs/services/Trust/13/IssuedTokenMixedSymmetricBasic256'</Message>
<StackTrace>
at Microsoft.IdentityModel.Tokens.SamlSecurityTokenRequirement.ValidateAudienceRestriction(IList`1 allowedAudienceUris, IList`1 tokenAudiences) at Microsoft.IdentityModel.Tokens.Saml2.Saml2SecurityTokenHandler.ValidateConditions(Saml2Conditions conditions, Boolean enforceAudienceRestriction) at Microsoft.IdentityModel.Tokens.Saml2.Saml2SecurityTokenHandler.ValidateToken(SecurityToken token) at Microsoft.IdentityServer.Service.Tokens.MSISSaml2TokenHandler.ValidateToken(SecurityToken token) at Microsoft.IdentityModel.Tokens.WrappedSaml2SecurityTokenAuthenticator.ValidateTokenCore(SecurityToken token) at System.IdentityModel.Selectors.SecurityTokenAuthenticator.ValidateToken(SecurityToken token) at Microsoft.IdentityModel.Tokens.WrappedSamlSecurityTokenAuthenticator.ValidateTokenCore(SecurityToken token) at System.IdentityModel.Selectors.SecurityTokenAuthenticator.ValidateToken(SecurityToken token) at System.ServiceModel.Security.ReceiveSecurityHeader.ReadToken(XmlReader reader, SecurityTokenResolver tokenResolver, IList`1 allowedTokenAuthenticators, SecurityTokenAuthenticator&amp; usedTokenAuthenticator) at
....
</StackTrace>
</Exception>
</TraceRecord>
Nous avons ajouté l'uri du public à notre IP Web.config:
<audienceUris mode="Always">
<add value="https://<adfs fqdn>/adfs/services/Trust/13/IssuedTokenMixedSymmetricBasic256" />
</audienceUris>
Si nécessaire, nous pouvons publier des fichiers de configuration supplémentaires et des captures d'écran de configuration ADFS.
conseils _Some à tous ceux qui essaient cela - construire les connexions dans le code premier. La configuration XML est un peu plus difficile à travailler. C'est le meilleur conseil que j'ai trouvé sur l'ensemble de mon voyage WIF. –