Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

Per-user sign-in for OAuth2 connectors (Enterprise)

クローズ
#1,300 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

関連するプルリクエストがすでにマージされています。

  • #1302 @helpcodeai による — マージ済み

評価

難易度
5/5
見積もり時間
1週間以上
初心者へのやさしさ
20/100
issue の種類
機能追加
明瞭さ
明確に書かれている
活発さ
停滞
技術スタック
typescript

調査の方向性

Start by reviewing the open pull request #1302, which is already implementing this issue. The proposal spans connector credentials, OAuth authorization and callbacks, token and response caches, API endpoints, migrations, and Enterprise licence checks; the payload does not name specific files or tests. Done means per-user OAuth credentials work across the listed call paths and both Cloud and self-hosted licensing modes, without falling back to shared tokens.

索引モデルが issue の本文から書いたものです。

説明

enhancement

Problem

An OAuth2 connector is authorized once: whoever clicks "Authorize with Provider" signs in, and every user of the workspace then calls the provider with that one account. For providers that already govern access per user (remote MCP servers with per-user OAuth, Microsoft 365, Google), this throws the provider's own permissions away: every user sees what the authorizing account can see. A shared Outlook connector, for example, reads the authorizer's mailbox for everyone.

Proposal

An Enterprise option per OAuth2 connector: each user signs in with their own account.

  • connectors.credential_scope (SHARED default, USER) and a new table user_connector_credentials (connector, user, organization; encrypted tokens; per-user auth_status*). Migration included; rows cascade with the connector, user and organization.
  • With USER, every call (MCP, Run Test, Test connection, tool discovery) carries the caller's own token. It never falls back to the connector's token: a call without a user, without a sign-in or without an Enterprise licence fails before anything is sent, with a message that links to the connector page.
  • Token cache, refresh lock, refused-refresh memo and token persistence are keyed per user (<connectorId>:user:<userId>), so a revoked sign-in blocks and notifies only its owner.
  • The response cache is kept per user for these connectors.
  • Switching to USER removes the connector's own tokens (the OAuth client stays); switching back removes every user's sign-in.
  • Endpoints: PATCH /api/connectors/:id/credential-scope, GET|DELETE /api/connectors/:id/my-credential; POST /api/connectors/:id/oauth/authorize is open to every member on a per-user connector.
  • Gate: EditionService.assertEnterprise, from AGPL code (no change under ee/). The trial does not include it, like the other Enterprise workspace features.

Scope: browser OAuth2 (authorization code) only. API keys, passwords and client-credentials grants stay shared.

Cloud and self-hosted

Same behaviour in both. Cloud checks the workspace's licence, self-hosted the workspace's or the instance's key. The redirect URI is unchanged (<SERVER_URL>/api/mcp-oauth/callback).

主要言語
TypeScript
スター
856
フォーク
82
平均マージ
7時間 49分
マージ済み PR(30日)
302

環境構築

このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

HelpCode-ai/anythingmcp のほかの issue

HelpCode-ai/anythingmcp の issue をすべて見る

似ている issue

TypeScript の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。