Exemple #1
0
 public void Disconnect()
 {
     if (--RefCount == 0)
     {
         _client = null;
     }
 }
Exemple #2
0
        public void AddRemoveUserFromGroup()
        {
            // Arrange
            var ssoAdminClient = new SsoAdminClient(_vc, _user, _password, new AcceptAllX509CertificateValidator());

            var expectedUserName = "******";
            var expectedPassword = "******";
            var newUser          = ssoAdminClient.CreateLocalUser(
                expectedUserName,
                expectedPassword);

            var group = ssoAdminClient.GetGroups("administrators", newUser.Domain).FirstOrDefault <Group>();

            // Act
            var addActual    = ssoAdminClient.AddPersonUserToGroup(newUser, group);
            var removeActual = ssoAdminClient.RemovePersonUserFromGroup(newUser, group);

            // Assert
            Assert.IsTrue(addActual);
            Assert.IsTrue(removeActual);

            // Cleanup
            ssoAdminClient.DeleteLocalUser(
                newUser);
        }
Exemple #3
0
        public void SetLockoutPolicy()
        {
            // Arrange
            var ssoAdminClient                   = new SsoAdminClient(_vc, _user, _password, new AcceptAllX509CertificateValidator());
            var originalLockoutPolicy            = ssoAdminClient.GetLockoutPolicy();
            var expectedDescription              = "TestDescription";
            var expectedAutoUnlockIntervalSec    = 20;
            var expectedFailedAttemptIntervalSec = 30;
            var expectedMaxFailedAttempts        = 5;

            // Act
            var actual = ssoAdminClient.SetLockoutPolicy(
                expectedDescription,
                expectedAutoUnlockIntervalSec,
                expectedFailedAttemptIntervalSec,
                expectedMaxFailedAttempts);

            // Assert
            Assert.NotNull(actual);
            Assert.AreEqual(expectedDescription, actual.Description);
            Assert.AreEqual(expectedAutoUnlockIntervalSec, actual.AutoUnlockIntervalSec);
            Assert.AreEqual(expectedFailedAttemptIntervalSec, actual.FailedAttemptIntervalSec);
            Assert.AreEqual(expectedMaxFailedAttempts, actual.MaxFailedAttempts);

            // Cleanup
            ssoAdminClient.SetLockoutPolicy(
                originalLockoutPolicy.Description,
                originalLockoutPolicy.AutoUnlockIntervalSec,
                originalLockoutPolicy.FailedAttemptIntervalSec,
                originalLockoutPolicy.MaxFailedAttempts
                );
        }
