hermes-agent/hermes_cli/dashboard_auth
x7peeps ed5e17f4b8 fix(auth): /auth/native/authorize 空 provider 自动选择不再统计会被拒绝的密码 provider
Fix #78906

当部署同时启用 basic 密码 provider 与一个 OAuth/OIDC session provider 时,
list_session_providers() 会把密码 provider 也计入 "exactly one candidate"
判断(密码 provider 虽是 session provider,但下一行就会因 supports_password
被原生 OAuth broker 流程拒绝),导致 len == 2、自动选择被跳过,桌面端
空 provider 登录返回 404 "Unknown provider: ''"。

修复:自动选择只在可 broker 的 provider(supports_session 且非
supports_password)中计数,与 /api/status 的 native_pkce 能力宣告使用同一
"brokerable" 定义;当没有任何可 broker provider 时保留原有选择逻辑,
让显式的 400 错误继续解释密码 provider 不支持原生 OAuth。

新增回归测试:basic+OIDC 并存时自动选中 OIDC、单 OAuth provider 自动
选中、多 OAuth provider 歧义 404、纯密码部署保留 400。
2026-08-11 16:00:55 -04:00
..
__init__.py
…
audit.py fix: route stray HERMES_HOME hardcodes through get_hermes_home() (profile + native-Windows safety) 2026-07-29 09:33:48 -07:00
base.py fix(auth): preserve provider fallback during refresh 2026-07-14 07:02:05 -07:00
cookies.py fix(auth): route session refresh with provider hint cookie 2026-07-14 07:02:05 -07:00
login_page.py
…
middleware.py feat(dashboard-auth): RFC 8252 native desktop sign-in (system browser + PKCE, no webview/cookies) 2026-07-22 06:50:50 -07:00
native_flow.py fix(dashboard-auth): harden the public native-authorize surface 2026-07-22 06:50:50 -07:00
prefix.py
…
public_paths.py fix(dashboard): add lightweight /api/health liveness endpoint 2026-07-24 19:43:44 -05:00
registry.py
…
routes.py fix(auth): /auth/native/authorize 空 provider 自动选择不再统计会被拒绝的密码 provider 2026-08-11 16:00:55 -04:00
token_auth.py
…
ws_tickets.py
…