コード例 #1
0
ファイル: Form1.cs プロジェクト: TyDraniu/crowd_login_app
        private async void button5_Click(object sender, EventArgs e)
        {
            List <string> grupy = new List <string>
            {
                "jira-users",
                "jira-restricted-users",
                "confluence-users",
                "confluence-restricted-users",
                "stash-users"
            };

            timer.Start();
            using (Authentication a = new Authentication())
            {
                AuthenticatedToken token = a.Authenticate();
                try
                {
                    SecurityServer s = a.securityServer;

                    List <string> Allusers = await s.findAllPrincipalsAsync(token);

                    List <string> tempUsers = new List <string>();

                    foreach (string g in grupy)
                    {
                        SOAPGroup group = await s.findGroup(token, g);

                        foreach (var m in group.members)
                        {
                            Allusers.Remove(m);
                            this.Text = timer.Elapsed.ToString(@"mm\:ss\:ff");
                        }
                    }

                    tempUsers.AddRange(Allusers);

                    foreach (var u in tempUsers)
                    {
                        SOAPPrincipal SOAPuser = await s.findPrincipalAsync(token, u);

                        if (!SOAPuser.active)
                        {
                            Allusers.Remove(SOAPuser.name);
                            this.Text = timer.Elapsed.ToString(@"mm\:ss\:ff");
                        }
                    }

                    Allusers.Sort();

                    MessageBox.Show(string.Join(" ", Allusers), timer.Elapsed.ToString());
                    this.Text = "Form1";
                    timer.Reset();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
        }
コード例 #2
0
        public IdentityUser GetUserByName(string name)
        {
            AuthenticatedToken apiToken      = GetAuthenticatedToken();
            SOAPPrincipal      soapPrincipal = _securityServer.findPrincipalByName(apiToken, name);

            return(soapPrincipal == null ? null : new IdentityUser {
                UserName = name
            });
        }
コード例 #3
0
ファイル: Form1.cs プロジェクト: TyDraniu/crowd_login_app
        private async void button6_Click(object sender, EventArgs e)
        {
            List <string> grupy = new List <string>
            {
                "jira-users",
                "jira-restricted-users"
            };

            timer.Start();
            using (Authentication a = new Authentication())
            {
                AuthenticatedToken token = a.Authenticate();
                try
                {
                    SecurityServer s = a.securityServer;

                    List <string> JiraUsers       = new List <string>();
                    List <string> RestrictedUsers = new List <string>();
                    List <string> CommonUsers     = new List <string>();

                    SOAPGroup Jiragroup = await s.findGroup(token, grupy[0]);

                    SOAPGroup Restrictedgroup = await s.findGroup(token, grupy[1]);

                    JiraUsers.AddRange(Jiragroup.members.ToList());
                    RestrictedUsers.AddRange(Restrictedgroup.members.ToList());

                    CommonUsers = JiraUsers.FindAll(x => RestrictedUsers.Contains(x));

                    List <SOAPPrincipal> CommonPrincipals = new List <SOAPPrincipal>();
                    foreach (var user in CommonUsers)
                    {
                        SOAPPrincipal SOAPuser = await s.findPrincipalAsync(token, user);

                        if (SOAPuser.active)
                        {
                            CommonPrincipals.Add(SOAPuser);
                        }
                    }

                    MessageBox.Show(string.Join(" ", CommonPrincipals.Select(x => x.name)), timer.Elapsed.ToString());
                    timer.Reset();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
        }
コード例 #4
0
ファイル: Form1.cs プロジェクト: TyDraniu/crowd_login_app
        private async void button4_Click(object sender, EventArgs e)
        {
            timer.Start();
            using (Authentication a = new Authentication())
            {
                AuthenticatedToken token = a.Authenticate();
                try
                {
                    SecurityServer s = a.securityServer;

                    List <string> users = await s.findAllPrincipalsAsync(token);

                    Dictionary <string, int> UsersWithWrongPassword = new Dictionary <string, int>();

                    foreach (string user in users)
                    {
                        this.Text = timer.Elapsed.ToString(@"mm\:ss\:ff");
                        SOAPPrincipal SOAPuser = await s.findPrincipalAsync(token, user);

                        if (SOAPuser.active)
                        {
                            try
                            {
                                string zleHasla = SOAPuser.attributes.SingleOrDefault(x => x.name == "invalidPasswordAttempts")?.values[0];

                                int.TryParse(zleHasla, out int wrPass);
                                if (wrPass > 2)
                                {
                                    UsersWithWrongPassword.Add(SOAPuser.attributes.SingleOrDefault(x => x.name == "displayName")?.values[0], wrPass);
                                }
                            }
                            catch (Exception uex)
                            {
                                MessageBox.Show(uex.Message + '\n' + SOAPuser.name);
                            }
                        }
                    }

                    MessageBox.Show(string.Join("\n", UsersWithWrongPassword.OrderBy(x => x.Key)), timer.Elapsed.ToString());
                    this.Text = "Form1";
                    timer.Reset();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
        }
コード例 #5
0
ファイル: Form1.cs プロジェクト: TyDraniu/crowd_login_app
        private async void button1_Click(object sender, EventArgs e)
        {
            var sub = clock.Subscribe(OnNext(timer), TimerCompleted());

            await Task.Factory.StartNew(() =>
            {
                SOAPPrincipal SOAPuser = new SOAPPrincipal();

                using (Authentication a = new Authentication())
                {
                    if (a.Authenticate(textBox1.Text, textBox2.Text, out SOAPuser))
                    {
                        string name = SOAPuser.attributes.Single(x => x.name == "displayName").values[0];

                        timer.Stop();
                        MessageBox.Show($"Witaj \n{name}");
                    }
                }
            });
        }
コード例 #6
0
ファイル: Form1.cs プロジェクト: TyDraniu/crowd_login_app
        //private Task<SOAPPrincipal> findPrincipal(SecurityServer s, AuthenticatedToken token, string user)
        //{
        //    return Task.Run(() =>
        //    {
        //        SOAPPrincipal u = new SOAPPrincipal();

        //        u = s.findPrincipalWithAttributesByName(token, user);
        //        return u;
        //    });
        //}
        #endregion

        private async void button3_Click(object sender, EventArgs e)
        {
            timer.Start();
            using (Authentication a = new Authentication())
            {
                AuthenticatedToken token = a.Authenticate();
                try
                {
                    SecurityServer s = a.securityServer;

                    List <string> users = await s.findAllPrincipalsAsync(token);

                    List <string> notOurUsers = new List <string>();

                    foreach (string user in users)
                    {
                        SOAPPrincipal SOAPuser = await s.findPrincipalAsync(token, user);

                        if (SOAPuser.active)
                        {
                            bool ourMember = SOAPuser.attributes.Select(x => x.name).Contains("lastAuthenticated");

                            if (!ourMember)
                            {
                                notOurUsers.Add(user);
                            }
                        }
                    }

                    notOurUsers.Sort();

                    MessageBox.Show(string.Join(" ", notOurUsers), timer.Elapsed.ToString());
                    timer.Reset();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
        }
コード例 #7
0
        public bool Authenticate(string username,
                                 string password,
                                 out SOAPPrincipal principal)
        {
            bool authenticated = false;

            principal = null;

            ApplicationAuthenticationContext appContext = new ApplicationAuthenticationContext
            {
                name = APPLICATION_NAME
            };

            // Provide the password associated with the application, as set-up in Crowd.
            PasswordCredential pwdApp = new PasswordCredential
            {
                credential = APPLICATION_PWD
            };

            appContext.credential = pwdApp;

            try
            {
                // Authenticate the application (will fire a SOAPException if authentication fails).
                AuthenticatedToken appToken = _securityServer.authenticateApplication(appContext);

                if (appToken != null)
                {
                    // Set-up authentication context for the principal (user)
                    UserAuthenticationContext userContext = new UserAuthenticationContext
                    {
                        application = APPLICATION_NAME,
                        name        = username
                    };

                    // Provide the password for authenticating this principal (user)
                    PasswordCredential pwdPrincipal = new PasswordCredential
                    {
                        credential = password
                    };
                    userContext.credential = pwdPrincipal;

                    // Authenticate the principal (will fire a SOAPException if authentication fails).
                    string principalToken = _securityServer.authenticatePrincipal(appToken, userContext);

                    if (!string.IsNullOrEmpty(principalToken))
                    {
                        // Find some more details about this authentication user.
                        principal = _securityServer.findPrincipalByToken(appToken, principalToken);

                        authenticated = true;
                    }
                }
            }

            catch (SoapException soapException)
            {
                // Handle Authentication/SOAP Errors here...
                if (soapException.Detail.FirstChild.Name == "InvalidAuthenticationException")
                {
                    MessageBox.Show("Błędny login lub hasło", "Błąd", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    // throw;
                }
                else
                {
                    MessageBox.Show(soapException.Message, soapException.Detail.FirstChild.Name, MessageBoxButtons.OK, MessageBoxIcon.Error);
                }

                #region ExceptionInfo
                // Consult soapException.Detail.FirstChild.Name for further details:

                // This may be set to one of:
                //      RemoteException
                //      InvalidAuthenticationException
                //      InvalidAuthorizationTokenException
                //      InactiveAccountException
                //      InvalidTokenException
                #endregion
            }
            catch (Exception ex)
            {
                // Handle all other errors here...
                MessageBox.Show(ex.Message);
            }

            return(authenticated);
        }