mirror of
https://github.com/openai/codex.git
synced 2026-10-22 17:58:46 +00:00
## Why Allow MCP authentication to complete when the browser cannot reach the callback page by accepting the full redirect URL copied from its address bar. ## What changed - Add `codex mcp login <name> --no-browser` to print the authorization URL and accept a pasted callback without launching a browser. HTTP callbacks remain supported while waiting for input. - Validate pasted redirect URLs and OAuth responses before exchanging tokens, hide terminal input, bound input size, and avoid echoing callback values in diagnostics. - Preserve manual input across discovered-scope retries and support cancellation during callback input and token exchange. ## Testing Add unit and CLI integration tests for callback validation, bounded input, credential storage, HTTP callback completion with stdin open, scope retries, and cancellation during token exchange. GitOrigin-RevId: 16ea9c3221f72d93e6e3e5acdc6b9465293a0a65
96 lines
3.7 KiB
Rust
96 lines
3.7 KiB
Rust
mod auth_status;
|
|
mod bounded_stdio_transport;
|
|
mod elicitation_client_service;
|
|
mod ema_auth_policy;
|
|
mod ema_claims;
|
|
mod ema_exchange;
|
|
mod ema_identity;
|
|
mod enterprise_oauth_login;
|
|
mod event_notification_transport;
|
|
mod executor_process_transport;
|
|
mod http_client_adapter;
|
|
mod http_client_redirect;
|
|
mod http_headers;
|
|
mod in_process_transport;
|
|
mod local_child;
|
|
mod local_stdio_transport;
|
|
mod logging_client_handler;
|
|
mod oauth;
|
|
mod oauth_callback;
|
|
mod oauth_client_registration;
|
|
mod oauth_http_client;
|
|
mod oauth_refresh_mode;
|
|
mod perform_oauth_login;
|
|
mod program_resolver;
|
|
mod protocol_mode;
|
|
mod rmcp_client;
|
|
mod service_error;
|
|
mod startup_error;
|
|
mod stdio_server_launcher;
|
|
mod tool_input;
|
|
mod user_verification;
|
|
mod utils;
|
|
mod www_authenticate;
|
|
|
|
pub use auth_status::McpAuthState;
|
|
pub use auth_status::McpLoginRequirement;
|
|
pub use auth_status::OAuthDiscoveryTimeout;
|
|
pub use auth_status::StreamableHttpOAuthDiscovery;
|
|
pub use auth_status::determine_streamable_http_auth_status;
|
|
pub use auth_status::determine_streamable_http_auth_status_from_credentials;
|
|
pub use auth_status::discover_streamable_http_oauth;
|
|
pub use codex_protocol::protocol::McpAuthStatus;
|
|
pub use ema_auth_policy::EmaAuthFailure;
|
|
pub use ema_auth_policy::EmaInvalidGrantSource;
|
|
pub use ema_auth_policy::validate_ema_auth_resource;
|
|
pub use ema_claims::validate_oidc_identity_assertion;
|
|
pub use ema_exchange::EmaAccessToken;
|
|
pub use ema_exchange::EmaIdJagExchangeRequest;
|
|
pub use ema_exchange::exchange_id_jag;
|
|
pub use ema_identity::EmaIdpIdentity;
|
|
pub use ema_identity::EmaIdpIdentityRequest;
|
|
pub use ema_identity::resolve_ema_idp_identity;
|
|
pub use ema_identity::stored_ema_identity_is_usable;
|
|
pub use enterprise_oauth_login::EnterpriseOAuthCredentialGuard;
|
|
pub use enterprise_oauth_login::EnterpriseOAuthCredentials;
|
|
pub use enterprise_oauth_login::EnterpriseOAuthLoginHandle;
|
|
pub use enterprise_oauth_login::EnterpriseOAuthLoginRequest;
|
|
pub use enterprise_oauth_login::delete_enterprise_oauth_tokens;
|
|
pub use enterprise_oauth_login::perform_enterprise_oauth_login_return_url;
|
|
pub use event_notification_transport::EventNotificationReceiver;
|
|
pub use http_client_adapter::StreamableHttpRedirectMode;
|
|
pub use http_headers::with_http_headers_helper;
|
|
pub use in_process_transport::InProcessTransportFactory;
|
|
pub use oauth::StoredOAuthCredentialSnapshot;
|
|
pub use oauth::StoredOAuthTokens;
|
|
pub use oauth::WrappedOAuthTokenResponse;
|
|
pub use oauth::delete_oauth_tokens;
|
|
pub use oauth::save_oauth_tokens;
|
|
pub use oauth::stored_oauth_credential_snapshot;
|
|
pub use oauth::stored_oauth_credentials;
|
|
pub use oauth_callback::McpOAuthCallbackMode;
|
|
pub use oauth_callback::resolve_mcp_oauth_callback_url;
|
|
pub use oauth_client_registration::McpOAuthClientRegistration;
|
|
pub use oauth_refresh_mode::McpOAuthRefreshMode;
|
|
pub use perform_oauth_login::OAuthProviderError;
|
|
pub use perform_oauth_login::OauthLoginHandle;
|
|
pub use perform_oauth_login::perform_oauth_login;
|
|
pub use perform_oauth_login::perform_oauth_login_return_url;
|
|
pub use perform_oauth_login::perform_oauth_login_silent;
|
|
pub use perform_oauth_login::perform_oauth_login_with_callback_input;
|
|
pub use protocol_mode::McpProtocolMode;
|
|
pub use rmcp::model::ElicitationAction;
|
|
pub use rmcp_client::CancellableEventStreamRequest;
|
|
pub use rmcp_client::Elicitation;
|
|
pub use rmcp_client::ElicitationResponse;
|
|
pub use rmcp_client::ListToolsWithConnectorIdResult;
|
|
pub use rmcp_client::RmcpClient;
|
|
pub use rmcp_client::SendElicitation;
|
|
pub use rmcp_client::StreamableHttpBearerToken;
|
|
pub use rmcp_client::ToolWithConnectorId;
|
|
pub use service_error::mcp_error;
|
|
pub use startup_error::is_authentication_required_error;
|
|
pub use stdio_server_launcher::ExecutorStdioServerLauncher;
|
|
pub use stdio_server_launcher::LocalStdioServerLauncher;
|
|
pub use stdio_server_launcher::StdioServerLauncher;
|