1. Code
  2. Coding Fundamentals
  3. Authentication

Authentifizierung und Autorisierung mit Auth0 in PHP

Scroll to top

German (Deutsch) translation by Wei Zhang (you can also view the original English article)

In diesem Artikel werden wir den Auth0-Dienst untersuchen, der Authentifizierung und Autorisierung als Dienst bereitstellt. Mit Auth0 können Sie grundlegende Authentifizierungs- und Autorisierungsfunktionen für Ihre Apps im Handumdrehen einrichten.

Was ist Auth0?

Auth0 ist eine Authentifizierung als Service-Tool, das die Implementierung von authentifizierungsbezogenen Funktionen auf Ihrer Website zu einem Kinderspiel macht. Wenn Sie eine App entwickelt haben und nur die Authentifizierungs- und Autorisierungsfunktionen auslagern möchten, sollten Sie einen Dienst wie Auth0 in Erwägung ziehen.

Lassen Sie mich kurz zusammenfassen, was Auth0 zu bieten hat:

  • Einmalige Anmeldung
  • Multifaktor-Authentifizierung
  • Passwortlose Logins
  • Benutzerverwaltung
  • und vieles mehr

In diesem Artikel werden einige Single Sign-On-Methoden erläutert, die Sie in Ihren Webanwendungen implementieren können, um die vom Auth0-Dienst bereitgestellten Authentifizierungsfunktionen zu nutzen.

In der ersten Hälfte des Artikels erfahren Sie, wie Sie grundlegende Authentifizierungsfunktionen in einer serverseitigen PHP-Webanwendung einrichten. In der zweiten Hälfte erkläre ich, wie Sie Ihre benutzerdefinierten APIs sichern können, indem Sie die OAuth-Autorisierung mit dem Auth0-Dienst einrichten.

Serverseitige Authentifizierung Integration

In diesem Abschnitt erfahren Sie, wie Sie mithilfe von Auth0 schnell die Basisauthentifizierung für serverseitige Webanwendungen einrichten können. Tatsächlich bietet das Auth0-Team bereits ein praktisches GitHub-Beispiel, das grundlegende Beispiele demonstriert, also werden wir das verwenden, anstatt das Rad neu zu erfinden.

Bevor Sie fortfahren, stellen Sie sicher, dass Sie Composer installieren, damit die eigentlichen Auth0 SDKs mit der Datei composer.json installiert werden. Wenn Sie den Beispielen in diesem Artikel folgen möchten, können Sie auch einen kostenlosen Account mit Auth0 erwerben.

Richten Sie das Projekt ein

Lassen Sie uns weitermachen und den Klon des Samples-Projekts greifen.

1
git clone https://github.com/auth0-samples/auth0-php-web-app.git .

Fahren Sie mit dem Befehl composer install fort, um die Abhängigkeiten zu installieren.

1
cd 00-Starter-Seed
2
composer install

Laut der Datei composer.json sollten die Pakete vlucas/phpdotenv und auth0/auth0-php installiert sein.

1
{
2
    "name": "auth0/basic-webapp-sample",
3
    "description": "Basic sample for securing a WebApp with Auth0",
4
    "require": {
5
         "vlucas/phpdotenv": "2.4.0",
6
         "auth0/auth0-php": "~5.0"
7
    },
8
    "license": "MIT",
9
    "authors": [
10
        {
11
            "name": "Martin Gontovnikas",
12
            "email": "martin@gon.to"
13
        },
14
        {
15
            "name": "Germán Lena",
16
            "email": "german.lena@gmail.com"
17
        }
18
    ]
19
}

Die Bibliothek vlucas/phpdotenv wird zum Initialisieren von Umgebungsvariablen aus der .env-Datei verwendet. Auf diese Weise können Sie die Konfiguration von dem Code trennen, der zwischen den Umgebungen wechselt.

Auf der anderen Seite ist das auth0/auth0-php Paket dasjenige, das uns helfen wird, die Autorisierung in unserer Anwendung einzurichten.

Als Nächstes richten wir die Konfiguration für unsere Anwendung in der .env-Datei ein. Gehen Sie voran und erstellen Sie die .env-Datei, indem Sie sie aus der .env.example-Datei kopieren.

1
cp .env.example .env

Es enthält Konfigurationswerte, die von der Auth0-Bibliothek verwendet werden.

