diff --git a/services/identity/Cargo.lock b/services/identity/Cargo.lock --- a/services/identity/Cargo.lock +++ b/services/identity/Cargo.lock @@ -1287,6 +1287,7 @@ "tokio-stream", "tonic", "tonic-build", + "tonic-web", "tracing", "tracing-subscriber", ] @@ -2309,6 +2310,26 @@ "syn", ] +[[package]] +name = "tonic-web" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9213351ad53b0dcf1c9cf7c372a47533446b1114928a9177bedc6c551e14b7cf" +dependencies = [ + "base64", + "bytes", + "futures-core", + "http", + "http-body", + "hyper", + "pin-project", + "tonic", + "tower-http", + "tower-layer", + "tower-service", + "tracing", +] + [[package]] name = "tower" version = "0.4.13" diff --git a/services/identity/Cargo.toml b/services/identity/Cargo.toml --- a/services/identity/Cargo.toml +++ b/services/identity/Cargo.toml @@ -28,6 +28,7 @@ comm-opaque2 = { path = "../../shared/comm-opaque2" } once_cell = "1.17" hex = "0.4" +tonic-web = "0.5" [build-dependencies] tonic-build = "0.8" diff --git a/services/identity/src/main.rs b/services/identity/src/main.rs --- a/services/identity/src/main.rs +++ b/services/identity/src/main.rs @@ -2,6 +2,7 @@ use database::DatabaseClient; use interceptor::check_auth; use tonic::transport::Server; +use tonic_web::GrpcWebLayer; use tracing_subscriber::FmtSubscriber; mod client_service; @@ -62,12 +63,14 @@ let server = MyIdentityService::new(database_client.clone()); let keyserver_service = IdentityKeyserverServiceServer::with_interceptor(server, check_auth); - let client_server = + let client_service = IdentityClientServiceServer::new(ClientService::new(database_client)); info!("Listening to gRPC traffic on {}", addr); Server::builder() + .accept_http1(true) + .layer(GrpcWebLayer::new()) .add_service(keyserver_service) - .add_service(client_server) + .add_service(client_service) .serve(addr) .await?; }