-
Notifications
You must be signed in to change notification settings - Fork 12
feat: Implement OAuth2 for apps to connect to temporal #585
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
📜 Docstring Coverage ReportRESULT: PASSED (minimum: 30.0%, actual: 72.6%) Detailed Coverage Report |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
The PR introduces OAuth2 authentication for Temporal along with automatic secret store discovery and caching to enhance security and ease of configuration. Key changes include:
- Implementation of the AuthManager for OAuth2 token management with credential discovery and caching.
- Enhancements to SecretStoreInput for automatic Dapr secret store component discovery with a 5-minute cache TTL.
- Integration of authentication within the Temporal client, injecting gRPC metadata when auth is enabled.
Reviewed Changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| tests/unit/clients/test_auth_manager.py | Adds comprehensive unit tests covering token retrieval, caching, fallback, and errors. |
| application_sdk/inputs/secretstore.py | Implements secret store component discovery with caching but uses logger without import. |
| application_sdk/constants.py | Introduces new authentication-related environment variables. |
| application_sdk/clients/temporal.py | Integrates OAuth2 token handling and injects authentication metadata into connection. |
| application_sdk/clients/auth.py | Implements OAuth2 token management with automatic token refresh and credential caching. |
Comments suppressed due to low confidence (1)
application_sdk/inputs/secretstore.py:143
- The 'logger' is used in the SecretStoreInput class without being defined or imported, which will cause a runtime error. Consider importing and initializing logger using a standard logging framework or get_logger() from your observability module.
logger.info("Discovering available secret store components via Dapr metadata...")
📦 Trivy Vulnerability Scan Results
Report Summary
Scan Result Details✅ No vulnerabilities found during the scan for |
📦 Trivy Secret Scan Results
Report Summary
Scan Result Details✅ No secrets found during the scan for |
|
🛠 Docs available at: https://k.atlan.dev/application-sdk/feat/apps-auth |
517ff88 to
ebeb6d3
Compare
944e499 to
f7482d9
Compare
☂️ Python Coverage
Overall Coverage
New FilesNo new covered files... Modified FilesNo covered modified files...
|
|
🛠 Full Test Coverage Report: https://k.atlan.dev/coverage/application-sdk/pr/585 |
b3635d1 to
9c583bd
Compare
|
moved to #634 |
Add robust authentication infrastructure with automatic credential discovery
and token management for secure Temporal server communication.
New Components
AuthManager
SecretStoreInput enhancements
TemporalWorkflowClient integration
Key Features
Configuration
Environment variables:
WORKFLOW_AUTH_ENABLED: Enable/disable authenticationWORKFLOW_AUTH_URL: OAuth2 token endpointWORKFLOW_AUTH_CLIENT_ID/SECRET: Fallback credentialsSecret store format:
atlan-deployment-secrets{app_name}_client_id,{app_name}_client_secretBreaking Changes
TemporalWorkflowClient.load()now handles authentication automaticallyaiohttpfor OAuth2 requestssecretstores.*type patternDocumentation
Copyleft License Compliance