1
AUTH0_CLIENT_ID={CLIENT_ID}
2
AUTH0_DOMAIN={DOMAIN_NAME}
3
AUTH0_CLIENT_SECRET={CLIENT_SECRET}
4
AUTH0_CALLBACK_URL={CALLBACK_URL}
5
AUTH0_AUDIENCE=

Sie sollten die meisten Einstellungen unter Applications > Default App > Settings im Auth0-Dashboard finden können. Bitte beachten Sie, dass ich die Standardanwendung verwende, die vom System erstellt wurde. Natürlich können Sie eine neue Anwendung erstellen, wenn Sie dies möchten.

Die AUTH0_CALLBACK_URL ist die URL Ihrer Anwendung, bei der Auth0 Benutzer nach dem Anmelden und Abmelden umleiten wird. Der Wert, den Sie in diesem Feld festlegen, muss unter den Allowed Callback URLs unter den Anwendungseinstellungen auf dem Auth0-Dashboard konfiguriert werden.

Sie finden drei Hauptdateien, die den Großteil der Authentifizierungslogik implementieren.

  • index.php: Dies ist die Hauptseite, die basierend auf dem Status des Benutzers entweder eine Schaltfläche zum Anmelden oder Abmelden anzeigt.
  • login.php: Dieses Skript wird gestartet, wenn Sie auf den Login-Button klicken und Benutzer zur Anmelde-Schnittstelle Auth0 umleiten. Nach der Anmeldung werden sie zurück zur AUTH0_CALLBACK_URL weitergeleitet.
  • logout.php: Dieses Skript wird gestartet, wenn du auf den Logout-Button klickst und Benutzer zu Auth0 im Hintergrund weiterleitet, sie ausloggst und sie zurück zur AUTH0_CALLBACK_URL bringt.

Wichtige Projektdateien

Lassen Sie uns schnell jede Datei im Starter-Projekt durchgehen.

Das Anmeldeskript

Wir beginnen mit der login.php Datei.

1
<?php
2
require __DIR__ . '/vendor/autoload.php';
3
require __DIR__ . '/dotenv-loader.php';
4
5
use Auth0\SDK\Auth0;
6
7
$domain        = getenv('AUTH0_DOMAIN');
8
$client_id     = getenv('AUTH0_CLIENT_ID');
9
$client_secret = getenv('AUTH0_CLIENT_SECRET');
10
$redirect_uri  = getenv('AUTH0_CALLBACK_URL');
11
$audience      = getenv('AUTH0_AUDIENCE');
12
13
if($audience == ''){
14
$audience = 'https://' . $domain . '/userinfo';
15
}
16
17
$auth0 = new Auth0([
18
  'domain' => $domain,
19
  'client_id' => $client_id,
20
  'client_secret' => $client_secret,
21
  'redirect_uri' => $redirect_uri,
22
  'audience' => $audience,
23
  'scope' => 'openid profile',
24
  'persist_id_token' => true,
25
  'persist_access_token' => true,
26
  'persist_refresh_token' => true,
27
]);
28
29
$auth0->login();

Zu Beginn haben wir Autoloader integriert, die für das Laden von Klassen mit Aut0- und Umgebungsvariablen zuständig sind. Anschließend initialisieren wir Konfigurationsvariablen aus der .env-Datei mit der Funktion getenv.

Als nächstes instanziieren wir das Auth0-Objekt und rufen die Login-Methode auf, die Benutzer zur Anmeldung an Auth0 weiterleitet. Nach der Anmeldung werden die Nutzer auf unsere Website weitergeleitet.

Sie können sich mit Ihren sozialen Accounts wie Facebook, Google und Ähnlichem anmelden oder ein neues Konto bei der Anmeldung erstellen. In beiden Fällen erstellt Auth0 Datensätze für die neuen Benutzer an ihrem Ende. Unter Connections> Social können Sie auf dem Auth0-Dashboard verschiedene soziale Logins aktivieren. Sie können auch die Liste der Benutzer überprüfen, die mit Auth0 im Auth0-Dashboard unter dem Link Users angemeldet sind.

Das Logout-Skript

Als nächstes schauen wir uns die logout.php Datei an.

