{"id":37097680,"url":"https://github.com/le-garff-yoann/oauth2-proxy-nexus3","last_synced_at":"2026-01-14T12:00:07.229Z","repository":{"id":64304234,"uuid":"253115735","full_name":"le-garff-yoann/oauth2-proxy-nexus3","owner":"le-garff-yoann","description":"Glue between oauth2-proxy, some Auth provider and Sonatype Nexus 3.","archived":false,"fork":false,"pushed_at":"2025-07-23T17:04:22.000Z","size":362,"stargazers_count":8,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-23T18:26:27.688Z","etag":null,"topics":["gitlab","nexus","nexus-repository","nexus-repository-manager","nexus3","oauth2","oauth2-proxy"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/le-garff-yoann.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-04-04T23:07:54.000Z","updated_at":"2025-07-23T17:04:26.000Z","dependencies_parsed_at":"2023-01-15T10:15:28.837Z","dependency_job_id":null,"html_url":"https://github.com/le-garff-yoann/oauth2-proxy-nexus3","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/le-garff-yoann/oauth2-proxy-nexus3","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/le-garff-yoann%2Foauth2-proxy-nexus3","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/le-garff-yoann%2Foauth2-proxy-nexus3/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/le-garff-yoann%2Foauth2-proxy-nexus3/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/le-garff-yoann%2Foauth2-proxy-nexus3/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/le-garff-yoann","download_url":"https://codeload.github.com/le-garff-yoann/oauth2-proxy-nexus3/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/le-garff-yoann%2Foauth2-proxy-nexus3/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28419272,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T10:47:48.104Z","status":"ssl_error","status_checked_at":"2026-01-14T10:46:19.031Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gitlab","nexus","nexus-repository","nexus-repository-manager","nexus3","oauth2","oauth2-proxy"],"created_at":"2026-01-14T12:00:06.452Z","updated_at":"2026-01-14T12:00:07.201Z","avatar_url":"https://github.com/le-garff-yoann.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# oauth2-proxy-nexus3\n\n![CI](https://github.com/le-garff-yoann/oauth2-proxy-nexus3/workflows/CI/badge.svg)\n\nThis service is designed to operate as a proxy between [oauth2-proxy](https://github.com/oauth2-proxy/oauth2-proxy),\nan Auth provider (AP), which is the one configured for _oauth2-proxy_, and Sonatype Nexus 3.\n\n## Typical setup\n\n```mermaid\nsequenceDiagram\n  participant User as User (Browser)\n  participant AP as AP (OIDC Provider such as GitLab)\n  participant Proxy as oauth2-proxy\n  participant NexusProxy as oauth2-proxy-nexus3\n  participant Nexus as Nexus 3\n\n  User-\u003e\u003eAP: 1. Sign in (redirect)\n  User-\u003e\u003eAP: 2. Login \u0026 authorize\n  Proxy-\u003e\u003eAP: 3. Request token\n  AP--\u003e\u003eProxy: Return access token\n  Proxy--\u003e\u003eUser: 4. Redirect back (OAuth callback)\n\n  loop On each request\n    User-\u003e\u003eProxy: HTTP Request with cookie/session\n    Proxy-\u003e\u003eNexusProxy: 5. Forward request + Authorization header\n    NexusProxy-\u003e\u003eNexus: Authenticate \u0026 map user\n    Nexus-\u003e\u003eNexusProxy: OK (user context)\n    NexusProxy-\u003e\u003eProxy: OK\n    Proxy-\u003e\u003eUser: Response\n  end\n\n```\n\n**A demonstrative setup of this is available [here](docker/)**.\n\n## Configuration\n\n| ENV                              | Mandatory? | Default value            | Description                                                                                        |\n| -------------------------------- | ---------- | ------------------------ | -------------------------------------------------------------------------------------------------- |\n| `O2PN3_LISTEN_ON`                | ☓          | 0.0.0.0:8080             | The [IP]:PORT on which the HTTP server will listen.                                                |\n| `O2PN3_SSL_INSECURE_SKIP_VERIFY` | ☓          | false                    | Skip SSL verifications if set to `true`.                                                           |\n| `O2PN3_AP_URL`                   | ✓          |                          | The AP URL on which OAuth operations will be performed.                                            |\n| `O2PN3_AP_ACCESS_TOKEN_HEADER`   | ☓          | X-Forwarded-Access-Token | The name of the HTTP header on which the AP OAuth _access_token_ will be provided to this service. |\n| `O2PN3_NEXUS3_URL`               | ✓          |                          | The Nexus 3 URL on which sync and reverse-proxying will be performed.                              |\n| `O2PN3_NEXUS3_ADMIN_USER`        | ✓          |                          | A Nexus 3 **admin** user.                                                                          |\n| `O2PN3_NEXUS3_ADMIN_PASSWORD`    | ✓          |                          | A Nexus 3 **admin** password.                                                                      |\n| `O2PN3_NEXUS3_RUT_HEADER`        | ☓          | X-Forwarded-User         | The name of the HTTP header used by the Rut Realm/capability (Nexus 3) for the authentication.     |\n\n### Prerequisites\n\n#### oauth2-proxy\n\nThe `-pass-access-token` flag must be set to `true`.\n\n#### Nexus 3\n\nThe Rut Realm/capability must be enabled and configured the use the same HTTP header as configured in via `$O2PN3_NEXUS3_RUT_HEADER`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fle-garff-yoann%2Foauth2-proxy-nexus3","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fle-garff-yoann%2Foauth2-proxy-nexus3","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fle-garff-yoann%2Foauth2-proxy-nexus3/lists"}