Skip to content

Conversation

@sampan-s-nayak
Copy link
Contributor

Description

supports token based authentication in dashboard head sdk, all clients which build on top of the submission_client will now support token auth out of the box. so this covers all cli commands like job submit, state api, serve related cli commands etc.

sampan and others added 30 commits October 16, 2025 08:35
- Created RayAuthTokenLoader singleton class with thread-safe token caching
- Loads tokens from RAY_AUTH_TOKEN env, RAY_AUTH_TOKEN_PATH, or ~/.ray/auth_token
- Support for token generation with UUID (cross-platform)
- Modified GrpcServer to store and pass auth token to ServerCallImpl
- Updated RPC_SERVICE_HANDLER macros to pass auth token
- GCS server now loads token using RayAuthTokenLoader
- Removed auth_token from RayConfig (now loaded via loader)
- Token precedence: env var -> path env var -> default file path

Signed-off-by: sampan <[email protected]>
- Created Python auth_token_loader module with thread-safe token caching
- Loads tokens from same precedence as C++: RAY_AUTH_TOKEN, RAY_AUTH_TOKEN_PATH, ~/.ray/auth_token
- Added enable_token_auth parameter to ray.init() with auto-generation support
- Added --enable-token-auth flag to ray start CLI (fails if no token found)
- Only pass enable_token_auth flag via system_config, not the token
- Each side (C++/Python) loads tokens independently using their own loaders
- ray.init() auto-generates token if not found, ray start fails with helpful error

Signed-off-by: sampan <[email protected]>
- Test token loading from RAY_AUTH_TOKEN environment variable
- Test token loading from RAY_AUTH_TOKEN_PATH file
- Test token loading from default ~/.ray/auth_token path
- Test precedence order (env var > path env var > default file)
- Test token generation with GetToken(true)
- Test token caching behavior
- Test thread safety with concurrent GetToken calls
- Test whitespace trimming from token files
- Test behavior when no token is found

Signed-off-by: sampan <[email protected]>
- Test token loading from RAY_AUTH_TOKEN environment variable
- Test token loading from RAY_AUTH_TOKEN_PATH file
- Test token loading from default ~/.ray/auth_token path
- Test precedence order (env var > path env var > default file)
- Test token generation with generate_if_not_found=True
- Test token caching behavior across multiple calls
- Test has_auth_token() function
- Test thread safety with concurrent loads and generation
- Test whitespace handling and empty values
- Test file permissions on Unix systems (0600)
- Test error handling for permission errors
- Test integration with fixtures and cleanup

Signed-off-by: sampan <[email protected]>
Signed-off-by: sampan <[email protected]>
Signed-off-by: sampan <[email protected]>
Signed-off-by: sampan <[email protected]>
Signed-off-by: sampan <[email protected]>
Signed-off-by: sampan <[email protected]>
Signed-off-by: sampan <[email protected]>
Signed-off-by: sampan <[email protected]>
Signed-off-by: sampan <[email protected]>
Signed-off-by: sampan <[email protected]>
Signed-off-by: sampan <[email protected]>
Signed-off-by: sampan <[email protected]>
Signed-off-by: sampan <[email protected]>
Signed-off-by: sampan <[email protected]>
Signed-off-by: sampan <[email protected]>
Signed-off-by: sampan <[email protected]>
Signed-off-by: sampan <[email protected]>
Signed-off-by: sampan <[email protected]>
@sampan-s-nayak sampan-s-nayak added the go add ONLY when ready to merge, run all tests label Oct 30, 2025
@sampan-s-nayak sampan-s-nayak marked this pull request as ready for review October 30, 2025 09:05
@ray-gardener ray-gardener bot added the core Issues that should be addressed in Ray Core label Oct 30, 2025
Comment on lines 228 to 231
self._headers = cluster_info.headers or {}

# Add authentication token if token auth is enabled
self._set_auth_header_if_enabled()
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In general I prefer to follow a more functional style instead of implicitly modifying members deeper in the call stack. It makes it much easier to read the code and is less error prone. So it'd be something like:

Suggested change
self._headers = cluster_info.headers or {}
# Add authentication token if token auth is enabled
self._set_auth_header_if_enabled()
self._headers = cluster_info.headers or {}
self._headers.update(**self._get_auth_headers())