1
<?php
2
require __DIR__ . '/vendor/autoload.php';
3
require __DIR__ . '/dotenv-loader.php';
4
use Auth0\SDK\Auth0;
5
6
$domain        = getenv('AUTH0_DOMAIN');
7
$client_id     = getenv('AUTH0_CLIENT_ID');
8
$client_secret = getenv('AUTH0_CLIENT_SECRET');
9
$redirect_uri  = getenv('AUTH0_CALLBACK_URL');
10
$audience      = getenv('AUTH0_AUDIENCE');
11
12
if($audience == ''){
13
    $audience = 'https://' . $domain . '/userinfo';
14
}
15
16
$auth0 = new Auth0([
17
  'domain' => $domain,
18
  'client_id' => $client_id,
19
  'client_secret' => $client_secret,
20
  'redirect_uri' => $redirect_uri,
21
  'audience' => $audience,
22
  'scope' => 'openid profile',
23
  'persist_id_token' => true,
24
  'persist_refresh_token' => true,
25
]);
26
27
$auth0->logout();
28
$return_to = 'https://' . $_SERVER['HTTP_HOST'];
29
$logout_url = sprintf('http://%s/v2/logout?client_id=%s&returnTo=%s', $domain, $client_id, $return_to);
30
header('Location: ' . $logout_url);
31
die();

Dies funktioniert genauso wie die login.php-Datei, außer dass sie beim Abmelden aufgerufen wird. Die Methode logout wird aufgerufen, um eine Benutzersitzung in Ihrer App abzubrechen. Anschließend wird der Benutzer zu Auth0 weitergeleitet, damit der Dienst über die Abmeldeaktivität des Benutzers informiert wird. Abschließend wird der Benutzer zurück zu Ihrer Anwendung geleitet.

Die Indexdatei

Schließlich gehen wir die Datei index.php durch, die der Einstiegspunkt unserer Anwendung ist.

1
<?php
2
  // Require composer autoloader

3
  require __DIR__ . '/vendor/autoload.php';
4
  require __DIR__ . '/dotenv-loader.php';
5
  use Auth0\SDK\Auth0;
6
  $domain        = getenv('AUTH0_DOMAIN');
7
  $client_id     = getenv('AUTH0_CLIENT_ID');
8
  $client_secret = getenv('AUTH0_CLIENT_SECRET');
9
  $redirect_uri  = getenv('AUTH0_CALLBACK_URL');
10
  $audience      = getenv('AUTH0_AUDIENCE');
11
  if($audience == ''){
12
    $audience = 'https://' . $domain . '/userinfo';
13
  }
14
  $auth0 = new Auth0([
15
    'domain' => $domain,
16
    'client_id' => $client_id,
17
    'client_secret' => $client_secret,
18
    'redirect_uri' => $redirect_uri,
19
    'audience' => $audience,
20
    'scope' => 'openid profile',
21
    'persist_id_token' => true,
22
    'persist_access_token' => true,
23
    'persist_refresh_token' => true,
24
  ]);
25
  $userInfo = $auth0->getUser();
26
?>
27
<html>
28
    <head>
29
        <script src="http://code.jquery.com/jquery-3.1.0.min.js" type="text/javascript"></script>
30
31
        <meta name="viewport" content="width=device-width, initial-scale=1">
32
33
        <!-- font awesome from BootstrapCDN -->
34
        <link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet">
35
        <link href="//maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet">
36
37
        <link href="public/app.css" rel="stylesheet">
38
    </head>
39
    <body class="home">
40
        <div class="container">
41
            <div class="login-page clearfix">
42
              <?php if(!$userInfo): ?>
43
              <div class="login-box auth0-box before">
44
                <img src="https://i.cloudup.com/StzWWrY34s.png" />
45
                <h3>Auth0 Example</h3>
46
                <p>Zero friction identity infrastructure, built for developers</p>
47
                <a class="btn btn-primary btn-lg btn-login btn-block" href="login.php">Sign In</a>
48
              </div>
49
              <?php else: ?>
50
              <div class="logged-in-box auth0-box logged-in">
51
                <h1 id="logo"><img src="//cdn.auth0.com/samples/auth0_logo_final_blue_RGB.png" /></h1>
52
                <img class="avatar" src="<?php echo $userInfo['picture'] ?>"/>
53
                <h2>Welcome <span class="nickname"><?php echo $userInfo['nickname'] ?></span></h2>
54
                <a class="btn btn-warning btn-logout" href="/logout.php">Logout</a>
55
              </div>
56
              <?php endif ?>
57
            </div>
58
        </div>
59
    </body>
60
</html>

