-
Notifications
You must be signed in to change notification settings - Fork 2
RFC: AWS STS Authentication for MCP Servers (THV-0027) #33
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
Propose centralized AWS credential management for ToolHive to enable OIDC-to-AWS authentication for the AWS MCP Server. Key features: - Exchange OIDC tokens for temporary AWS credentials via AssumeRoleWithWebIdentity - Priority-based role mapping from JWT claims to IAM roles - SigV4 request signing for AWS MCP Server requests - MCPExternalAuthConfig CRD extension for Kubernetes configuration This allows organizations to use their existing IdP (Okta, Azure AD, etc.) to authenticate users accessing AWS MCP Server without distributing AWS credentials to developer machines.
|
@JAORMX thanks for the review here and on Slack! I changed the proposal is use CEL for expresiveness, but also as the single and only engine, meaning that the simple claim-matching case would be just syntactical sugar unrolled to CEL in the background. |
ChrisJBurns
left a comment
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.
Apologies for late feedback on this, ever since the CODEOWNERS stuff, my Github Notifications are going crazy.
|
|
||
| - **Role Mapper**: Selects an IAM role based on JWT claims. When multiple claims match configured roles, the one with the lowest priority number wins. A default role is used if no claims match. | ||
|
|
||
| - **STS Exchanger**: Calls `AssumeRoleWithWebIdentity` to exchange the user's OIDC token for temporary AWS credentials. |
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.
Is this performed on every request? This adds latency if so and may hit AWS STS rate limits under load (depending on the scale). Not sure what our positions is on caching the creds for the time they are valid?
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.
I should have spelled that out in the RFC explicitly, but I /do/ have caching implemented in my local branch - stacklok/toolhive@a567e02#diff-19c2048f3153cafc974acb282dcfc414dc9f40395592b7b6d31aa2db8b44198eR28
(yes this is vibe-coded. No, I won't submit vibe-code, I am now redoing the branch with proper SWE included. Vibe coding was good enough for a demo)
Propose centralized AWS credential management for ToolHive to enable OIDC-to-AWS authentication for the AWS MCP Server. Key features:
This allows organizations to use their existing IdP (Okta, Azure AD, etc.) to authenticate users accessing AWS MCP Server without distributing AWS credentials to developer machines.