Exemple #4
0
        public void SetPasswordPolicy()
        {
            // Arrange
            var ssoAdminClient = new SsoAdminClient(_vc, _user, _password, new AcceptAllX509CertificateValidator());

            var originalPasswordPolicy = ssoAdminClient.GetPasswordPolicy();

            var expectedDescription = "TestDescription";
            var expectedProhibitedPreviousPasswordsCount = originalPasswordPolicy.ProhibitedPreviousPasswordsCount + 1;
            var expectedMinLength = originalPasswordPolicy.MinLength + 1;
            var expectedMaxLength = originalPasswordPolicy.MaxLength + 1;
            var exptectedMaxIdenticalAdjacentCharacters = originalPasswordPolicy.MaxIdenticalAdjacentCharacters + 1;
            var expectedMinNumericCount      = originalPasswordPolicy.MinNumericCount + 1;
            var expectedMinSpecialCharCount  = originalPasswordPolicy.MinSpecialCharCount + 1;
            var expectedMinAlphabeticCount   = originalPasswordPolicy.MinAlphabeticCount + 2;
            var expectedMinUppercaseCount    = 0;
            var expectedMinLowercaseCount    = originalPasswordPolicy.MinLowercaseCount + 2;
            var expectedPasswordLifetimeDays = originalPasswordPolicy.PasswordLifetimeDays - 2;

            // Act
            var actual = ssoAdminClient.SetPasswordPolicy(
                description: expectedDescription,
                prohibitedPreviousPasswordsCount: expectedProhibitedPreviousPasswordsCount,
                minLength: expectedMinLength,
                maxLength: expectedMaxLength,
                maxIdenticalAdjacentCharacters: exptectedMaxIdenticalAdjacentCharacters,
                minNumericCount: expectedMinNumericCount,
                minSpecialCharCount: expectedMinSpecialCharCount,
                minAlphabeticCount: expectedMinAlphabeticCount,
                minUppercaseCount: expectedMinUppercaseCount,
                minLowercaseCount: expectedMinLowercaseCount,
                passwordLifetimeDays: expectedPasswordLifetimeDays);

            // Assert
            Assert.NotNull(actual);
            Assert.AreEqual(expectedDescription, actual.Description);
            Assert.AreEqual(expectedProhibitedPreviousPasswordsCount, actual.ProhibitedPreviousPasswordsCount);
            Assert.AreEqual(expectedMinLength, actual.MinLength);
            Assert.AreEqual(expectedMaxLength, actual.MaxLength);
            Assert.AreEqual(exptectedMaxIdenticalAdjacentCharacters, actual.MaxIdenticalAdjacentCharacters);
            Assert.AreEqual(expectedMinNumericCount, actual.MinNumericCount);
            Assert.AreEqual(expectedMinAlphabeticCount, actual.MinAlphabeticCount);
            Assert.AreEqual(expectedMinUppercaseCount, actual.MinUppercaseCount);
            Assert.AreEqual(expectedMinLowercaseCount, actual.MinLowercaseCount);
            Assert.AreEqual(expectedPasswordLifetimeDays, actual.PasswordLifetimeDays);

            // Cleanup
            ssoAdminClient.SetPasswordPolicy(
                description: originalPasswordPolicy.Description,
                prohibitedPreviousPasswordsCount: originalPasswordPolicy.ProhibitedPreviousPasswordsCount,
                minLength: originalPasswordPolicy.MinLength,
                maxLength: originalPasswordPolicy.MaxLength,
                maxIdenticalAdjacentCharacters: originalPasswordPolicy.MaxIdenticalAdjacentCharacters,
                minNumericCount: originalPasswordPolicy.MinNumericCount,
                minSpecialCharCount: originalPasswordPolicy.MinSpecialCharCount,
                minAlphabeticCount: originalPasswordPolicy.MinAlphabeticCount,
                minUppercaseCount: originalPasswordPolicy.MinUppercaseCount,
                minLowercaseCount: originalPasswordPolicy.MinLowercaseCount,
                passwordLifetimeDays: originalPasswordPolicy.PasswordLifetimeDays);
        }
Exemple #5
0
        public void AddRemoveLocalUser()
        {
            // Arrange
            var ssoAdminClient      = new SsoAdminClient(_vc, _user, _password, new AcceptAllX509CertificateValidator());
            var expectedUserName    = "******";
            var expectedPassword    = "******";
            var expectedDescription = "test-description";
            var expectedEmail       = "*****@*****.**";
            var expectedFirstName   = "Test";
            var expectedLastName    = "User";

            // Act Create User
            var actual = ssoAdminClient.CreateLocalUser(
                expectedUserName,
                expectedPassword,
                expectedDescription,
                expectedEmail,
                expectedFirstName,
                expectedLastName);

            // Assert Created User
            Assert.AreEqual(expectedUserName, actual.Name);
            Assert.AreEqual(expectedDescription, actual.Description);
            Assert.AreEqual(expectedEmail, actual.EmailAddress);
            Assert.AreEqual(expectedFirstName, actual.FirstName);
            Assert.AreEqual(expectedLastName, actual.LastName);

            // Act Delete User
            ssoAdminClient.DeleteLocalUser(
                actual);
        }
Exemple #6
0
        public void GetLockoutPolicy()
        {
            // Arrange
            var ssoAdminClient = new SsoAdminClient(_vc, _user, _password, new AcceptAllX509CertificateValidator());

            // Act
            var actual = ssoAdminClient.GetLockoutPolicy();

            // Assert
            Assert.NotNull(actual);
        }
        public void GetDomains()
        {
            // Arrange
            var ssoAdminClient = new SsoAdminClient(_vc, _user, _password, new AcceptAllX509CertificateValidator());

            // Act
            var actual = ssoAdminClient.GetDomains().ToArray <IdentitySource>();

            // Assert
            Assert.NotNull(actual);
            Assert.IsTrue(actual.Length >= 2);
        }
