Skip to content
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

Add various cleanliness changes #114

Open
wants to merge 29 commits into
base: main
Choose a base branch
from

Conversation

punmechanic
Copy link
Member

@punmechanic punmechanic commented Nov 13, 2024

  • Replace custom hand-rolled HTTP calls with the oidc/oauth2 packages
  • Move oauth2 handling code to oauth2/ package.
  • Use newer Go functions like slices.Contains instead of our hand-rolled functions
  • Simplify folder structure by moving commands outside of main package, and move main package to root folder so go run . works.
  • Migrate to Lambda function extension for Vault secret handling, so we don't need to handle it in the application.
  • Remove usage of the custom Riot Vault SDK, using the Hashicorp one instead.
  • Upgrade to v2 of the AWS SDK.
  • Pass HTTP client through context and remove go-rootcerts as it's no longer needed in newer Go versions.
  • Put binaries in bin/ instead of a custom directory.
  • Disable CGO.
  • Hide OIDC flags that no one actually uses.
  • Remove partial Tencent Cloud support. We will add this back, but we don't want regular usage of the application to panic.
  • Refactor environment variable writing so we rely less on string interpolation.

Resolves #111; using the OAuth2 library provides an OAuth2-related error when exchanging an access and id token for a web sso token, whereas previously this was silently ignored and would lead to a cryptic error when retrieving a SAML assertion.

This should also fix a bug where non-HTTP 200 responses are not caught
and result in a cryptic error later in the exchange process
* Pass client through context. This would normally be frowned upon but
  we know we will only be using OAuth2's APIs to interact with Okta
  anyway.
* Implement oauth2.TokenSource on TokenSet, which removes the need to
  manually construct *oauth2.Token.
The config shouldn't "know" anything about the minutae of the token it
is receiving.
Takes the HandlePendingSession function much simpler
This was necessary due a bug in Go
(golang/go#14514) that was resolved in Go 1.8.
This will be reimplemented at some point in the future, but this has not
been working since 85f224a and attempting to use it results in a
run-time panic.
The UserInfo endpoint for Okta is standards-compliant, so we should use
a standards-compliant library to access it
Instead of using AWS authentication for Vault, users should be
instructed to use the Hashicorp Vault extension for AWS Lambda;
KeyConjurer's Lambda functions are not made aware of any authentication
details.

https://developer.hashicorp.com/vault/docs/platform/aws/lambda-extension
VAULT_SECRET_PATH conflicts with the Lambda extension.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Users with unauthorized sessions receive cryptic error when retrieving keys
1 participant