Hier haben wir die getUser-Methode des $auth0-Objekts verwendet, um zu sehen, ob es eine aktive Sitzung gibt. Wenn es keine aktive Sitzung gibt, zeigen wir den Sign In-Link an, der einen Benutzer zur login.php führt und den Login-Flow initiiert. Auf der anderen Seite werden wir den Benutzer begrüßen und den Logout-Link anzeigen, wenn der Benutzer bereits angemeldet ist.

Das war die Implementierung eines grundlegenden Authentifizierungsablaufs für serverseitige Apps.

Sichern Sie Ihre benutzerdefinierten APIs mit OAuth2

In diesem Abschnitt erfahren Sie, wie Sie Ihre benutzerdefinierten APIs sichern können, indem Sie den OAuth2-Berechtigungscode-Genehmigungsablauf implementieren. Ich hoffe, Sie kennen den Standardfluss des Autorisierungscode-Grants, da wir hier nicht näher darauf eingehen werden. Hier findest du einige unserer Beiträge auf Envato Tuts +, wenn du mit OAuth2 auf dem Laufenden sein willst.

Stattdessen tauchen wir gleich in die eigentliche Implementierung ein. Gehen Sie voran und erstellen Sie eine auth_code_grant_example.php Datei mit den folgenden Inhalten.

1
<?php
2
session_start();
3
4
if (!isset($_GET['code'])) {
5
    // Check if we need to show the "Sign In" link

6
    $params = array (
7
      'audience' => '{AUDIENCE}',
8
      'scope' => 'profile',
9
      'response_type' => 'code',
10
      'client_id' => '{CLIENT_ID}',
11
      'state' => 'SomeRandomString',
12
      'redirect_uri' => '{CALLBACK_URL}'
13
    );
14
15
    $_SESSION['oauth2state']=$params['state'];
16
    $str_params = '';
17
    foreach($params as $key=>$value) {
18
      $str_params .= $key . "=" . urlencode($value) . "&";
19
    }
20
    ?>
21
22
    <a href="https://{AUTH0_DOMAIN}/authorize?<?php echo $str_params;?>">
23
      Sign In
24
    </a>
25
<?php
26
} elseif (empty($_GET['state']) || (isset($_SESSION['oauth2state']) && $_GET['state'] !== $_SESSION['oauth2state'])) {
27
    // If the "state" var is present in the $_GET, let's validate it

28
    if (isset($_SESSION['oauth2state'])) {
29
        unset($_SESSION['oauth2state']);
30
    }
31
    
32
    exit('Invalid state');
33
34
} elseif(isset($_GET['code']) && !empty($_GET['code'])) {
35
    // If the auth "code" is present in the $_GET

36
    // let's exchange it for the access token

37
    $params = array (
38
      'grant_type' => 'authorization_code',
39
      'client_id' => '{CLIENT_ID}',
40
      'client_secret' => '{CLIENT_SECRET}',
41
      'code' => $_GET['code'],
42
      'redirect_uri' => '{CALLBACK_URL}'
43
    );
44
45
    $str_params = '';
46
    foreach($params as $key=>$value) {
47
      $str_params .= $key . "=" . urlencode($value) . "&";
48
    }
49
50
    $curl = curl_init();
51
52
    curl_setopt_array($curl, array(
53
      CURLOPT_URL => "https://{AUTH0_DOMAIN}/oauth/token",
54
      CURLOPT_RETURNTRANSFER => true,
55
      CURLOPT_CUSTOMREQUEST => "POST",
56
      CURLOPT_POSTFIELDS => $str_params
57
    ));
58
59
    $curl_response = curl_exec($curl);
60
    $curl_error = curl_error($curl);
61
62
    curl_close($curl);
63
64
    if ($curl_error) {
65
      echo "Error in the CURL response:" . $curl_error;
66
    } else {
67
      $arr_json_data = json_decode($curl_response);
68
69
      if (isset($arr_json_data->access_token)) {
70
        $access_token = $arr_json_data->access_token;
71
        $curl = curl_init();
72
73
        curl_setopt_array($curl, array(
74
          CURLOPT_URL => "http://{YOUR_API_DOMAIN}/demo_api_server.php",
75
          CURLOPT_RETURNTRANSFER => true,
76
          CURLOPT_CUSTOMREQUEST => "GET",
77
          CURLOPT_HTTPHEADER => array(
78
            "Authorization: Bearer {$access_token}"
79
          )
80
        ));
81
82
        $curl_response = curl_exec($curl);
83
        $curl_error = curl_error($curl);
84
85
        curl_close($curl);
86
87
        if ($curl_error) {
88
          echo "Error in the CURL response from DEMO API:" . $curl_error;
89
        } else {
90
          echo "Demo API Response:" . $curl_response;
91
        }
92
      } else {
93
        echo 'Invalid response, no access token was found.';
94
      }
95
    }
96
}