Exemple #8
0
        public void GetAllLocalOsUsers()
        {
            // Arrange
            var ssoAdminClient = new SsoAdminClient(_vc, _user, _password, new AcceptAllX509CertificateValidator());

            // Act
            var actual = ssoAdminClient.GetLocalUsers("", "localos").ToArray();

            // Assert
            Assert.NotNull(actual);
            Assert.Greater(actual.Length, 0);
        }
        public void Setup()
        {
            var ssoAdminUri = new Uri($"https://{SERVER_ADDRESS}:443/sso-adminserver/sdk");
            var stsUri      = new Uri($"https://{SERVER_ADDRESS}/sts/STSService/vsphere.local");

            _ssoAdminClient = new SsoAdminClient(
                ssoAdminUri,
                stsUri,
                new AcceptAllX509CertificateValidator());
            _authorizationPassword = ConvertStringToSecureString(ADMIN_PASSWORD);
            Assert.NotNull(_ssoAdminClient);
        }
Exemple #10
0
 public SsoSolutionUserRegistration(
     ILoggerFactory loggerFactory,
     SetupServiceSettings serviceSettings,
     SsoAdminClient ssoAdminClient)
 {
     if (loggerFactory == null)
     {
         throw new ArgumentNullException(nameof(loggerFactory));
     }
     _logger          = loggerFactory.CreateLogger(typeof(SsoSolutionUserRegistration).FullName);
     _serviceSettings = serviceSettings ?? throw new ArgumentNullException(nameof(serviceSettings));
     _ssoAdminClient  = ssoAdminClient ?? throw new ArgumentNullException(nameof(ssoAdminClient));
 }
Exemple #11
0
 public TrustedCertificatesStore(
     ILoggerFactory loggerFactory,
     SsoAdminClient ssoAdminClient,
     IConfigWriter configWriter)
 {
     if (loggerFactory == null)
     {
         throw new ArgumentNullException(nameof(loggerFactory));
     }
     _logger         = loggerFactory.CreateLogger(typeof(TrustedCertificatesStore).FullName);
     _ssoAdminClient = ssoAdminClient ?? throw new ArgumentNullException(nameof(ssoAdminClient));
     _configWriter   = configWriter ?? throw new ArgumentNullException(nameof(configWriter));
 }
Exemple #12
0
        public void GetRootLocalOsGroups()
        {
            // Arrange
            var ssoAdminClient = new SsoAdminClient(_vc, _user, _password, new AcceptAllX509CertificateValidator());

            // Act
            var actual = ssoAdminClient.GetGroups("", "localos").ToArray();

            // Assert
            Assert.NotNull(actual);
            Assert.Greater(actual.Length, 1);
            Assert.AreEqual("localos", actual[0].Domain);
        }
Exemple #13
0
        public SsoAdminServer(string hostname,
                              string user,
                              SecureString password,
                              X509CertificateValidator serverCertificateValidator)
        {
            Name = hostname;

            _client = new SsoAdminClient(
                hostname,
                user,
                password,
                serverCertificateValidator);

            Id = $"/SsoAdminServer={NormalizeUserName()}@{Name}";
        }
Exemple #14
0
        public void GetPersonUsersInGroup()
        {
            // Arrange
            var ssoAdminClient = new SsoAdminClient(_vc, _user, _password, new AcceptAllX509CertificateValidator());

            // Act
            var actual = ssoAdminClient.GetPersonUsersInGroup("", new Group {
                Name   = "Administrators",
                Domain = "vsphere.local"
            }).ToArray();

            // Assert
            Assert.NotNull(actual);
            Assert.GreaterOrEqual(actual.Length, 1);
            Assert.AreEqual("vsphere.local", actual[0].Domain);
        }
Exemple #15
0
        public void ResetUserPassword()
        {
            // Arrange
            var ssoAdminClient = new SsoAdminClient(_vc, _user, _password, new AcceptAllX509CertificateValidator());

            var expectedUserName = "******";
            var expectedPassword = "******";
            var updatePassword   = "******";
            var newUser          = ssoAdminClient.CreateLocalUser(
                expectedUserName,
                expectedPassword);

            // Act
            // Assert
            Assert.DoesNotThrow(() => {
                ssoAdminClient.ResetPersonUserPassword(newUser, updatePassword);
            });


            // Cleanup
            ssoAdminClient.DeleteLocalUser(
                newUser);
        }
