MCPcopy Create free account
hub / github.com/NVIDIA/OpenShell / run_oidc_callback_server

Function run_oidc_callback_server

crates/openshell-cli/src/oidc_auth.rs:348–377  ·  view source on GitHub ↗

Run the ephemeral callback server for the OIDC redirect. Listens for `GET /callback?code=...&state=...`.

(
    listener: TcpListener,
    tx: oneshot::Sender<String>,
    expected_state: String,
)

Source from the content-addressed store, hash-verified

346///
347/// Listens for `GET /callback?code=...&state=...`.
348async fn run_oidc_callback_server(
349 listener: TcpListener,
350 tx: oneshot::Sender<String>,
351 expected_state: String,
352) {
353 let state = Arc::new(CallbackState {
354 expected_state,
355 tx: Mutex::new(Some(tx)),
356 });
357
358 loop {
359 let Ok((stream, _)) = listener.accept().await else {
360 return;
361 };
362 let state = Arc::clone(&state);
363 tokio::spawn(async move {
364 let service = service_fn(move |req| {
365 let state = Arc::clone(&state);
366 async move { Ok::<_, Infallible>(handle_oidc_callback(req, state)) }
367 });
368
369 if let Err(error) = Builder::new(TokioExecutor::new())
370 .serve_connection(TokioIo::new(stream), service)
371 .await
372 {
373 debug!(error = %error, "OIDC callback server connection failed");
374 }
375 });
376 }
377}
378
379fn handle_oidc_callback(
380 req: hyper::Request<hyper::body::Incoming>,

Callers 1

oidc_browser_auth_flowFunction · 0.85

Calls 2

handle_oidc_callbackFunction · 0.85
spawnFunction · 0.50

Tested by

no test coverage detected