Akamai EdgeGrid Authentication for PHP
This library requires PHP 8+ and implements the Akamai EdgeGrid Authentication scheme on top of Guzzle as both a drop-in replacement client and middleware.
To install, use composer:
$ composer require akamai-open/edgegrid-clientDownload the PHAR file from the releases page and include it inside your code:
```php
include 'akamai-open-edgegrid-auth.phar';
// Library is ready to use
```
The AkamaiOpenEdgeGridClient extends GuzzleHttpClient as a drop-in replacement. It works transparently to sign API requests without changing other ways you use Guzzle.
To use the client, call AkamaiOpenEdgeGridClient->setAuth() or provide an instance of AkamaiOpenEdgeGridAuthentication to the constructor prior to making a request to an API.
$client = new AkamaiOpenEdgeGridClient([
'base_uri' => 'https://akab-h05tnam3wl42son7nktnlnnx-kbob3i3v.luna.akamaiapis.net'
]);
$client->setAuth($client_token, $client_secret, $access_token);
// use $client just as you would GuzzleHttpClient
$response = $client->get('/identity-management/v3/user-profile');To generate your credentials, see Create authentication credentials.
We recommend using a local .edgerc authentication file. Place your credentials under a heading of [default] at your local home directory or the home directory of a web-server user.
[default]
client_secret = C113nt53KR3TN6N90yVuAgICxIRwsObLi0E67/N8eRN=
host = akab-h05tnam3wl42son7nktnlnnx-kbob3i3v.luna.akamaiapis.net
access_token = akab-acc35t0k3nodujqunph3w7hzp7-gtm6ij
client_token = akab-c113ntt0k3n4qtari252bfxxbsl-yvsdj
You can call your .edgerc file one of two ways:
Use the factory method AkamaiOpenEdgeGridClient::createFromEdgeRcFile().
$client = AkamaiOpenEdgeGridClient::createFromEdgeRcFile();
// use $client just as you would GuzzleHttpClient
$response = $client->get('/identity-management/v3/user-profile');Specify a credentials section and/or .edgerc location:
$client = AkamaiOpenEdgeGridClient::createFromEdgeRcFile('example', '../config/.edgerc');
// use $client just as you would GuzzleHttpClient
$response = $client->get('/identity-management/v3/user-profile');This library provides a command line interface (CLI) with a limited set of capabilities that mimic httpie.
Install the CLI with composer vendor/bin/http or execute the PHAR file.
# Composer installed
$ ./vendor/bin/http --help
# For Windows
> php ./vendor/bin/http --help
# PHAR download
php akamai-open-edgegrid-client.phar --helpYou can set authentication and specify an HTTP method (case insensitive), its headers, and any JSON body fields.
Note: Our CLI shows all HTTP and body data. JSON is formated.
| Argument | Description |
|---|---|
--auth-type={edgegrid,basic,digest} |
Set the authentication type. The default is none. |
--auth user: or --a user: |
Set the .edgerc section to use. Unlike httpie-edgegrid, the colon (:) is optional. |
Header-Name:value |
Headers and values are colon (:) separated. |
jsonKey=value |
Sends {"jsonKey": "value"} in the POST or PUT body. This will also automatically set the Content-Type and Accept headers to application/json. |
jsonKey:=[1,2,3] |
Allows you to specify raw JSON data, sending {"jsonKey": [1, 2, 3]} in the body. |
multipart/mime (file upload) data.This package provides three different middleware handlers you can add transparently when using the Client, to a standard GuzzleHttpClient or as a handler.
AkamaiOpenEdgeGridHandlerAuthentication for transparent API request signing.AkamaiOpenEdgeGridHandlerVerbose for output (or log) responses.AkamaiOpenEdgeGridHandlerDebug for output (or log) errors.| Handler | Call |
|---|---|
Authentication |
Client->setAuthentication() or pass in an instance of AkamaiEdgeGridAuthentication to Client->__construct(). |
Verbose |
Client->setInstanceVerbose() or Client::setVerbose() passing in on of `true |
Debug |
Client->setInstanceDebug(), Client::setDebug(), or set the debug config option with `true |
| Handler | Example |
|---|---|
| Authentication |
// Create the Authentication Handler
$auth = AkamaiOpenEdgeGridHandlerAuthentication::createFromEdgeRcFile();
// or:
$auth = new AkamaiOpenEdgeGridHandlerAuthentication;
$auth->setAuth($client_token, $client_secret, $access_token);
// Create the handler stack
$handlerStack = GuzzleHttpHandlerStack::create();
// Add the Auth handler to the stack
$handlerStack->push($auth);
// Add the handler to a regular GuzzleHttpClient
$guzzle = new GuzzleHttpClient([
"handler" => $handlerStack
]); |
| Verbose |
// Create the handler stack
$handlerStack = HandlerStack::create();
// Add the Auth handler to the stack
$handlerStack->push(new AkamaiOpenEdgeGridHandlerVerbose());
// Add the handler to a regular GuzzleHttpClient
$guzzle = new GuzzleHttpClient([
"handler" => $handlerStack
]);// Create the handler stack
$handlerStack = HandlerStack::create();
// Add the Auth handler to the stack
$handlerStack->push(new AkamaiOpenEdgeGridHandlerDebug());
// Add the handler to a regular GuzzleHttpClient
$guzzle = new GuzzleHttpClient([
"handler" => $handlerStack
]); |
Copyright © 2022 Akamai Technologies, Inc. All rights reserved
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.