Exemple #16
0
        public int Run(UserInput userInput)
        {
            try {
                var certificatesCommonName = userInput.ServiceHostname;

                _logger.LogDebug($"User Input VC: {userInput.Psc}");
                _logger.LogDebug($"User Input VC User: {userInput.User}");
                _logger.LogDebug($"User Input VC Thumbprint: {userInput.VcThumbprint}");
                _logger.LogDebug($"User Input Force Specified: {userInput.ForceSpecified}");
                _logger.LogDebug($"User Input Sts Settings Path Specified: {userInput.StsSettingsPath}");

                userInput.EnsureIsValid(SetupFlowType.UnregisterFromVC);

                var stsSettings = new SettingsEditor(File.ReadAllText(userInput.StsSettingsPath)).
                                  GetStsSettings();
                _logger.LogDebug($"Sts Settings SolutionServiceId: {stsSettings.SolutionServiceId}");
                _logger.LogDebug($"Sts Settings SolutionOwnerId: {stsSettings.SolutionOwnerId}");

                K8sSettings k8sSettings = null;
                if (userInput.K8sSettings != null && File.Exists(userInput.K8sSettings))
                {
                    k8sSettings = JsonConvert.DeserializeObject <K8sSettings>(File.ReadAllText(userInput.K8sSettings));
                }

                // === VC Unregister Actions ===
                X509CertificateValidator certificateValidator = null;
                if (userInput.ForceSpecified)
                {
                    certificateValidator = new AcceptAllX509CertificateValidator();
                }
                else if (!string.IsNullOrEmpty(userInput.VcThumbprint))
                {
                    certificateValidator = new SpecifiedCertificateThumbprintValidator(userInput.VcThumbprint);
                }

                _logger.LogDebug($"Service Id: {stsSettings.SolutionServiceId}");
                _logger.LogDebug($"Service OwnerId: {stsSettings.SolutionOwnerId}");

                var setupServiceSettings = SetupServiceSettings.FromStsSettings(stsSettings);

                _logger.LogDebug($"SetupServiceSettings ServiceId: {setupServiceSettings.ServiceId}");
                _logger.LogDebug($"SetupServiceSettings OwnerId: {setupServiceSettings.OwnerId}");

                var lookupServiceClient = new LookupServiceClient(
                    userInput.Psc,
                    certificateValidator);

                var ssoSdkUri = lookupServiceClient.GetSsoAdminEndpointUri();
                var stsUri    = lookupServiceClient.GetStsEndpointUri();
                _logger.LogDebug($"Resolved SSO SDK Endpoint: {ssoSdkUri}");
                _logger.LogDebug($"Resolved Sts Endpoint: {stsUri}");

                var ssoAdminClient = new SsoAdminClient(ssoSdkUri, stsUri, certificateValidator);

                // --- SSO Solution User Registration ---
                var ssoSolutionRegitration = new SsoSolutionUserRegistration(
                    _loggerFactory,
                    setupServiceSettings,
                    ssoAdminClient);

                ssoSolutionRegitration.DeleteSolutionUser(userInput.User, userInput.Password);
                // --- SSO Solution User Registration ---

                // --- Lookup Service Registration ---
                var lsRegistration = new LookupServiceRegistration(
                    _loggerFactory,
                    setupServiceSettings,
                    lookupServiceClient);
                lsRegistration.Deregister(userInput.User, userInput.Password);
                // --- Lookup Service Registration ---
                // === VC Unregister Actions ===
            } catch (InvalidUserInputException exc) {
                _logger.LogError(exc, exc.Message);
                return(1);
            } catch (Exception exc) {
                _logger.LogError(exc, exc.Message);
                return(2);
            }

            _logger.LogInformation("Success");
            return(0);
        }
 public PasswordPolicy(SsoAdminClient client)
 {
     _client = client;
 }
