aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Stanley Cheung <stanleycheung@google.com>2015-06-23 17:35:04 -0700
committerGravatar Stanley Cheung <stanleycheung@google.com>2015-06-23 17:35:04 -0700
commit40dc223f07ec31e0b9acf1796b574109cf965c3b (patch)
tree65dc12186a67096d8db531d1afbedfcbe82038bc
parentbe879b8d425077c429fb2a9e51f77edcbcbf91ca (diff)
Add PHP Google Auth example
-rw-r--r--grpc-auth-support.md21
-rw-r--r--php/composer.json1
-rw-r--r--php/greeter_client_with_auth.php57
-rwxr-xr-xphp/run_greeter_client_with_auth.sh37
4 files changed, 116 insertions, 0 deletions
diff --git a/grpc-auth-support.md b/grpc-auth-support.md
index 9b97203276..aff952a050 100644
--- a/grpc-auth-support.md
+++ b/grpc-auth-support.md
@@ -174,3 +174,24 @@ if (authorization.IsCreateScopedRequired)
var client = new Greeter.GreeterClient(channel,
new StubConfiguration(OAuth2InterceptorFactory.Create(credential)));
```
+
+###Authenticating with Google (PHP)
+```php
+// Base case - No encryption/authorization
+$client = new helloworld\GreeterClient(
+ new Grpc\BaseStub('localhost:50051', []));
+...
+
+// Authenticating with Google
+// the environment variable "GOOGLE_APPLICATION_CREDENTIALS" needs to be set
+$scope = "https://www.googleapis.com/auth/grpc-testing";
+$auth = Google\Auth\ApplicationDefaultCredentials::getCredentials($scope);
+$opts = [
+ 'credentials' => Grpc\Credentials::createSsl(file_get_contents('ca.pem'));
+ 'update_metadata' => $auth->getUpdateMetadataFunc(),
+];
+
+$client = new helloworld\GreeterClient(
+ new Grpc\BaseStub('localhost:50051', $opts));
+
+```
diff --git a/php/composer.json b/php/composer.json
index d1c4bd2a18..f0ce3a2aff 100644
--- a/php/composer.json
+++ b/php/composer.json
@@ -11,6 +11,7 @@
"require": {
"php": ">=5.5.0",
"datto/protobuf-php": "dev-master",
+ "google/auth": "dev-master",
"grpc/grpc": "dev-master"
}
}
diff --git a/php/greeter_client_with_auth.php b/php/greeter_client_with_auth.php
new file mode 100644
index 0000000000..39e28fcb80
--- /dev/null
+++ b/php/greeter_client_with_auth.php
@@ -0,0 +1,57 @@
+<?php
+/*
+ *
+ * Copyright 2015, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+require dirname(__FILE__) . '/vendor/autoload.php';
+require dirname(__FILE__) . '/helloworld.php';
+
+function greet($name) {
+ $scope = 'https://www.googleapis.com/auth/xapi.zoo';
+ $auth = Google\Auth\ApplicationDefaultCredentials::getCredentials($scope);
+ $opts = [
+ // 'credentials' => Grpc\Credentials::createSsl(
+ // file_get_contents(getenv('SSL_CERT_FILE'))),
+ 'update_metadata' => $auth->getUpdateMetadataFunc(),
+ ];
+ $client = new helloworld\GreeterClient(
+ new Grpc\BaseStub('localhost:50051', $opts));
+
+ $request = new helloworld\HelloRequest();
+ $request->setName($name);
+ list($reply, $status) = $client->SayHello($request)->wait();
+ $message = $reply->getMessage();
+ return $message;
+}
+
+$name = !empty($argv[1]) ? $argv[1] : 'world';
+print(greet($name)."\n");
diff --git a/php/run_greeter_client_with_auth.sh b/php/run_greeter_client_with_auth.sh
new file mode 100755
index 0000000000..b367096b9b
--- /dev/null
+++ b/php/run_greeter_client_with_auth.sh
@@ -0,0 +1,37 @@
+#!/bin/bash
+# Copyright 2015, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+set -e
+cd $(dirname $0)
+command -v brew >/dev/null 2>&1 && \
+ extension_dir="-d extension_dir="`brew --prefix`/opt/grpc-php
+# path to project credentials .json file
+export GOOGLE_APPLICATION_CREDENTIALS=''
+php $extension_dir -d extension=grpc.so greeter_client_with_auth.php $1