"""Add authentication token to headers if token auth is enabled."""
if is_token_auth_enabled():
token_loader = AuthenticationTokenLoader.instance()
token_added = token_loader.set_token_for_http_header(self._headers)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same thing here -- better to have the AuthenticationTokenLoader return the headers instead of modify an argument passed by value

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wanted to avoid having to expose the token directly but this does look ugly (and we are exposing raw token) so let me refactor this

cursor[bot]

This comment was marked as outdated.

Base automatically changed from token_auth_5 to master October 31, 2025 12:48
@edoakes edoakes enabled auto-merge (squash) October 31, 2025 12:55
cursor[bot]

This comment was marked as outdated.

Signed-off-by: Edward Oakes <[email protected]>
@github-actions github-actions bot disabled auto-merge October 31, 2025 13:28
@edoakes edoakes merged commit fedb6a7 into master Oct 31, 2025
6 checks passed
@edoakes edoakes deleted the token_auth_6 branch October 31, 2025 18:07
YoussefEssDS pushed a commit to YoussefEssDS/ray that referenced this pull request Nov 8, 2025
…ct#58281)

Supports token based authentication in dashboard head sdk, all clients
which build on top of the submission_client will now support token auth
out of the box. so this covers all cli commands like job submit, state
api, serve related cli commands etc.

---------

Signed-off-by: sampan <[email protected]>
Signed-off-by: Sampan S Nayak <[email protected]>
Signed-off-by: Edward Oakes <[email protected]>
Co-authored-by: sampan <[email protected]>
Co-authored-by: Edward Oakes <[email protected]>
landscapepainter pushed a commit to landscapepainter/ray that referenced this pull request Nov 17, 2025
…ct#58281)

Supports token based authentication in dashboard head sdk, all clients
which build on top of the submission_client will now support token auth
out of the box. so this covers all cli commands like job submit, state
api, serve related cli commands etc.

---------

Signed-off-by: sampan <[email protected]>
Signed-off-by: Sampan S Nayak <[email protected]>
Signed-off-by: Edward Oakes <[email protected]>
Co-authored-by: sampan <[email protected]>
Co-authored-by: Edward Oakes <[email protected]>
Aydin-ab pushed a commit to Aydin-ab/ray-aydin that referenced this pull request Nov 19, 2025
…ct#58281)

Supports token based authentication in dashboard head sdk, all clients
which build on top of the submission_client will now support token auth
out of the box. so this covers all cli commands like job submit, state
api, serve related cli commands etc.

---------

Signed-off-by: sampan <[email protected]>
Signed-off-by: Sampan S Nayak <[email protected]>
Signed-off-by: Edward Oakes <[email protected]>
Co-authored-by: sampan <[email protected]>
Co-authored-by: Edward Oakes <[email protected]>
Signed-off-by: Aydin Abiar <[email protected]>
SheldonTsen pushed a commit to SheldonTsen/ray that referenced this pull request Dec 1, 2025
…ct#58281)

Supports token based authentication in dashboard head sdk, all clients
which build on top of the submission_client will now support token auth
out of the box. so this covers all cli commands like job submit, state
api, serve related cli commands etc.

---------

Signed-off-by: sampan <[email protected]>
Signed-off-by: Sampan S Nayak <[email protected]>
Signed-off-by: Edward Oakes <[email protected]>
Co-authored-by: sampan <[email protected]>
Co-authored-by: Edward Oakes <[email protected]>
Future-Outlier pushed a commit to Future-Outlier/ray that referenced this pull request Dec 7, 2025
…ct#58281)

Supports token based authentication in dashboard head sdk, all clients
which build on top of the submission_client will now support token auth
out of the box. so this covers all cli commands like job submit, state
api, serve related cli commands etc.

---------

Signed-off-by: sampan <[email protected]>
Signed-off-by: Sampan S Nayak <[email protected]>
Signed-off-by: Edward Oakes <[email protected]>
Co-authored-by: sampan <[email protected]>
Co-authored-by: Edward Oakes <[email protected]>
Signed-off-by: Future-Outlier <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

core Issues that should be addressed in Ray Core go add ONLY when ready to merge, run all tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants