2017-06-09 2 views
0

J'ai un problème avec cette fonctionnalité. L'action SignIn fonctionne bien avec ADFS et retourne à AuthServices/Acs Mais l'action Déconnexion n'appelle pas ADFS et redirige directement vers les paramètres returnUrl (cochée avec fiddler). J'appelle ce lien: /AuthServices/Logout?ReturnUrl=~/&Status=LoggedOutKentor MVC Logout ne pas appeler l'adresse de déconnexion

web.config est configuré comme ceci:

<kentor.authServices entityId="https://localhost:2181/AuthServices" returnUrl="https://localhost:2181/"> 
    <identityProviders> 
     <add 
     entityId="https://ADFS DOMAIN/adfs/services/trust" 
     signOnUrl="https://ADFS DOMAIN/adfs/ls" 
     logoutUrl="https://ADFS DOMAIN/adfs/ls/?wa=wsignout1.0" 
     binding="HttpPost" 
     allowUnsolicitedAuthnResponse="true" 
     metadataLocation="https://ADFS DOMAIN/FederationMetadata/2007-06/FederationMetadata.xml" 
     wantAuthnRequestsSigned="true"> 
     <signingCertificate fileName="~/App_Data/*****.cer" /> 
     </add> 
    </identityProviders> 
    </kentor.authServices> 

Si je lance https://ADFS DOMAIN/adfs/ls/?wa=wsignout1.0 sur un autre onglet, il travaille, je retourne à la page signin de mon site Web.

Donc, il semble être un problème interne pour récupérer logouturl et l'envoyer?

Merci pour votre aide.

Répondre

0

Il y a un certain nombre d'exigences qui doivent être remplies avant que la demande de fermeture de session sera émis:

  1. Vous devez avoir une réclamation http://kentor.se/AuthServices/LogoutNameIdentifier et son émetteur doit correspondre au IDP que vous essayez de vous déconnecter de. Vous devez avoir http://kentor.se/AuthServices/SessionIndex revendication.
  2. Votre AuthServices configuration IDP a besoin d'un logoutUrl (je vois que vous avez spécifié cela, mais probablement il est plus facile de laisser AuthServices le lire à partir des métadonnées)
  3. Vous avez spécifié un ServiceCertificate soit avec signature ou les deux utilisation (non seulement le chiffrement)
  4. Votre AuthServices configuration IDP a DisableOutboundLogoutRequests = false (valeur par défaut)

revendications manquantes (deux premiers points) est le problème le plus probable si vous avez une certaine transformation des sinistres qui se passe lors de la connexion ou vous n'êtes pas conserver l'original ClaimsIdent ité. Voir aussi la documentation concernant ClaimsAuthenticationManager, par ex. https://github.com/KentorIT/authservices/blob/master/doc/ClaimsAuthenticationManager.md

Vous pouvez activer la journalisation et de voir qui de ces points ne parviennent pas: https://github.com/KentorIT/authservices/blob/v0.21.2/Kentor.AuthServices/WebSSO/LogOutCommand.cs#L155-L170

+0

Merci pour votre réponse. ADFS n'envoie pas claimtype en tant que http://kentor.se/AuthServices/LogoutNameIdentifier ou http://kentor.se/AuthServices/SessionIndex. Comment puis-je configurer web.config (ou peut-être adfs) pour l'avoir? Mais les adfs ne sont pas de mon côté. –

+0

ADFS ne les envoie pas, mais le code ACS AuthServices par défaut les ajoute à l'identité lors de la connexion. J'ai ajouté un lien vers ClaimsAuthenticationManager dans la réponse ci-dessus – explunit

+0

Voir aussi une discussion ici: https://github.com/KentorIT/authservices/issues/665 – explunit