-
Notifications
You must be signed in to change notification settings - Fork 198
feat: support for oauth via PKCE in browser #1597
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
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.
Summary of Changes
Hello @drstrangelooker, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!
I've implemented support for OAuth 2.0 with Proof Key for Code Exchange (PKCE) for browser-based authentication. This enhancement removes the need for client_id
and client_secret
in client-side applications, improving security by preventing credential leakage. The changes introduce new functions to handle the PKCE flow, including generating code verifiers and challenges, managing local server redirects, and automatically opening the authorization URL in a browser.
Highlights
- PKCE OAuth Flow Implementation: I've added
NewPkceAuthSession
andNewPkceAuthSessionWithTransport
functions ingo/rtl/auth.go
to facilitate the PKCE-based OAuth authentication process. These functions handle the full PKCE flow, from generating the code verifier and challenge to exchanging the authorization code for a token. - PKCE Utility Functions: I've introduced helper functions like
generatePKCEPair
for creating code verifiers and challenges,startLocalServerAndWaitForCode
to manage the local HTTP server for OAuth redirects,generateSecureRandomString
for state, andopenBrowser
for automatic browser launching. These utilities are crucial for the seamless execution of the PKCE flow. - Enhanced API Settings for PKCE: I've extended the
ApiSettings
struct ingo/rtl/settings.go
withAuthUrl
,RedirectPort
, andRedirectPath
fields, allowing for flexible configuration of the PKCE flow. Default values forRedirectPort
(8080) andRedirectPath
("/callback") have also been set. - Environment Variable Support for PKCE Configuration: I've added new environment variables (
LOOKERSDK_AUTH_URL
,LOOKERSDK_REDIRECT_PORT
,LOOKERSDK_REDIRECT_PATH
) ingo/rtl/constants.go
and updatedNewSettingsFromEnv
ingo/rtl/settings.go
to enable configuration of PKCE settings via environment variables.
Using Gemini Code Assist
The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.
Invoking Gemini
You can request assistance from Gemini at any point in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command>
or @gemini-code-assist <command>
. Below is a summary of the supported commands.
Feature | Command | Description |
---|---|---|
Code Review | /gemini review |
Performs a code review for the current pull request in its current state. |
Pull Request Summary | /gemini summary |
Provides a summary of the current pull request in its current state. |
Comment | @gemini-code-assist | Responds in comments when explicitly tagged, both in issue comments and review comments. |
Help | /gemini help |
Displays a list of available commands. |
Customization
To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/
folder in the base of the repository. Detailed instructions can be found here.
Limitations & Feedback
Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments or fill out our survey to provide feedback.
You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.
Footnotes
-
Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution. ↩
335f3dd
to
773437d
Compare
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.
Code Review
This pull request adds support for OAuth 2.0 with PKCE, which is a valuable security enhancement for browser-based flows. The implementation correctly follows the PKCE standard and uses a local server to handle the redirect, which is a solid approach. My review focuses on improving error handling to prevent application termination, addressing a potential bug with an unhandled error, and increasing flexibility by making hardcoded values like scopes and timeouts configurable. These changes will make the new authentication flow more robust and user-friendly.
773437d
to
df5c720
Compare
@bryans99 are you a decent person to review this? |
Nevermind. I found a different way to do what I want. |
Support OAuth flow so that client_id and client_secret aren't required.