|
|
|
@ -199,6 +199,13 @@ class BaseStub |
|
|
|
|
*/ |
|
|
|
|
private function _get_jwt_aud_uri($method) |
|
|
|
|
{ |
|
|
|
|
// TODO(jtattermusch): This is not the correct implementation |
|
|
|
|
// of extracting JWT "aud" claim. We should rely on |
|
|
|
|
// grpc_metadata_credentials_plugin which |
|
|
|
|
// also provides the correct value of "aud" claim |
|
|
|
|
// in the grpc_auth_metadata_context.service_url field. |
|
|
|
|
// Trying to do the construction of "aud" field ourselves |
|
|
|
|
// is bad. |
|
|
|
|
$last_slash_idx = strrpos($method, '/'); |
|
|
|
|
if ($last_slash_idx === false) { |
|
|
|
|
throw new \InvalidArgumentException( |
|
|
|
@ -213,6 +220,12 @@ class BaseStub |
|
|
|
|
$hostname = $this->hostname; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Remove the port if it is 443 |
|
|
|
|
// See https://github.com/grpc/grpc/blob/07c9f7a36b2a0d34fcffebc85649cf3b8c339b5d/src/core/lib/security/transport/client_auth_filter.cc#L205 |
|
|
|
|
if ((strlen($hostname) > 4) && (substr($hostname, -4) === ":443")) { |
|
|
|
|
$hostname = substr($hostname, 0, -4); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return 'https://'.$hostname.$service_name; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|