Exemple #18
0
        public int Run(UserInput userInput)
        {
            try {
                var certificatesCommonName = userInput.ServiceHostname;

                _logger.LogDebug($"User Input VC: {userInput.Psc}");
                _logger.LogDebug($"User Input VC User: {userInput.User}");
                _logger.LogDebug($"User Input VC Thumbprint: {userInput.VcThumbprint}");
                _logger.LogDebug($"User Input Force Specified: {userInput.ForceSpecified}");

                userInput.EnsureIsValid(SetupFlowType.UpdateTrustedCACertificates);

                // Create Config File Writer
                K8sSettings k8sSettings = null;
                if (userInput.K8sSettings != null && File.Exists(userInput.K8sSettings))
                {
                    k8sSettings = JsonConvert.DeserializeObject <K8sSettings>(File.ReadAllText(userInput.K8sSettings));
                }

                var configWriter = new K8sConfigWriter(_loggerFactory, k8sSettings);

                // Create Lookup Service Client
                X509CertificateValidator certificateValidator = null;
                if (userInput.ForceSpecified)
                {
                    certificateValidator = new AcceptAllX509CertificateValidator();
                }
                else if (!string.IsNullOrEmpty(userInput.VcThumbprint))
                {
                    certificateValidator = new SpecifiedCertificateThumbprintValidator(userInput.VcThumbprint);
                }

                var lookupServiceClient = new LookupServiceClient(
                    userInput.Psc,
                    certificateValidator);

                // Get SSO Admin And STS URIs from Lookup Service
                var ssoSdkUri = lookupServiceClient.GetSsoAdminEndpointUri();
                var stsUri    = lookupServiceClient.GetStsEndpointUri();
                _logger.LogDebug($"Resolved SSO SDK Endpoint: {ssoSdkUri}");
                _logger.LogDebug($"Resolved Sts Endpoint: {stsUri}");

                //
                var ssoAdminClient = new SsoAdminClient(ssoSdkUri, stsUri, certificateValidator);

                // --- Store VC CA certificates ---
                var trustedCertificatesStore = new TrustedCertificatesStore(
                    _loggerFactory,
                    ssoAdminClient,
                    configWriter);
                trustedCertificatesStore.SaveVcenterCACertficates();
                // --- Store VC CA certificates ---
            } catch (InvalidUserInputException exc) {
                _logger.LogError(exc, exc.Message);
                return(1);
            } catch (Exception exc) {
                _logger.LogError(exc, exc.Message);
                return(2);
            }

            _logger.LogInformation("Success");
            return(0);
        }
 public LockoutPolicy(SsoAdminClient client)
 {
     _client = client;
 }
 public AuthenticationPolicy(SsoAdminClient client)
 {
     _client = client;
 }
Exemple #21
0
 public PersonUser(SsoAdminClient client)
 {
     _client = client;
 }
