如何使用 gRPC 对 JWT 进行身份验证 PHP?

How do I authenticate with JWT using gRPC for PHP?

我已经从原型文件生成了我的客户端代码。现在我正在尝试连接,但从服务器收到 'jwt' is not located at the context 错误。这是我的做法:

$myServiceClient = new MyServiceClient(
    "$host:$port",
    [
        'credentials' => ChannelCredentials::createInsecure(),
        'update_metadata' => function ($metaData) use ($token) {
//            $metaData['authorization'] = ['jwt' . $token]; // doesn't work
//            $metaData['authorization']['jwt'] = $token; // doesn't work
//            $metaData['jwt'] = $token; // doesn't work
            $metaData['authorization'] = ['Bearer ' . $token]; // doesn't work

            return $metaData;
        },
    ]
);
$unaryCall = $myServiceClient->MyMethod(new MyMethodRequest());
$wait = $unaryCall->wait();

试试这个

$myServiceClient = new MyServiceClient(
    "$host:$port",
    [
        'credentials' => ChannelCredentials::createInsecure(),
        'update_metadata' => function ($metaData) use ($token) {
            $metaData['Authorization'] = 'Bearer ' . $token; 
            return $metaData;
        },
    ]
);

或者像这样:

https://jwt.io/introduction

Authorization: Bearer <token>

以下对我有用:

$myServiceClient = new MyServiceClient(
    "$host:$port",
    [
        'credentials' => ChannelCredentials::createInsecure(),
        'update_metadata' => function ($metaData) use ($token) {
            $metaData['jwt'] = [$token];

            return $metaData;
        },
    ]
);