Repository navigation
feat(auth): support federated credentials (OIDC client assertion) - #1953
Open
radu-mocanu wants to merge 1 commit into
Open
radu-mocanu wants to merge 1 commit into
radu-mocanu wants to merge 1 commit into
Conversation
radu-mocanu
force-pushed
the
feat/federated-credentials
branch
from
October 20, 2026 13:51
a93c92c to
15c0584
Compare
radu-mocanu
marked this pull request as ready for review
October 20, 2026 14:11
Contributor
There was a problem hiding this comment.
🟡 Changes recommended
Incomplete CLI credentials select interactive authentication, and sample scopes and workflow triggers conflict with the documented setup.
3 open issues
What changed in this PR
Adds OIDC federated authentication to the UiPath SDK and CLI, enabling CI pipelines to authenticate without stored client secrets.
Changes:
- Supports JWT client assertions across CLI, SDK, and Identity services.
- Adds authentication tests and a GitHub Actions sample.
- Updates package versions and dependency requirements.
| File | Description |
|---|---|
| packages/uipath/uv.lock | Updates locked package versions. |
| packages/uipath/tests/cli/test_auth.py | Tests assertion-based CLI login. |
| packages/uipath/src/uipath/_cli/cli_auth.py | Adds assertion option and environment variable. |
| packages/uipath/src/uipath/_cli/_auth/_auth_service.py | Routes assertions through client credentials authentication. |
| packages/uipath/samples/federated-credentials-ci/tests/test_orchestrator.py | Demonstrates authenticated Orchestrator access. |
| packages/uipath/samples/federated-credentials-ci/README.md | Documents federated authentication setup. |
| packages/uipath/samples/federated-credentials-ci/pyproject.toml | Defines sample dependencies. |
| packages/uipath/samples/federated-credentials-ci/github-workflow.yml | Demonstrates GitHub Actions OIDC login. |
| packages/uipath/pyproject.toml | Bumps SDK version and platform requirement. |
| packages/uipath-platform/uv.lock | Updates platform version. |
| packages/uipath-platform/tests/test_uipath_client_credentials.py | Tests SDK credential handling. |
| packages/uipath-platform/tests/services/test_identity_service.py | Tests assertion payloads and validation. |
| packages/uipath-platform/tests/services/test_external_application_service.py | Updates delegation expectations. |
| packages/uipath-platform/src/uipath/platform/identity/_identity_service.py | Builds JWT assertion token requests. |
| packages/uipath-platform/src/uipath/platform/external_applications/_external_application_service.py | Forwards assertions to Identity. |
| packages/uipath-platform/src/uipath/platform/_uipath.py | Accepts and validates SDK assertions. |
| packages/uipath-platform/pyproject.toml | Bumps platform version. |
Review effort: Balanced
| UiPath( | ||
| base_url=os.environ["UIPATH_URL"], | ||
| client_id=os.environ["UIPATH_CLIENT_ID"], | ||
| client_assertion=os.environ["UIPATH_CLIENT_ASSERTION"], |
|
|
||
| async def authenticate(self) -> None: | ||
| if self._client_id and self._client_secret: | ||
| if self._client_id and (self._client_secret or self._client_assertion): |
radu-mocanu
force-pushed
the
feat/federated-credentials
branch
9 times, most recently
from
October 20, 2026 16:05
877911b to
54876ef
Compare
🚨 Heads up:
|
radu-mocanu
force-pushed
the
feat/federated-credentials
branch
from
October 20, 2026 16:10
54876ef to
2f58979
Compare
|
robert-ursu
approved these changes
Oct 22, 2026
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.




Summary
uipath auth --client-id ... --client-assertion <oidc-token>logs in with an OIDC token from the CI provider instead of a client secret (also read fromUIPATH_CLIENT_ASSERTION)UiPath(client_id=..., client_assertion=...)does the same from code, e.g. in tests that call Orchestratoruip login --client-assertionmakesfederated-credentials-cisample with a GitHub Actions workflowWhy
Fixes #1944. CI pipelines had to store a long-lived client secret to use the SDK.