Commit Graph

77 Commits (97f3c3cb4aaa47aa331bb6168bba3fbdc84ffaeb)

Author SHA1 Message Date
Igor Vinokur 2e27c47f2f
Add provider name annotation to PAT secret (#670)
Add che.eclipse.org/scm-provider-name annotation to Personal Access Token secret.
2024-03-25 14:57:27 +02:00
Igor Vinokur 4f8a84cb1d
Fetch oauth tokens from kubernetes secrets (#652)
Move AuthorisationRequestManager interface towsmaster/che-core-api-factory module in order to avoid circular dependency.
Rework the get oauth token method to return an oauth token from kubernetes secrets if token is not found in the system memory of the che-server pod. If provider name value is not configured in the kubernetes secret oauth token, get the token by mapping it by provider url from the secret and oauth provider name from the aouth config secret.
2024-02-08 10:22:51 +02:00
Igor Vinokur f547c681a8
Fix license headers (#638)
Fix maven build by updating corresponding license headers
2024-01-10 11:36:56 +02:00
Igor Vinokur 06e14c854d
Pass status code to Exception on Unauthorised to GitHub Error (#618)
Pass status code to Exception on Unauthorised to GitHub Error in order to be able to recognise GitHub Server url if oAuth is not configured and no PAT is present.
2024-01-10 10:46:02 +02:00
Igor Vinokur 974c1b1890
Add support for PATs in GitHub Enterprise server (#603)
Add necessary checks to the GithubURLParser and AbstractGithubURLParser classes in order to support PAT for GitHub Enterprise server without configuring oAuth.
2023-11-21 11:11:06 +02:00
Anatolii Bazko 72f191bcda
feat: Allow to configure 2 github providers simultaneously (#598)
* feat: Support enabling Github enterprise and SaaS simultaneously on Dev Spaces

Signed-off-by: Anatolii Bazko <abazko@redhat.com>
2023-11-07 12:57:48 +01:00
Igor Vinokur cb0c9f9d39
Fix update token on workspace start (#597)
Change the getHostName() function to getProviderUrl() in order to fix an error while updating an oauth token on workspace start.
Throw ScmUnauthorizedException if an oAuth token is not valid, for the dashboard to open the authorisation page and update the token.
2023-11-04 19:12:12 +02:00
Igor Vinokur 148415c691
Respect authorisation request opt-out on workspace start (#576)
If user rejects an scm provider authorisation request while creating or starting existed workspace store the name of the scm provider in the workspace-preferences config-map. The workspace create/start step must proceed without token fetch step. If user creates another workspace or starts existed workspace from an scm provider which name is stored in the config-map, do not ask the authorisation as it was already rejected once.
2023-10-12 15:59:42 +03:00
Igor Vinokur b1da9ef121
Add an SSH Factory parameter resolver for unsupported SCM providers (#567)
Return the SSH factory resolver in order to handle SSH urls from unsupported SCM providers.
Add a priority value for all factory resolvers to be able to control resolver's priority.

---------

Co-authored-by: Aleksandr Shmaraiev <oshmarai@redhat.com>
2023-09-22 17:09:48 +03:00
Igor Vinokur 261be8f99d
Add a null check before reading GitHub response (#563)
Add a null check to prevent NullPointer exception while reading body from the GitHub API response. response.body() should not return null according to the java documentation, but the NullPointer exception was found in the customer debug logs
2023-09-21 10:48:32 +03:00
Igor Vinokur da5174bf17
Duplicate creating a git-credentials secret on token fetch (#551)
Duplicate the git-credentials secret creation step on create personal access token secret. Currently this step is performed on workspace provision step but in this case the PAT secret might be initialised when the provision is finished. In order to synchronise the personal access token secret and git credentials secret creation step duplicate the git credentials secret creation step after the PAT secret creation step.
Refactor the get(scmServerUrl) function in the KubernetesPersonalAccessTokenManager class
2023-09-05 12:49:09 +03:00
Igor Vinokur 7d0cfb306c
Support SSH urls (#539)
Extend each SCM provider implementation to support SSH urls.
2023-08-27 16:17:13 +03:00
Igor Vinokur 0ea20e687b
Use `login` instead of `name` in the GitHub scopes/username request (#537)
Change user.getName() to user.getLogin() in the GitHub getTokenScopes() API request, in order to fix a bug where NullPointer exception is appeared when a GitHub user request returns a user with null in the name field.
2023-08-01 21:36:14 +03:00
Igor Vinokur df3fc9965a
Omit scm-username annotation from the PAT secret (#533)
Ignore the che.eclipse.org/scm-username annotation when fetching token from a PAT secret. Instead fetch the username from the isValid(<token>) request.
2023-07-25 18:52:54 +03:00
Igor Vinokur c5963e0de7
Pass string to ObjectMapper instead of InputStream (#531)
Pass string to ObjectMapper instead of InputStream in order to avoid No content to map due to end-of-input error caused by jdk.internal.net.http.ResponseSubscribers$HttpResponseInputStream.
An error was discovered in our customers environment
2023-07-12 10:33:56 +03:00
Igor Vinokur 287b903010
Provision git credentials secrets on workspace start (#527)
On workspace start iterate user PAT secrets. If a PAT secret is not included to the devworkspace-merged-git-credentials secret, create a git credentials secret based on the PAT secret.
Remove the redundant logic of creation an empty workspace-credentials-secret secret.
2023-06-26 17:18:32 +03:00
Igor Vinokur ab83bee400
Omit extracting subfolder from a workspace URL (#523)
sparce-checkoutis no longer available from devfile 2.1, so omit the subfolder mechanism in order to support branch names with a / sign.
2023-06-15 13:41:43 +03:00
Igor Vinokur 32c67ed032
Return the default resolver if the factory URL refers directly to a devfile (#519)
Check if the factory URL is a raw devfile URL. If so, use the devfile URL resolver, which resolves factories from a direct URL to a devfile content.
2023-06-06 10:38:03 +03:00
Igor Vinokur 8d0d9ac5d8
Withdraw scm-userid value in PAT secrets and use scm-username instead (#496)
Withdraw the scm-userid annotation from the PAT secret structure.
Rework the PAT validation to check scm-username instead scm-userid.
2023-04-19 09:37:29 +03:00
Anatolii Bazko b24e3c7d95
feat: support retrieving Git user data when PAT is configured (#489)
* feat: support retrieving Git user data when PAT is configured

Signed-off-by: Anatolii Bazko <abazko@redhat.com>
2023-04-04 10:14:40 +03:00
Anatolii Bazko 19d13edc7f feat: Azure DevOps Service OAuth2
Signed-off-by: Anatolii Bazko <abazko@redhat.com>
2023-02-23 15:20:20 +02:00
Igor Vinokur b9ededf339
Support Basic authentication for devfile factory URL (#451)
Add a parsing rule to detect credentials in factory URLs if it is in a format https://<username>:<pasword>@hostname.
Extract the credentials from factory URLs and pass them to the devfile content request.
2023-02-23 15:05:55 +02:00
Igor Vinokur 63517be522
Add "read:user" to the list of github token scopes (#422)
In order to be able to use the generated github token from the workspace pod in the github CLI tool, add the necessary token scope to the list of default scopes.
2023-01-21 13:01:27 +02:00
Nick Boldt a97e6eec90
chore: update license headers to 2023 because we still use that annoying license header checker for some reason (#412)
To update next year:

  find . -name "*" -exec sed -i -r -e "s@-2023 Red Hat@-2024 Red Hat@g" {} \;

Change-Id: I2167da69ac584e743e61f4bbe699f06296911857
Signed-off-by: Nick Boldt <nboldt@redhat.com>

Signed-off-by: Nick Boldt <nboldt@redhat.com>
2023-01-04 10:33:06 -04:00
Igor Vinokur ab966cf9fe
Retry factory authentication when user rejects git service oauth (#405)
Currently when user rejects the oauth page for GitHub factory, Che tries to continue the factory flow without authentication (possible only for public repo). Apply the logic for the other git authentication providers.
2022-12-21 10:43:36 +02:00
Vitaliy Gulyy cf508f009c
fix: Use SHA of the latest commit instead of the branch name when fetching raw file content (#376)
Signed-off-by: Vitaliy Gulyy <vgulyy@redhat.com>
2022-11-14 09:20:44 +02:00
Igor Vinokur d11aeaf26b
chore: Add more Git unit tests (#375) 2022-11-08 09:38:27 +02:00
Igor Vinokur 40598a0e8b
fix: Allign the GitHub raw file location Url with subdomain isolation option (#361)
Inject the che.integration.github.disable_subdomain_isolation env variable property to handle the subdomain isolation GitHub option while returning the GitHub raw file location.
2022-09-28 09:59:19 +03:00
Igor Vinokur a8623992b6
chore: Allign the /token/refresh/ factory API method (#359)
Fix the /token/refresh/ factory API method by picking out the hostname from the url parameter and passing it to personalAccessTokenManager.getAndStore(hostname) instead of the entire factory url
2022-09-26 09:05:04 +03:00
Igor Vinokur 64fd318bb5
chore: Refactore the factory flow to pick out the authentication logic to a separate API method (#356)
Refactor the factory flow and isolate the place where the OAuth token is fetched and stored to the git secret.
Create a new API method with the isolated flow.
The API method is going to be used for the token verification step when a factory is restarted from dashboard.
2022-09-20 15:04:24 +03:00
Igor Vinokur c2a2d09194
chore: Support configuring the GitHub OAuth endpoint (#350)
Currently the GitHub OAuth provider is hardcoded to https://github.com endpoint. In order to support Github Enterprise Server, the endpoint of the GitHub OAuth provider is configurable by the oauth secret.
2022-09-08 14:51:12 +03:00
Igor Vinokur 97b7431bda
chore: Add GitHub get pull request API method (#341)
Add GitHub getPullRequest API method
Use the API method insted of reading html content of a pull-request page when creating a factory from GitHub url.
2022-08-15 15:17:38 +03:00
Igor Vinokur bd9cd9db44
chore: Apply authentication status in the callback url (#338)
When processing an authentication callback request set additional error query patameter to the callback url.
How it works:
1. User creates a factory form dashboard.
2. Dasboard requests che-server factory API with no error param in the request url. See https://github.com/eclipse-che/che-dashboard/pull/599
3. Che-server create factory API parses the url for the error param. No error query param means `skipAuthentication=false`. Authentication in progress.
74eb0a333d/wsmaster/che-core-api-factory-github/src/main/java/org/eclipse/che/api/factory/server/github/GithubFactoryParametersResolver.java (L104-L106)
4. GitHub shows the authentication page. If User rejects the authentication, authentication status is set to `access_denied`.
5. The error status is added to the redirect url as a query param.
74eb0a333d/wsmaster/che-core-api-auth/src/main/java/org/eclipse/che/security/oauth/EmbeddedOAuthAPI.java (L85-L93)
6. Dasboard is loaded from the redirect url. Dashboard requests the che-server to create factory by an api request with the error status query param from the redirect url.
e2849d9d21/packages/dashboard-frontend/src/containers/Loader/Factory/Steps/FetchDevfile/index.tsx (L208-L213)
7. Che-server create factory API parses the url for the status param. If `skipAuthentication=true` the authentication flow is skiped and factory creation progress goes further. If `skipAuthentication=false` factory is created in a regular way.
74eb0a333d/wsmaster/che-core-api-factory/src/main/java/org/eclipse/che/api/factory/server/scm/AuthorizingFileContentProvider.java (L70-L81)
2022-08-11 17:14:30 +03:00
Igor Vinokur d6778f636a
chore: Add new scopes to the generate GitHub token request (#335)
In order to meet the token requierments of the vscode-github-pull-request extension, add new token scopes when requesting a GitHub token.
2022-07-27 13:11:42 +03:00
Igor Vinokur e59d23b3b2
chore: Apply Bitbucket SAAS Oauth flow (#329)
Since we support only Bitbucket Server Oauth flow, added a support for the SAAS version
2022-07-27 12:24:55 +03:00
Igor Vinokur 24440eab66
fix: Improve GitHub token validation check (#327)
Do not throw an exception when validating an expired oauth token, return false instead.
When a factory starts and oauth token is found, che-server checks the token:
current behaiviour: if the oauth token is not valid, the validation check throws an exception and the factory creation is interrupted.
PR behaviour: if the oauth token is not valid, the validation check returns false instead of an error, so token regeneration mechanism starts and the factory is created successfully.
2022-07-13 15:17:30 +03:00
Igor Vinokur 8aaf918353
fix: Avoid GitHub api request without token (#325)
GitHub allows to use only 60 unauthorized reqests per host. In order to avid API rate limit exceeded GitHub eroor,
substitute the unauthorized GitHub API request to an HTTP repository request.
2022-07-11 15:26:06 +03:00
Igor Vinokur ab1758e0b1 add tests 2022-05-24 12:19:40 +03:00
Igor Vinokur 1af2cdc32f chore: Apply git user data configmap to mount to /etc/gitconfig 2022-05-19 21:00:22 +03:00
Florent Benoit 7878b135f2 feat: Always try to use oAuth token when fetching git repositories
Before, it was done only in case of private repositories
Now it will try on all public and private repositories
If there is no oAuth configured for the current SCM URL, try to fetch
with unauthenticated access
2022-05-10 10:22:40 +02:00
Florent Benoit 67b5a871f1 fix: update regexp to extract the PR information 2022-05-02 11:30:43 +02:00
Max Shaposhnik 8f6530706b
fix: Set HttpClient protocol to HTTP 1.1 due to sporadic errors 2022-02-11 12:27:15 +02:00
Max Shaposhnik d6cce806ca
Fix behavior for unexisting files for public repositories (#243)
Signed-off-by: Max Shaposhnik <mshaposh@redhat.com>
2022-01-17 17:09:48 +02:00
Pavol Baran 9b06dfa8fa refactor: implementing recommended changes for github oauth
Signed-off-by: Pavol Baran <pbaran@redhat.com>
2021-11-25 16:16:26 +01:00
Pavol Baran 6b17bd5bf3 feat: github oauth with embededOAuthAPI
Signed-off-by: Pavol Baran <pbaran@redhat.com>
2021-11-25 00:55:24 +01:00
Florent Benoit fc5a7c3de6 feat: Allow to override the path to the devfile from a given repository 2021-10-18 11:48:20 +02:00
Max Shaposhnik adadf59715
Revert exception type change due to its inconvenience for scm file resolving service (#126)
Signed-off-by: Max Shaposhnik <mshaposh@redhat.com>
2021-09-20 20:28:09 +03:00
Max Shaposhnik a79cc94397
fix: improve bitbucket OAuth flow to use more specific error messages 2021-09-20 11:10:28 +03:00
Sergii Kabashniuk 359ebb32bc
build: Transition from Java EE to Jakarta EE (#80)
* Upgrade swagger-ui-3.51.2

* Upgrade tomcat 10.0.10

* changed only imports

* changed imports in service loader

* changed swagger jaxrs deployment

* Changed swagger annotations + basic imports

* Changed imports and minimal key length for jsonwebtoken

* Restassured API changes + imports

* Removed trailing slash from CHE_HOME

* Migrate to jakarta schema in web.xml

* Disable tracing

* New artifacts and maven build upgrade

* Removed jackson-jaxrs-json-provider from wsmaster war

* Fixed KeycloakServletModuleTest and forked TracingFilter

* Removed unused dependecies
2021-09-13 08:20:09 +03:00
Sergii Kabashniuk 46ce6a74e5
test: Upgrade of the testing dependencies (#40) 2021-07-19 10:56:11 +03:00