oauth2-proxy/docs/versioned_docs/version-7.15.x/community/contribution.md

4.5 KiB

id title
contribution Contribution Guide

We track bugs and issues using Github.

If you find a bug, please open an Issue. When opening an Issue or Pull Request please follow the preconfigured template and take special note of the checkboxes.

If you want to fix a bug, add a new feature or extend existing functionality, please create a fork, create a feature branch and open a PR back to this repo. Please mention open bug issue number(s) within your PR if applicable.

AI use

OAuth2 Proxy is built by humans for humans. Authentication and authorization depend on trust between people and systems. That trust also matters in how we work together.

You may use AI tools when contributing, but YOU must not replace human communication or judgment using those tools. You must understand, test, and review every AI-assisted change yourself. Write a clear, concise pull request description and respond to review comments yourself.

Listing AI tooling as a co-author, co-signing commits using an AI tool, or using the assisted-by, co-developed or similar commit trailer is not allowed.

The project maintainers will review contributions regardless of their origin. But we may close issues or pull requests without comment when they appear to be unreviewed automated output, low-quality slop, or contain essay-length descriptions or comments that waste reviewer time.

If a contribution does not show the care needed for a high-quality change, maintainers will not spend time reviewing it.

Go version

We suggest using Visual Studio Code with the official Go for Visual Studio Code extension.

See the go.mod file in the root of this repository for the version of Go used by this project. You can follow the installation guide for Go, and you can find this specific Go version on the Go downloads page.

Preparing your fork

Clone your fork, create a feature branch and update the depedencies to get started.

git clone git@github.com:<YOUR_FORK>/oauth2-proxy
cd oauth2-proxy
git branch feature/<BRANCH_NAME>
git push --set-upstream origin feature/<BRANCH_NAME>
go mod download

Testing / Debugging

For starting oauth2-proxy locally open the debugging tab and create the launch.json and select Go: Launch Package.

Debugging Tab

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Launch OAuth2 Proxy with Dex",
            "type": "go",
            "request": "launch",
            "mode": "auto",
            "program": "${workspaceFolder}",
            "args": [
                "--config",
                // The following configuration contains settings for a locally deployed
                // upstream and dex as an idetity provider
                "contrib/local-environment/oauth2-proxy.cfg"
            ]
        },
        {
            "name": "Launch OAuth2 Proxy with Keycloak",
            "type": "go",
            "request": "launch",
            "mode": "auto",
            "program": "${workspaceFolder}",
            "args": [
                "--config",
                // The following configuration contains settings for a locally deployed
                // upstream and keycloak as an idetity provider
                "contrib/local-environment/oauth2-proxy-keycloak.cfg"
            ]
        }
    ]
}

Before you can start your local version of oauth2-proxy, you will have to use the provided docker compose files to start a local upstream service and identity provider. We suggest using httpbin as your upstream for testing as it allows for request and response introspection of all things HTTP.

Inside the contrib/local-environment directory you can use the Makefile for starting different example setups:

  • Dex as your IdP: make up or make down
  • Dex as your IdP using the alpha-config: make alpha-config-up
  • Keycloak as your IdP: make keycloak-up
  • Dex as your IdP & nginx reverse proxy: make nginx-up
  • and many more...

Check out the Makefile to see what is available.

The username and password for all setups is usually admin@example.com and password.

The docker compose setups expose the services with a dynamic reverse DNS resolver: localtest.me