Exemple #22
0
        public int Run(UserInput userInput)
        {
            try {
                var certificatesCommonName = userInput.ServiceHostname;

                _logger.LogDebug($"User Input VC: {userInput.Psc}");
                _logger.LogDebug($"User Input VC User: {userInput.User}");
                _logger.LogDebug($"User Input VC Thumbprint: {userInput.VcThumbprint}");
                _logger.LogDebug($"User Input Force Specified: {userInput.ForceSpecified}");

                userInput.EnsureIsValid(SetupFlowType.RegisterWithVC);

                // --- InMemory Certificates ---
                X509Certificate2 signCertificate = null;
                X509Certificate2 tlsCertificate  = null;
                // --- InMemory Certificates ---


                K8sSettings k8sSettings = null;
                if (userInput.K8sSettings != null && File.Exists(userInput.K8sSettings))
                {
                    k8sSettings = JsonConvert.DeserializeObject <K8sSettings>(File.ReadAllText(userInput.K8sSettings));
                }

                var configWriter = new K8sConfigWriter(_loggerFactory, k8sSettings);

                // --- Signing Certificate ---
                if (!string.IsNullOrEmpty(userInput.SigningCertificatePath) &&
                    File.Exists(userInput.SigningCertificatePath))
                {
                    _logger.LogInformation($"Load signing certificate from path {userInput.SigningCertificatePath}");
                    signCertificate = new X509Certificate2(userInput.SigningCertificatePath);
                }
                else
                {
                    _logger.LogInformation("Generate signing self-signed certificate");
                    var signingCertGen = new SigningCertificateGenerator(
                        _loggerFactory,
                        certificatesCommonName,
                        configWriter);

                    signCertificate = signingCertGen.Generate(Constants.SignCertificateSecretName);
                    if (signCertificate == null)
                    {
                        _logger.LogError("Generate signing self-signed certificate failed.");
                        return(3);
                    }
                }
                // --- Signing Certificate ---

                // --- TLS Certificate ---
                if (!string.IsNullOrEmpty(userInput.TlsCertificatePath) &&
                    File.Exists(userInput.TlsCertificatePath))
                {
                    _logger.LogInformation($"Load tls certificate from path {userInput.TlsCertificatePath}");
                    tlsCertificate = new X509Certificate2(userInput.TlsCertificatePath);
                }
                else
                {
                    _logger.LogInformation("Generate tls self-signed certificate");
                    var tlsCertGen = new TlsCertificateGenerator(
                        _loggerFactory,
                        certificatesCommonName,
                        configWriter);

                    tlsCertificate = tlsCertGen.Generate(Constants.TlsCertificateSecretName);
                    if (tlsCertificate == null)
                    {
                        _logger.LogError("Generate tls self-signed certificate failed.");
                        return(4);
                    }
                }
                // --- TLS Certificate ---

                // === VC Registration Actions ===
                X509CertificateValidator certificateValidator = null;
                if (userInput.ForceSpecified)
                {
                    certificateValidator = new AcceptAllX509CertificateValidator();
                }
                else if (!string.IsNullOrEmpty(userInput.VcThumbprint))
                {
                    certificateValidator = new SpecifiedCertificateThumbprintValidator(userInput.VcThumbprint);
                }

                var lookupServiceClient = new LookupServiceClient(
                    userInput.Psc,
                    certificateValidator);

                var serviceSettings = SetupServiceSettings.NewService(
                    tlsCertificate,
                    signCertificate,
                    userInput.ServiceHostname,
                    443);

                _logger.LogDebug($"Service NodeId: {serviceSettings.NodeId}");
                _logger.LogDebug($"Service OwnerId: {serviceSettings.OwnerId}");
                _logger.LogDebug($"Service ServiceId: {serviceSettings.ServiceId}");
                _logger.LogDebug($"Service Endpoint Url: {serviceSettings.EndpointUrl}");

                var ssoSdkUri = lookupServiceClient.GetSsoAdminEndpointUri();
                var stsUri    = lookupServiceClient.GetStsEndpointUri();
                _logger.LogDebug($"Resolved SSO SDK Endpoint: {ssoSdkUri}");
                _logger.LogDebug($"Resolved Sts Endpoint: {stsUri}");

                var ssoAdminClient = new SsoAdminClient(ssoSdkUri, stsUri, certificateValidator);


                // --- SSO Solution User Registration ---
                var ssoSolutionRegitration = new SsoSolutionUserRegistration(
                    _loggerFactory,
                    serviceSettings,
                    ssoAdminClient);

                ssoSolutionRegitration.CreateSolutionUser(userInput.User, userInput.Password);
                // --- SSO Solution User Registration ---

                // --- Lookup Service Registration ---
                var lsRegistration = new LookupServiceRegistration(
                    _loggerFactory,
                    serviceSettings,
                    lookupServiceClient);
                lsRegistration.Register(userInput.User, userInput.Password);
                // --- Lookup Service Registration ---

                // --- Store VC CA certificates ---
                var trustedCertificatesStore = new TrustedCertificatesStore(
                    _loggerFactory,
                    ssoAdminClient,
                    configWriter);
                trustedCertificatesStore.SaveVcenterCACertficates();
                // --- Store VC CA certificates ---

                // === VC Registration Actions ===

                // --- Save SRS API Gateway service settings ---
                var stsSettings = new StsSettings();
                stsSettings.Realm = ssoSolutionRegitration.GetTrustedCertificate(
                    userInput.User,
                    userInput.Password)?.Thumbprint;
                stsSettings.SolutionUserSigningCertificatePath = Constants.StsSettings_SolutionUserSigningCertificatePath;
                stsSettings.StsServiceEndpoint = stsUri.ToString();
                stsSettings.SolutionOwnerId    = serviceSettings.OwnerId;
                stsSettings.SolutionServiceId  = serviceSettings.ServiceId;

                configWriter.WriteServiceStsSettings(stsSettings);
                // --- Save SRS API Gateway service settings ---
            } catch (InvalidUserInputException exc) {
                _logger.LogError(exc, exc.Message);
                return(1);
            } catch (Exception exc) {
                _logger.LogError(exc, exc.Message);
                return(2);
            }

            _logger.LogInformation("Success");
            return(0);
        }
 public TokenLifetime(SsoAdminClient client)
 {
     _client = client;
 }
