Comment valider ADFS jeton SAML

Je suis actuellement en train de générer des jetons SAML de ADFS comme ceci:

 WSTrustChannelFactory factory = null;
        try
        {
            //use a UserName Trust Binding for username authentication
            factory = new WSTrustChannelFactory(
                new UserNameWSTrustBinding(SecurityMode.TransportWithMessageCredential),
                 new EndpointAddress("https://adfs.company.com/adfs/services/trust/13/usernamemixed"));

            factory.TrustVersion = TrustVersion.WSTrust13;

            factory.Credentials.UserName.UserName = "user";
            factory.Credentials.UserName.Password = "pw";


            var rst = new RequestSecurityToken
            {
                RequestType = RequestTypes.Issue,
                AppliesTo = new EndpointReference(relyingPartyId),
                KeyType = KeyTypes.Bearer
            };
            IWSTrustChannelContract channel = factory.CreateChannel();
              GenericXmlSecurityToken genericToken = channel.Issue(rst) 
               as     GenericXmlSecurityToken;
         }
        finally
        {
            if (factory != null)
            {
                try
                {
                    factory.Close();
                }
                catch (CommunicationObjectFaultedException)
                {
                    factory.Abort();
                }
            }
        }

Maintenant, nous allons dire que j'ai créer une application web qui utilise ces jetons pour l'authentification. Autant que je sache, le flux de travail devrait être comme ceci:

  • Générer un jeton
  • client obtient le jeton généré (après ouverture de session valides)
  • client caches jeton
  • client utilise un jeton pour la prochaine connexion
  • application web valide jeton, n'appelle pas ADFS

Comment puis-je valider que le jeton le client présente est-elle valable? Ai-je besoin du certificat du serveur ADFS pour décrypter le jeton?

J'ai toujours pu enregistrer le jeton à un DB, mais...

OriginalL'auteur hoetz | 2013-09-09