WorkflowGen Documentation
7.22
7.22
  • Guide technique de WorkflowGen
  • Configuration requise
  • Composants techniques du produit
  • Configuration
    • Installation PowerShell
    • Installation manuelle
    • Services Windows WorkflowGen et activation de la licence
    • Tests et paramétrages supplémentaires
  • Sécurité
  • Configuration avancée
  • Opérations
  • Notifications SMTP
  • Synchroniser un annuaire par ligne de commande
  • Module de rapports SQL
  • Exemple de code pour un module HTTP
  • Intégration Azure
  • Intégration AD FS
  • Intégration Auth0
  • Intégration Okta
  • Annexe : Paramètres de configuration Web et d'application
Propulsé par GitBook
Sur cette page
  • Aperçu
  • Code source
Exporter en PDF

Exemple de code pour un module HTTP

PrécédentModule de rapports SQLSuivantIntégration Azure

Aperçu

Cet exemple est un module HTTP qui utilise la variable serveur HTTP_AUTHORIZATION pour l'authentification. Vous devez insérer votre propre méthode pour authentifier les utilisateurs.

Pour plus d'informations, consultez la section dans le .

Cet exemple utilise la méthode d'authentification de base commune pour demander et récupérer les informations d'identification de l'utilisateur. Il peut être facilement modifié pour utiliser toute autre méthode standard ou personnalisée, telle qu'un jeton ou un nom d'utilisateur stocké dans un cookie, un paramètre de chaîne de requête, un paramètre de données de formulaire ou une variable de serveur.

L'objectif principal de ce module HTTP personnalisé est de créer et de définir l'objet GenericPrincipal avec un nom d'utilisateur de connexion valide (en texte clair) du contexte de requête HTTP actuel qui sera ensuite utilisé par WorkflowGen pour vérifier et charger le profil de l'utilisateur.

Code source

//*********************************************************************
// © Tous droits réservés.
//
// Objectif :
// Exemple de code pour un module HTTP
//
//*********************************************************************


using System;
using System.Web;
using System.Security.Principal;
using System.Text;
using System.Diagnostics;

namespace MyCompany.Hosting.Samples

{

    ///<summary>
    /// Description sommaire pour CustomAuthModule
    ///<summary>
    publicclassCustomAuthModule : IHttpModule

    {
        ///<summary>
        /// Constructeur
        ///<summary>

    public CustomAuthModule()

    {


    }


        #region IHttpModule Members


        ///<summary>
        /// Libérer toute ressource
        ///<summary>
        publicvoid Dispose()

        {


        }


        ///<summary>
        /// Initialisation du module
        ///<summary>
        ///<param name="context"></param>
        publicvoid Init(HttpApplication application)

        {

            application.AuthenticateRequest += newEventHandler(application_AuthenticateRequest);

        }


        ///<summary>
        /// Déléguer pour authentifier une requête
        ///<summary>
        ///<param name="context"></param>
        ///<param name="context"></param>
        void application_AuthenticateRequest(object sender, EventArgs e)

        {

            HttpApplication application = sender asHttpApplication;

            Debug.Assert(application != null);

            // Le client a-t-il envoyé les renseignements d'autorisation
            //
            if (application.Context.Request.ServerVariables["HTTP_AUTHORIZATION"] == null)

            {               

                // Redirige le client pour envoyer les justificatifs d'identité HTTP de base
                //

                application.Response.StatusCode = 401;
                application.Response.AddHeader("WWW-Authenticate", "Basic");
                application.Response.End();

            }

            else

            {

                // Récupérer la chaîne d'authentification
                //
                string authString = application.Request.ServerVariables["HTTP_AUTHORIZATION"];
                // Si la méthode d'authentification est de base
                //
                if (authString.StartsWith("basic", StringComparison.InvariantCultureIgnoreCase))
                {
                    string[] justificatifs d'identité;
                    bool isValidutilisateur = false;


                    // Décoder les justificatifs d'identité
                    //
                    credentials = DecodeBase64String(authString.Substring(6)).Split(':');


                    // Les justificatifs d'identité devraient présenter deux cellules
                    //
                    // credentials[0] est le nom d'utilisateur
                    // credentials[1] est le mot de passe
                    Debug.Assert(credentials.Length == 2);


                    //
                    // ****************************
                    // Effectuer la vérification ici
                    // ****************************
                    //
                    // isValidUser = VotreMéthodeIdentificaation(credentials[0], credentials[1]);


                    if (isValidUser)
                    {
                        // Créer un utilisateur
                        //
                        GenericPrincipal user =
                            newGenericPrincipal(
                                newGenericIdentity(credentials[0], authString),
                                newstring[] { "role_name" });


                        // Définir cet utilisateur pour la session
                        //
                        application.Context.User = user;

                    }               

                } 

            }

        }


        ///<summary>
        /// Décode une chaîne chiffrée Base64
        ///<summary>
        ///<param name="base64EncodedString"> </param>
        ///<returns></returns>
        privatestring DecodeBase64String(string base64EncodedString)

        {
            try
            {
                UTF-8Encoding encoder = newUTF-8Encoding();
                Decoder decoder = encoder.GetDecoder();


                byte[] bytesToDecode = Convert.FromBase64String(base64EncodedString);
                int charCount = decoder.GetCharCount(bytesToDecode, 0, bytesToDecode.Length);
                char[] decodedChars = newchar[charCount];



                decoder.GetChars(bytesToDecode, 0,
                    bytesToDecode.Length, decodedChars, 0);


                returnnewString(decodedChars);

            }

            catch (Exception e)

            {

                thrownewException("Error dans DecodeBase64String : " + e.Message);

        }

        }


        #endregion       

    }

}
Authentification HTTP personnalisée de base
Guide technique WorkflowGen