Exemple #24
0
 public void Disconnect()
 {
     _client = null;
 }
 public Group(SsoAdminClient client)
 {
     _client = client;
 }
Exemple #26
0
        public int Run(UserInput userInput)
        {
            try {
                var certificatesCommonName = userInput.ServiceHostname;

                _logger.LogDebug($"User Input VC: {userInput.Psc}");
                _logger.LogDebug($"User Input VC User: {userInput.User}");
                _logger.LogDebug($"User Input VC Thumbprint: {userInput.VcThumbprint}");
                _logger.LogDebug($"User Input Force Specified: {userInput.ForceSpecified}");

                userInput.EnsureIsValid(SetupFlowType.CleanupVCRegistration);

                K8sSettings k8sSettings = null;
                if (userInput.K8sSettings != null && File.Exists(userInput.K8sSettings))
                {
                    k8sSettings = JsonConvert.DeserializeObject <K8sSettings>(File.ReadAllText(userInput.K8sSettings));
                }

                // === VC Unregister Actions ===
                X509CertificateValidator certificateValidator = null;
                if (userInput.ForceSpecified)
                {
                    certificateValidator = new AcceptAllX509CertificateValidator();
                }
                else if (!string.IsNullOrEmpty(userInput.VcThumbprint))
                {
                    certificateValidator = new SpecifiedCertificateThumbprintValidator(userInput.VcThumbprint);
                }

                var lookupServiceClient = new LookupServiceClient(
                    userInput.Psc,
                    certificateValidator);

                var    registeredServices = lookupServiceClient.ListRegisteredServices();
                string srsServiceId       = null;
                string srsOwnerId         = null;
                foreach (var service in registeredServices)
                {
                    if (service.ownerId?.StartsWith("srs-SolutionOwner-") ?? false)
                    {
                        // SRS Service registration found
                        srsServiceId = service.serviceId;
                        srsOwnerId   = service.ownerId;
                        break;
                    }
                }

                if (!string.IsNullOrEmpty(srsServiceId) && !string.IsNullOrEmpty(srsOwnerId))
                {
                    _logger.LogInformation($"SRS Service registration found on VC {userInput.Psc}, service Id: {srsServiceId}, service owner Id: {srsOwnerId}");
                    _logger.LogInformation("Performing SRS Service regitration cleanup");
                    var setupServiceSettings = SetupServiceSettings.FromStsSettings(new StsSettings {
                        SolutionServiceId = srsServiceId,
                        SolutionOwnerId   = srsOwnerId
                    });

                    _logger.LogDebug($"SetupServiceSettings ServiceId: {setupServiceSettings.ServiceId}");
                    _logger.LogDebug($"SetupServiceSettings OwnerId: {setupServiceSettings.OwnerId}");

                    var ssoSdkUri = lookupServiceClient.GetSsoAdminEndpointUri();
                    var stsUri    = lookupServiceClient.GetStsEndpointUri();
                    _logger.LogDebug($"Resolved SSO SDK Endpoint: {ssoSdkUri}");
                    _logger.LogDebug($"Resolved Sts Endpoint: {stsUri}");

                    var ssoAdminClient = new SsoAdminClient(ssoSdkUri, stsUri, certificateValidator);

                    // --- SSO Solution User Registration ---
                    var ssoSolutionRegitration = new SsoSolutionUserRegistration(
                        _loggerFactory,
                        setupServiceSettings,
                        ssoAdminClient);

                    ssoSolutionRegitration.DeleteSolutionUser(userInput.User, userInput.Password);
                    // --- SSO Solution User Registration ---

                    // --- Lookup Service Registration ---
                    var lsRegistration = new LookupServiceRegistration(
                        _loggerFactory,
                        setupServiceSettings,
                        lookupServiceClient);
                    lsRegistration.Deregister(userInput.User, userInput.Password);
                }
                else
                {
                    _logger.LogInformation($"SRS Service registration not found on VC {userInput.Psc}");
                }

                // === VC Unregister Actions ===
            } catch (InvalidUserInputException exc) {
                _logger.LogError(exc, exc.Message);
                return(1);
            } catch (Exception exc) {
                _logger.LogError(exc, exc.Message);
                return(2);
            }

            _logger.LogInformation("Success");
            return(0);
        }