Commit Graph

447 Commits

Author SHA1 Message Date
Daman Arora
33c3967b6b
Add per-domain OAuth (Google, GitHub) provider support (#12702)
Some checks are pending
CodeQL Analysis / CodeQL (actions) (push) Waiting to run
Docker Image Build / build (push) Waiting to run
Sonar Quality Check (Main) / Sonar JaCoCo Coverage (push) Waiting to run
* Add domain_id to oauth_provider table and VO

* Add domain-aware methods to OauthProviderDao

* Add domainId parameter to OAuth provider API commands and response

* Add domain support to OAuth2AuthManager

* Add domain-aware OAuth verification

* Add domain support to ListOAuthProvidersCmd and update related tests

* fix domain path issue

* Add domainId support to OAuth provider

* Return domain name and UUID in OAuth provider API responses using ApiDBUtils

* Refactor domain ID resolution in VerifyOAuthCodeAndGetUserCmd to improve code clarity

* Enhance OAuth2 plugin support for domain-level configuration and authentication checks

* Update OAuth2 tests and VerifyOAuthCodeAndGetUserCmdTest

* Add method to find OAuth provider by domain with global fallback

* Update OAuth provider configuration to use 'domain' instead of 'domainid' in columns and details

* Refactor OAuth provider methods to support domain-level queries and enhance user verification

* Add caching for access token retrieval in GithubOAuth2Provider

* Refactor access token checks in GithubOAuth2Provider to use StringUtils for improved readability and consistency

* Refactor null checks to use utility for improved readability and consistency

* Update OAuth2UserAuthenticatorTest to include domainId in user verification method

* Remove unnecessary blank line and unused imports in OAuth provider command classes

* Refactor and cleanup

* Remove unnecessary blank lines

* Enhance RegisterOAuthProviderCmdTest with additional provider mock data

* Remove startup gate from OAuth plugin initialization to support dynamic config toggling

* Add strictScope to ConfigKey to disable global fallback for domain-scoped oauth2.enabled

* Add domain-scoped provider filtering to listOauthProvider and centralize domain resolution in OAuth2AuthManager

* Add External OAuth tab with domain-scoped provider selection to login page

* code cleanup

* test fix

* Handle login page provider visibility

* UI cleanup

* UI Cleanup

* Keep text color consistent

* add unit tests

* Add Multiple-domain OAuth tests

* Refactor as per PR comments

* Use idempotent DDL helpers for oauth_provider schema migration

* Use global config check for global providers and extract oauthEnabled variable

* Make strictScope return null when id is null

* Rename verification methods to use 'verifySecretCodeAndFetchEmail' for consistency

* Refactor domain handling in OAuth2AuthManagerImpl to use DomainService instead of DomainDao

* Enhance domain ID descriptions in OAuth command classes for clarity

* Add domain path handling to OAuth provider commands and improve descriptions

* Update domain path description in VerifyOAuthCodeAndGetUserCmd to clarify behavior with Domain ID

* Replace remove method with expunge in deleteOauthProvider and add corresponding unit test

* Add external login label to Login.vue and update i18n locale handling

* Fix stale value issue in updateConfiguration response handling in ConfigurationValue.vue

* Enhance OAuth login error handling and add unit test for missing parameters

* Add validation to reject enabling OAuth provider when plugin is disabled at domain scope

* Add domain reassignment support to UpdateOAuthProviderCmd and enhance validation in OAuth2AuthManagerImpl

* Add domain ID to OAuth provider arguments in config

* Fix condition for OAuth verification URL handling in router

* Add domain path to OauthProviderResponse and update UI config to display it

* Update config to remove 'secretkey' from columns and details

* Add secretkey to details in config and display in DetailsTab

* Implement normalization of ROOT domain to null for global OAuth provider handling and add corresponding unit tests

* Refactor OAuth plugin domain scope handling to use a centralized method for enabling checks

* Add strict scope handling to ConfigKey and update OAuth2AuthManager usage

* Implement domain removal listener to clean up OAuth providers on domain deletion

* Enhance OAuth tab icons with disabled state styling for better UX

* Add domain-specific provider prompt and update OAuth provider handling

---------

Co-authored-by: Daman Arora <daman.arora@shapeblue.com>
2026-07-09 16:30:31 +05:30
Joël
c2c855b9b1
Add keycloak OAuth provider (#13033) 2026-06-23 14:02:00 +02:00
Vishesh
a0aafe2fa7
Update bouncy castle (#12794)
Co-authored-by: Harikrishna Patnala <harikrishna.patnala@gmail.com>
2026-05-22 11:07:44 -03:00
Suresh Kumar Anaparti
1bff543e58
Merge branch '4.22' 2026-03-27 01:25:42 +05:30
Suresh Kumar Anaparti
d6c39772b2
Set management server id from cookies after saml login (#12858) 2026-03-25 20:52:44 +05:30
Suresh Kumar Anaparti
75620309c2
Merge branch '4.22' 2026-03-04 21:13:01 +05:30
Suresh Kumar Anaparti
65e54091ff
Merge branch '4.20' into 4.22 2026-03-04 21:12:15 +05:30
Suresh Kumar Anaparti
56dc11980f
test_accounts.py failure fix - keep the camelCase parameter "domainId" (#12689) 2026-02-27 11:36:18 +01:00
Suresh Kumar Anaparti
30e6c224bd
Merge branch '4.22' 2026-02-19 13:20:04 +05:30
Suresh Kumar Anaparti
5caf6cd043
Merge branch '4.20' into 4.22 2026-02-19 13:19:14 +05:30
Suresh Kumar Anaparti
8c12a13216
Fix NPE during reset password (#12585) 2026-02-18 20:03:36 +01:00
Manoj Kumar
c79b33c1fb
Allow enforcing password change for a user after reset by admin (root/domain) (#12294)
* API modifications for passwordchangerequired

* ui login flow for passwordchangerequired

* add passwordchangerequired in listUsers API response, it will be used in UI to render reset password form

* cleanup redundant LOGIN_SOURCE and limiting apis for first time login

* address copilot comments

* allow enforcing password change for all role types and update reset pwd flow for passwordchangerequired

* address review comments

* add unit tests

* cleanup ispasswordchangerequired from user_view

* address review comments

* 1. Allow enforcing password change while creating user
2. Admin can enforce password change on next login with out resetting password

* address review comment, add unit test

* improve code coverage

* fix pre-commit license issue

* 1. allow enter key to submit change password form
2. hide force password reset for disabled/locked user in ui

* 1. throw exception when force reset password is done for locked/disabled user/account
2. ui validation on current and new password being same
3. allow enforce change password for add user until saml is not enabled

* allow oauth login to skip force password change
2026-02-16 16:01:42 +05:30
Erik Böck
e32d08e50e
Create new generic method for resource UUID obtention in event's descriptions (#12502) 2026-02-05 11:23:40 +01:00
Abhishek Kumar
9b4f16b73f
api,server: apis return their http request type (#11382)
* api,server: apis return their http request type

Signed-off-by: Abhishek Kumar <abhishek.mrt22@gmail.com>

* fix and unit test

Signed-off-by: Abhishek Kumar <abhishek.mrt22@gmail.com>

* more test

Signed-off-by: Abhishek Kumar <abhishek.mrt22@gmail.com>

* address copilot

Signed-off-by: Abhishek Kumar <abhishek.mrt22@gmail.com>

* Update plugins/api/discovery/src/main/java/org/apache/cloudstack/api/response/ApiDiscoveryResponse.java

---------

Signed-off-by: Abhishek Kumar <abhishek.mrt22@gmail.com>
Co-authored-by: dahn <daan@onecht.net>
Co-authored-by: Harikrishna <harikrishna.patnala@gmail.com>
2026-01-29 13:52:07 +05:30
Daan Hoogland
cb822feb72 Merge branch '4.22' 2026-01-27 16:21:59 +01:00
Daan Hoogland
75db42bca6 Merge branch '4.20' into 4.22 2026-01-27 15:23:23 +01:00
Vitor Hugo Homem Marzarotto
f73362ae48
Fix saml bug unable to login (#10868)
* Fix check

* Adds configuration for behaviour, when SAML SSO is disabled for a user

* set default configuration value to false and rename it to enable.login.with.disabled.saml

---------

Co-authored-by: Vitor Hugo Homem Marzarotto <vitor.marzarotto@scclouds.com.br>
Co-authored-by: erikbocks <erik.bock@outlook.com>
2026-01-27 09:13:21 +02:00
dependabot[bot]
1b0a036a5b
Bump ads.version from 2.0.0.AM25 to 2.0.0.AM27 (#12269)
Bumps `ads.version` from 2.0.0.AM25 to 2.0.0.AM27.

Updates `org.apache.directory.server:apacheds-server-integ` from 2.0.0.AM25 to 2.0.0.AM27
- [Commits](https://github.com/apache/directory-server/compare/2.0.0.AM25...2.0.0.AM27)

Updates `org.apache.directory.server:apacheds-core-constants` from 2.0.0.AM25 to 2.0.0.AM27
- [Commits](https://github.com/apache/directory-server/compare/2.0.0.AM25...2.0.0.AM27)

Updates `org.apache.directory.server:apacheds-core-annotations` from 2.0.0.AM25 to 2.0.0.AM27
- [Commits](https://github.com/apache/directory-server/compare/2.0.0.AM25...2.0.0.AM27)

Updates `org.apache.directory.server:apacheds-core` from 2.0.0.AM25 to 2.0.0.AM27
- [Commits](https://github.com/apache/directory-server/compare/2.0.0.AM25...2.0.0.AM27)

Updates `org.apache.directory.server:apacheds-protocol-ldap` from 2.0.0.AM25 to 2.0.0.AM27
- [Commits](https://github.com/apache/directory-server/compare/2.0.0.AM25...2.0.0.AM27)

Updates `org.apache.directory.server:apacheds-jdbm-partition` from 2.0.0.AM25 to 2.0.0.AM27
- [Commits](https://github.com/apache/directory-server/compare/2.0.0.AM25...2.0.0.AM27)

Updates `org.apache.directory.server:apacheds-ldif-partition` from 2.0.0.AM25 to 2.0.0.AM27
- [Commits](https://github.com/apache/directory-server/compare/2.0.0.AM25...2.0.0.AM27)

---
updated-dependencies:
- dependency-name: org.apache.directory.server:apacheds-server-integ
  dependency-version: 2.0.0.AM27
  dependency-type: direct:development
  update-type: version-update:semver-patch
- dependency-name: org.apache.directory.server:apacheds-core-constants
  dependency-version: 2.0.0.AM27
  dependency-type: direct:development
  update-type: version-update:semver-patch
- dependency-name: org.apache.directory.server:apacheds-core-annotations
  dependency-version: 2.0.0.AM27
  dependency-type: direct:development
  update-type: version-update:semver-patch
- dependency-name: org.apache.directory.server:apacheds-core
  dependency-version: 2.0.0.AM27
  dependency-type: direct:development
  update-type: version-update:semver-patch
- dependency-name: org.apache.directory.server:apacheds-protocol-ldap
  dependency-version: 2.0.0.AM27
  dependency-type: direct:development
  update-type: version-update:semver-patch
- dependency-name: org.apache.directory.server:apacheds-jdbm-partition
  dependency-version: 2.0.0.AM27
  dependency-type: direct:development
  update-type: version-update:semver-patch
- dependency-name: org.apache.directory.server:apacheds-ldif-partition
  dependency-version: 2.0.0.AM27
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-21 12:07:23 +05:30
Daan Hoogland
22da57f922 Merge branch '4.22' 2025-12-22 14:13:50 +01:00
Daan Hoogland
55ab7c5589 Merge branch '4.20' into 4.22 2025-12-22 13:23:37 +01:00
vladimirpetrov
b394b5ba74
Fix terms, typos and grammar mistakes in the API, error messages, events, etc. (#7857)
This PR aligns the use of terminology, renaming VM / virtual machine references to 'Instance' and also capitalising the terms Templates, Network, Snapshot, User, Account in CloudStack APIs, error and log messages, events, tooltips, etc. Many typos, grammar and spelling mistakes were fixed, also terms like IPv4, VPN, VPC, etc. were properly capitalised. Some error messages were cleaned for better readability. The test cases, expecting some exception strings were adjusted accordingly.

Here is the wiki page, describing the changes in details:
https://cwiki.apache.org/confluence/display/CLOUDSTACK/Object+Naming+and+Title+Case+Convention

---------

Co-authored-by: Manoj Kumar <manojkr.itbhu@gmail.com>
Co-authored-by: Harikrishna <harikrishna.patnala@gmail.com>
2025-12-22 15:18:58 +05:30
dahn
91376c7994
cleanup LDAP code according to warnings (#11436)
Co-authored-by: Daan Hoogland <dahn@apache.org>
Co-authored-by: Pearl Dsilva <pearl1594@gmail.com>
2025-12-18 11:09:09 +01:00
dahn
124fcde59c
unlink an ldap domain (#11962)
Co-authored-by: Daan Hoogland <dahn@apache.org>
Co-authored-by: Abhishek Kumar <abhishek.mrt22@gmail.com>
Co-authored-by: Suresh Kumar Anaparti <sureshkumar.anaparti@gmail.com>
2025-12-17 13:04:06 +01:00
Daan Hoogland
9032fe3fb5 merge LTS branch 4.22 into main 2025-11-26 11:55:50 +01:00
dahn
e90e31d386
add isPerson check to query for AD (#11843) 2025-11-12 16:09:28 +01:00
Harikrishna Patnala
dbda673e1f Updating pom.xml version numbers for release 4.23.0.0-SNAPSHOT
Signed-off-by: Harikrishna Patnala <harikrishna.patnala@gmail.com>
2025-11-05 16:54:39 +05:30
Harikrishna Patnala
d160731b9f Updating pom.xml version numbers for release 4.22.1.0-SNAPSHOT
Signed-off-by: Harikrishna Patnala <harikrishna.patnala@gmail.com>
2025-11-05 16:07:07 +05:30
Harikrishna Patnala
71f47d6130 Updating pom.xml version numbers for release 4.22.0.0
Signed-off-by: Harikrishna Patnala <harikrishna.patnala@gmail.com>
2025-10-30 19:23:56 +05:30
Wei Zhou
e333ce9782
Updating pom.xml version numbers for release 4.20.3.0-SNAPSHOT 2025-10-24 09:13:19 +02:00
Wei Zhou
4dc3931233
Updating pom.xml version numbers for release 4.20.2.0
Signed-off-by: Wei Zhou <weizhou@apache.org>
2025-10-16 11:42:56 +02:00
Pearl Dsilva
cd12fa5848
Add UUID field for LDAP configuration (#11462)
* Add UUID field for LDAP configuration

* move db changes to the lastest schema file

* Add ID param to list ldapConf API & delete ldapConf API

* fix ui test

* fix 1 ui test

* fix test

* fix api description

---------

Co-authored-by: dahn <daan@onecht.net>
2025-10-01 14:43:22 +02:00
Abhishek Kumar
2c1aad4db8
Merge remote-tracking branch 'apache/4.20' 2025-09-27 09:00:45 +05:30
dahn
c24d2b88f6
LDAP: honour nested groups for MSAD (#11696) 2025-09-24 11:30:04 +02:00
Suresh Kumar Anaparti
1033be4b31
Updating pom.xml version numbers for release 4.22.0.0-SNAPSHOT
Signed-off-by: Suresh Kumar Anaparti <sureshkumar.anaparti@gmail.com>
2025-08-28 12:00:42 +05:30
Suresh Kumar Anaparti
f9513b47bf
Updating pom.xml version numbers for release 4.21.0.0
Signed-off-by: Suresh Kumar Anaparti <sureshkumar.anaparti@gmail.com>
2025-08-22 11:42:37 +05:30
Daan Hoogland
0b3959221b Merge branch '4.20' 2025-07-29 16:50:55 +02:00
Suresh Kumar Anaparti
ed6ee6b704
Mark LDAP user query timeout as incorrect login instead of disabling user immediately (#11220)
* Mark LDAP user query timeout as incorrect login instead of disabling user immediately

* code improvements
2025-07-25 19:31:43 +05:30
Daan Hoogland
3e3a0c0678 Merge branch '4.20' 2025-07-03 15:29:05 +02:00
Daan Hoogland
1a251c8b78 merge forward fix 2025-07-03 12:55:21 +02:00
Daan Hoogland
7cad65d310 Merge release branch 4.19 to 4.20
* 4.19:
  Add check for ldap truststore password (#11055)
2025-07-03 12:07:05 +02:00
Pearl Dsilva
cbd2b5a022
Add check for ldap truststore password (#11055) 2025-06-19 10:03:58 +02:00
Pearl Dsilva
379ee07d88 Updating pom.xml version numbers for release 4.19.4.0-SNAPSHOT
Signed-off-by: Pearl Dsilva <pearl1594@gmail.com>
2025-06-06 18:00:09 +05:30
Pearl Dsilva
b5e2c181f9 Updating pom.xml version numbers for release 4.20.2.0-SNAPSHOT
Signed-off-by: Pearl Dsilva <pearl1594@gmail.com>
2025-06-06 15:38:12 +05:30
Pearl Dsilva
c61a5eb430 Updating pom.xml version numbers for release 4.20.1.0
Signed-off-by: Pearl Dsilva <pearl1594@gmail.com>
2025-05-30 12:43:00 +05:30
Daan Hoogland
0c7d47138d Updating pom.xml version numbers for release 4.19.3.0
Signed-off-by: Daan Hoogland <daan@onecht.net>
2025-05-30 09:08:58 +02:00
Daan Hoogland
3c75d9363b Merge branch '4.20' 2025-04-17 15:59:41 +02:00
Daan Hoogland
d7765343ef Merge branch '4.19' into 4.20 2025-04-17 15:40:10 +02:00
Eric Kalendra
55c811547a
Update Mockito to 5.16.1 (#10686)
Dependency name change mockito-inline to mockito-core. Inline is now the default and the last version of mockito-inline released is 5.2.0.

assertj-core in user-authenticators/saml2 pulls in an incompatible version of byte-buddy and required an exclusion. Updating the version of assertj is left for a future PR.
The upgrade requires Java 11+, dropping support for Java 8. CloudStack documentation already says to use Java 11 and does not indicate that java 8 is supported.

Test classes using @RunWith(MockitoJUnitRunner.class) now get run in strict mode. Changes were made to tests where the stubbing intention was clear. In ManagementServerMaintenanceManagerImplTest there are 5 tests where the intention of the test is unclear. Each of the statements now use Mockito.lenient() to avoid the exception. Other cases in the tests follow a similar pattern.
Minor clean up.

Both @Spy and Mockito.spy( should not be used. Favored the annotation.
Both @RunWith(MockitoJUnitRunner.class) and MockitoAnnotations.openMocks(this); should not be used. Favored the annotation.
Unnecessary extends TestCase removed.
@InjectMocks and new in statement unnecessary. Removed new when issue presented.
Some of the Cmd classes like UpdateNetworkCmd have a type tree that includes fields of type Object. This appears to cause issues with injection, requiring that @Mock fields be available. This is where the following fields were added in multiple places:
Object job;
ResponseGenerator _responseGenerator;
Wrong number of parameters for Mockito.when in LibvirtRevertSnapshotCommandWrapperTest.java
2025-04-16 18:10:28 +05:30
Rene Glover
f13cf597a2
4.19 fix saml account selector (#10311) 2025-04-14 12:59:43 +02:00
Daan Hoogland
4a3686297d Updating pom.xml version numbers for release 4.19.3.0-SNAPSHOT
Signed-off-by: Daan Hoogland <daan@onecht.net>
2025-02-25 10:43:11 +01:00