Schauen wir uns an, wie dieser Code funktioniert!

Beginn des Autorisierungsablaufs

Zuerst bereiteten wir einen Link vor, der den Benutzer an den Auth0-Server sendet, um den Autorisierungsablauf zu beginnen.

1
// Check if we need to show the "Sign In" link

2
$params = array (
3
  'audience' => '{AUDIENCE}',
4
  'scope' => 'profile',
5
  'response_type' => 'code',
6
  'client_id' => '{CLIENT_ID}',
7
  'state' => '{SOME_RANDOM_STRING}',
8
  'redirect_uri' => '{CALLBACK_URL}'
9
);
10
11
$_SESSION['oauth2state']=$params['state'];
12
$str_params = '';
13
foreach($params as $key=>$value) {
14
  $str_params .= $key . "=" . urlencode($value) . "&";
15
}
16
?>
17
18
<a href="https://{AUTH0_DOMAIN}/authorize?<?php echo $str_params;?>">
19
  Sign In
20
</a>

Ersetzen Sie {AUDIENCE}, {CLIENT_ID} und {CALLBACK_URL} durch Werte, die Ihrer Anwendung entsprechen. Der Parameter {AUDIENCE} sollte durch den Wert des Felds Identifier unter APIs> {YOUR API APPLICATION}> Settings im Auth0-Dashboard ersetzt werden.

Der {SOME_RANDOM_STRING} sollte durch einen eindeutigen Wert ersetzt werden, der schwer zu erraten ist. Diese Zeichenfolge wird verwendet, um CSRF-Angriffe zu verhindern. Stellen Sie außerdem sicher, dass {AUTH0_DOMAIN} durch Ihren Domänennamen ersetzt wird, wie bereits erwähnt.

Erhalten des Zugriffstokens

Wenn ein Nutzer auf den Sign In-Link klickt, wird er zur Authentifizierung an den Auth0-Server weitergeleitet. Nach der Authentifizierung werden Sie aufgefordert, den Zugriff der Anwendung auf Ihr Profil zu autorisieren. Nach der Autorisierung wird der Benutzer mit dem codeals $_GET-Parameter zurück an Ihre Anwendung weitergeleitet.

Als nächstes können wir diesen code austauschen, um das Zugriffstoken zu erhalten.

1
// If the auth "code" is present in the $_GET

2
// let's exchange it for the access token

3
$params = array (
4
  'grant_type' => 'authorization_code',
5
  'client_id' => '{CLIENT_ID}',
6
  'client_secret' => '{CLIENT_SECRET}',
7
  'code' => $_GET['code'],
8
  'redirect_uri' => '{CALLBACK_URL}'
9
);
10
11
$str_params = '';
12
foreach($params as $key=>$value) {
13
  $str_params .= $key . "=" . urlencode($value) . "&";
14
}
15
16
$curl = curl_init();
17
$curl_response = curl_exec($curl);
18
19
curl_setopt_array($curl, array(
20
  CURLOPT_URL => "https://{AUTH0_DOMAIN}/oauth/token",
21
  CURLOPT_RETURNTRANSFER => true,
22
  CURLOPT_CUSTOMREQUEST => "POST",
23
  CURLOPT_POSTFIELDS => $str_params
24
));

Wie Sie sehen, benötigt ein einzelner CURL-Aufruf das Zugriffstoken.

Rufen Sie Ihren benutzerdefinierten API-Endpunkt auf

Sobald Sie über das Zugriffstoken verfügen, können Sie Ihren benutzerdefinierten API-Endpunkt aufrufen, indem Sie ihn in die Kopfzeile aufnehmen.

1
$access_token = $arr_json_data->access_token;
2
$curl = curl_init();
3
4
curl_setopt_array($curl, array(
5
  CURLOPT_URL => "http://{YOUR_API_DOMAIN}/demo_api_server.php",
6
  CURLOPT_RETURNTRANSFER => true,
7
  CURLOPT_CUSTOMREQUEST => "GET",
8
  CURLOPT_HTTPHEADER => array(
9
    "Authorization: Bearer {$access_token}"
10
  )
11
));
12
13
$curl_response = curl_exec($curl);
14
$curl_error = curl_error($curl);
15
16
curl_close($curl);
17
18
if ($curl_error) {
19
  echo "Error in the CURL response from DEMO API:" . $curl_error;
20
} else {
21
  echo "Demo API Response:" . $curl_response;
22
}

