如果您在使用 Akka gRPC 时遇到了“12 INTERNAL”错误,请仔细检查您的授权配置是否正确。如果授权被拒绝,服务端将返回“12 INTERNAL”错误代码。
以下是一个基本示例:
val service: Service[HelloRequest, HelloReply] = ???
val authInterceptor = new ServerInterceptor {
override def interceptCall[ReqT, RespT](
call: ServerCall[ReqT, RespT],
headers: Metadata,
next: ServerCallHandler[ReqT, RespT]): ServerCall.Listener[ReqT] = {
if (checkAuthorization(headers)) {
println("Authorization granted")
next.startCall(call, headers)
} else {
println("Authorization denied")
call.close(Status.UNAUTHENTICATED.withDescription("Invalid credentials"), new Metadata())
new ServerCall.Listener[ReqT]() {}
}
}
}
val builder =
ServerBuilder.forPort(8080)
.addService(ServerInterceptors.intercept(service, authInterceptor))
在上面的代码示例中,我们创建了一个名为authInterceptor的服务器拦截器用于检查身份验证。如果身份验证失败,则服务器将使用状态代码“UNAUTHENTICATED”关闭调用,这将导致客户端收到“12 INTERNAL”错误。
您应该确保您的身份验证策略已正确配置,并且客户端具有正确的凭据,以避免出现此错误。
上一篇:AkkagRPC授权拒绝导致“12INTERNAL错误。
下一篇:Akka过早终止