예제 #1
0
 //Add events to the Subject for tracking the authentication status results
 public void UserAuthenticated(UserPrincipal retrievedUser, string domain, string authProvider, string hostIpAddress, string clientId)
 {
     if (_usersRm.HasUser(retrievedUser.Sid.Value, domain, out Guid userId) &&
         _subjectsRm.TryGetSubjectIdForUser(userId, authProvider, domain, out var subId))
     {
         var subject = _repo.GetById <Subject>(subId, new CorrelatedRoot());
         subject.Authenticated(hostIpAddress, clientId);
         _repo.Save(subject);
     }
 }
        public void can_get_subject_ids()
        {
            var  user1   = Guid.NewGuid();
            var  user2   = Guid.NewGuid();
            var  user3   = Guid.NewGuid();
            var  sub1    = AddNewSubject(user1, provider: authProvider2, domain: "other1");
            var  sub2    = AddNewSubject(user2, provider: authProvider2, domain: "other2");
            var  sub3    = AddNewSubject(user3);
            Guid testSub = Guid.Empty;

            AssertEx.IsOrBecomesTrue(() => _rm.TryGetSubjectIdForUser(user1, authProvider2, "other1", out testSub));
            Assert.Equal(sub1, testSub);
            Assert.True(_rm.TryGetSubjectIdForUser(user2, authProvider2, "other2", out testSub));
            Assert.Equal(sub2, testSub);
            Assert.True(_rm.TryGetSubjectIdForUser(user3, authProvider, authDomain, out testSub));
            Assert.Equal(sub3, testSub);
        }