Ein Auth0-geschützter API-Endpunkt

Die fiktive API-Ressourcendatei demo_api_server.php könnte etwa so aussehen:

1
<?php
2
// Require composer autoloader

3
require __DIR__ . '/vendor/autoload.php';
4
5
use Auth0\SDK\JWTVerifier;
6
7
try {
8
  $verifier = new JWTVerifier([
9
    'supported_algs' => ['{HASHING_ALGORITHM}'],
10
    'valid_audiences' => ['{AUDIENCE}'],
11
    'authorized_iss' => ['{DOMAIN}']
12
  ]);
13
14
  $access_token = getBearerToken();
15
  $token_info = $verifier->verifyAndDecode($access_token);
16
17
  echo json_encode(array('date'=>'API Resource Data!!'));
18
}
19
catch(\Auth0\SDK\Exception\CoreException $e) {
20
  throw $e;
21
  echo json_encode(array('error'=>$e->getMessage()));
22
}
23
24
function getAuthorizationHeader() {
25
    $headers = null;
26
27
    if (isset($_SERVER['Authorization'])) {
28
        $headers = trim($_SERVER["Authorization"]);
29
    }
30
    else if (isset($_SERVER['HTTP_AUTHORIZATION'])) { //Nginx or fast CGI

31
        $headers = trim($_SERVER["HTTP_AUTHORIZATION"]);
32
    } elseif (function_exists('apache_request_headers')) {
33
        $requestHeaders = apache_request_headers();
34
        // Server-side fix for bug in old Android versions (a nice side-effect of this fix means we don't care about capitalization for Authorization)

35
        $requestHeaders = array_combine(array_map('ucwords', array_keys($requestHeaders)), array_values($requestHeaders));
36
        //print_r($requestHeaders);

37
        if (isset($requestHeaders['Authorization'])) {
38
            $headers = trim($requestHeaders['Authorization']);
39
        }
40
    }
41
    return $headers;
42
}
43
44
function getBearerToken() {
45
    $headers = getAuthorizationHeader();
46
47
    // HEADER: Get the access token from the header

48
    if (!empty($headers)) {
49
        if (preg_match('/Bearer\s(\S+)/', $headers, $matches)) {
50
            return $matches[1];
51
        }
52
    }
53
    return null;
54
}

Lasst uns schnell die wichtigen Teile dieses Codes durchgehen.

Validieren des Zugriffstokens

Es liegt in Ihrer Verantwortung, das eingehende Zugriffstoken zu überprüfen, bevor Sie der geschützten Ressource Zugriff gewähren. Und genau das haben wir im folgenden Ausschnitt gemacht. Wir haben die JWTVerifier-Dienstprogrammklasse verwendet, um das Zugriffstoken zu validieren.

1
try {
2
  $verifier = new JWTVerifier([
3
    'supported_algs' => ['{SIGNING_ALGORITHM}'],
4
    'valid_audiences' => ['{AUDIENCE}'],
5
    'authorized_iss' => ['{DOMAIN}']
6
  ]);
7
8
  $access_token = getBearerToken();
9
  $token_info = $verifier->verifyAndDecode($access_token);
10
11
  echo json_encode(array('date'=>'API Resource Data!!'));
12
}
13
catch(\Auth0\SDK\Exception\CoreException $e) {
14
  throw $e;
15
  echo json_encode(array('error'=>$e->getMessage()));
16
}

Der {SIGNING_ALGORITHM}sollte durch den Wert des Signing Algorithm-Felds unter APIs> {YOUR API APPLICATION}> Settings ersetzt werden.

So können Sie Ihre benutzerdefinierten APIs schützen, wenn Sie den OAuth2-Flow im Auth0-Service verwenden möchten.

Fazit

Heute haben wir den Auth0-Dienst durchlaufen, der Authentifizierung und Autorisierung als Dienst bereitstellt. Nach der Einführung des Auth0-Dienstes haben wir anhand einiger praktischer Beispiele gezeigt, wie Sie es in Ihre PHP-Anwendungen integrieren können.

Bitte zögern Sie nicht, Ihre Vorschläge und Fragen mit dem unten stehenden Feed zu posten!