2011-02-02 1 views
11

Il semble que la plupart des informations WIF sont utiles pour activer l'authentification fédérée sur des applications entières. Je suis intéressé par l'utilisation de l'API pour créer des demandes d'authentification SAML et recevoir/interpréter les réponses SAML.Créer une demande d'authentification SAML en utilisant WIF

J'ai trouvé le post suivant sur SO Reading SAML Attributes from SAML Token qui me permet d'aller dans la bonne direction en ce qui concerne la réception et l'interprétation des réponses SAML. Quelqu'un peut-il me donner plus d'informations sur la façon dont je pourrais utiliser l'API pour créer des requêtes SAML?

Toute autre information (matériel de lecture, vidéos, etc.) sur l'API en général serait grandement appréciée.

Répondre

9

Voici un petit exemple de formulaire l'un des our samples qui montre comment créer programatically une demande (SAML) Jeton de sécurité à un STS:

private static SecurityToken GetSamlToken(string realm, string stsEndpoint, ClientCredentials clientCredentials) 
    { 
     using (var factory = new WSTrustChannelFactory(
      new UserNameWSTrustBinding(SecurityMode.TransportWithMessageCredential), 
      new EndpointAddress(new Uri(stsEndpoint)))) 
     { 
      factory.Credentials.UserName.UserName = clientCredentials.UserName.UserName; 
      factory.Credentials.UserName.Password = clientCredentials.UserName.Password; 
      factory.Credentials.ServiceCertificate.Authentication.CertificateValidationMode = X509CertificateValidationMode.None; 
      factory.TrustVersion = TrustVersion.WSTrust13; 

      WSTrustChannel channel = null; 

      try 
      { 
       var rst = new RequestSecurityToken 
           { 
            RequestType = WSTrust13Constants.RequestTypes.Issue, 
            AppliesTo = new EndpointAddress(realm), 
            KeyType = KeyTypes.Bearer, 
           }; 

       channel = (WSTrustChannel)factory.CreateChannel(); 

       return channel.Issue(rst); 
      } 
      finally 
      { 
       if (channel != null) 
       { 
        channel.Abort(); 
       } 

       factory.Abort(); 
      } 
     } 
+0

Cela a été d'une aide considérable. Merci, Eugenio. –

+4

Je ne crois pas que cela crée un SAML 'AuthnRequest' du tout. Il semble créer un WSTrust 'RequestSecurityToken'. – atoumey

Questions connexes