//------------------------------------------------------------------------------------------------------------------------- // 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 }
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(); } }