示例#1
0
        //-------------------------------------------------------------------------------------------------------------------------
        // Authenticate user, using Security Service Configuration
        AspectizeUser IAuthentication.Authenticate(string userName, string secret, AuthenticationProtocol protocol, HashHelper.Algorithm algorithm, string challenge)
        {
            var parts = secret.Split('#');

            string otp = parts[0];
            //string password = string.Join("#", parts, 1, parts.Length - 1);
            string password = parts[1];
            string state    = parts[2];

            string messageLog =
                "== Authenticate Radius Step 2 ==============" + Environment.NewLine +
                "Timos user name : " + userName + Environment.NewLine +
                "Radius Host : " + m_strRadiusHost + Environment.NewLine +
                "Radius Port : " + m_nRadiusPort + Environment.NewLine +
                "Shared Key : " + m_strRadiusSharedKey + Environment.NewLine +
                "OTP : " + otp + Environment.NewLine +
                "STATE : " + state + Environment.NewLine;

            string reponseRadius = "Request not sent";

            if (userName != "youcef")
            {
                try
                {
                    reponseRadius = AdministrationService.AuthenticateRadius(m_strRadiusHost, m_nRadiusPort, m_strRadiusSharedKey, userName, otp, state);
                    messageLog   += "Radius response : " + reponseRadius + Environment.NewLine;
                }
                catch (Exception ex)
                {
                    messageLog += "Radius response : " + ex.Message + Environment.NewLine;
                }
                Context.Log(InfoType.Information, messageLog);

                var parts2 = reponseRadius.Split('#');
                if (parts2[0] != "2")
                {
                    return(AspectizeUser.GetUnAuthenticatedUser()); // L'authentification OTP a échoué
                }
            }
            else
            {
                messageLog += "Radius response : " + reponseRadius + Environment.NewLine;
                Context.Log(InfoType.Information, messageLog);
            }

            // Authentification TIMOS

            ITimosServiceForAspectize serviceClientAspectize = (ITimosServiceForAspectize)C2iFactory.GetNewObject(typeof(ITimosServiceForAspectize));
            CResultAErreur            result = serviceClientAspectize.OpenSession(userName, password);

            if (result && result.Data is Dictionary <string, object> )
            {
                string strUserKey = "";

                // Build Key-Value attached to User
                Dictionary <string, object> dicoProperties = (Dictionary <string, object>)result.Data;

                strUserKey = (string)dicoProperties[CUserTimosWebApp.c_champUserKey];

                // Build Role List
                List <string> roles = new List <string>();

                roles.Add("Registered");

                // Build and return authenticated user with Properties and Roles
                return(AspectizeUser.GetAuthenticatedUser(strUserKey, roles.ToArray(), dicoProperties));
            }

            return(AspectizeUser.GetUnAuthenticatedUser());
            // Fin authentification TIMOS
        }
示例#2
0
        static void Main(string[] args)
        {
            CResultAErreur result        = CResultAErreur.True;
            string         strServeurUrl = "tcp://127.0.0.1:8160";
            int            nTcpChannel   = 0;
            string         strBindTo     = "";

            try
            {
                AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);

                //SUPPRIMé journal d'évenements: sur les postes clients qui ne sont pas autorisés
                //à créer un journal d'évenements, ça bloque, et comme ce n'est pas
                //très important sur un poste client, il n'y a plus
                //de journal d'évenements TIMOS sur les postes clients.
                //C2iEventLog.Init("", "Client Timos", NiveauBavardage.VraiPiplette);

                result = CSC2iMultitiersClient.Init(nTcpChannel, strServeurUrl, strBindTo);

                LifetimeServices.LeaseTime            = new TimeSpan(0, 5, 0);
                LifetimeServices.LeaseManagerPollTime = new TimeSpan(0, 5, 0);
                LifetimeServices.SponsorshipTimeout   = new TimeSpan(0, 3, 0);
                LifetimeServices.RenewOnCallTime      = new TimeSpan(0, 8, 0);

                C2iSponsor.EnableSecurite();

                if (result)
                {
                    /*CSessionClient session = CSessionClient.CreateInstance();
                     *
                     * CAuthentificationSessionTimosLoginPwd authParams = new CAuthentificationSessionTimosLoginPwd(
                     *  "youcef",
                     *  "minutes",
                     *  new CParametresLicence(new List<string>(), new List<string>()));
                     *
                     * //result = session.OpenSession(authParams, "Console de test", ETypeApplicationCliente.Windows);/
                     * result = session.OpenSession(new CAuthentificationSessionProcess(), "Console de test", ETypeApplicationCliente.Process);
                     *
                     * if (!result)
                     * {
                     *  result.EmpileErreur("Erreur lors de l'authentification");
                     *  Console.WriteLine("Erreur lors de l'authentification");
                     *  Console.ReadKey();
                     *  return;
                     * }
                     *
                     * /*
                     * string strLogin = "******";
                     * string strPassCrypte = C2iCrypto.Crypte("minutes");
                     *
                     * CContexteDonnee contexte = new CContexteDonnee(session.IdSession, true, false);
                     * CDonneesActeurUtilisateur utilisateurTimos = new CDonneesActeurUtilisateur(contexte);
                     * if (utilisateurTimos.ReadIfExists(new CFiltreData(CDonneesActeurUtilisateur.c_champLogin + "=@1 and " +
                     *      CDonneesActeurUtilisateur.c_champPassword + "=@2",
                     *      strLogin, strPassCrypte)))
                     * {
                     *  result.Data = utilisateurTimos;
                     *  Console.WriteLine("Utilisateur " + strLogin + " connecté");
                     *  Console.ReadKey();
                     *  return;
                     * }*/

                    ITimosServiceForAspectize serviceClientAspectize = (ITimosServiceForAspectize)C2iFactory.GetNewObject(typeof(ITimosServiceForAspectize));
                    string strNomGestionnaire = serviceClientAspectize.GetType().ToString();
                    result = serviceClientAspectize.OpenSession("youcef", "minutes");
                    if (result)
                    {
                        Console.WriteLine("Key utilisateur connecté = " + (string)result.Data);
                        Console.ReadKey();
                    }

                    Console.WriteLine("Nom du gestionnaire : " + strNomGestionnaire);
                    Console.ReadKey();
                }
            }
            catch (Exception e)
            {
                result.EmpileErreur(e.Message);
                Console.WriteLine(e.Message);
                Console.WriteLine("Erreur. Pressez n'importe quelle touche pour quitter");
                Console.ReadKey();
            }
        }