ホームページ >バックエンド開発 >PHPチュートリアル >PHP で API 認証に OpenID Connect を使用する方法

PHP で API 認証に OpenID Connect を使用する方法

WBOY
WBOYオリジナル
2023-06-17 19:33:081264ブラウズ

今日のデジタル時代では、API 認証は技術的手段として広く使用されています。 API 情報を安全に保つために、多くの Web サイトやアプリケーションは認証に OpenID Connect プロトコルを使用します。このプロトコルを使用すると、サードパーティの ID プロバイダー (IdP) を使用してユーザーを認証し、ID トークンとアクセス トークンを交換する機能を API に提供できます。この記事では、PHP で API 認証に OpenID Connect を使用する方法を説明します。

  1. PHP 開発パッケージのインストール

まず、アプリケーションで OpenID Connect API を使用するには、OpenID Connect の関連する PHP 開発パッケージを PHP プロジェクトにインストールする必要があります。 Composer Action Manager を使用する場合は、プロジェクトのルート ディレクトリで次のコマンドを実行してダウンロードしてインストールします:

composer require php-openid/php-openid-connect

それを使用しない場合Composer を使用すると、GitHub から OpenID Connect PHP パッケージをダウンロードしてプロジェクト ディレクトリに配置することで、手動でインストールできます。

  1. アプリケーションの登録

OpenID Connect プロトコルの使用を開始するには、選択したプロバイダーにアプリケーションを登録し、クライアント ID とクライアント シークレットを取得する必要があります。登録プロセスは使用するプロバイダーによって異なる場合がありますが、ほとんどのプロバイダーの登録は OAuth2 仕様に基づいて設定されています。

  1. 認証コードの書き込み

OpenID Connect パッケージを PHP プロジェクトにインストールし、アプリケーションを登録したら、認証コードの書き込みを開始できます。

この例では、オープン ID プロバイダーとして Auth0 を使用します。まず、クライアント ID とクライアント シークレットを入力して構成オプションを設定する必要があります:

require_once "vendor/autoload.php";

$config = [
    'auth0' => [
        'domain' => 'YOUR_AUTH0_DOMAIN',
        'client_id' => 'YOUR_AUTH0_CLIENT_ID',
        'client_secret' => 'YOUR_AUTH0_CLIENT_SECRET',
        'redirect_uri' => 'YOUR_AUTH0_REDIRECT_URI',
        'scope' => 'openid profile email'
    ]
];

次に、認証オブジェクトを作成し、認証 URL を構築する必要があります:

$auth0 = new Auth0SDKAuth0($config['auth0']);
$auth_url = $auth0->get_login_url();

これにより、認証のために資格情報を入力する必要があるログイン ページをユーザーに表示します。ユーザーが認証されると、リダイレクト URI を設定することによって、コードは指定された URI にリダイレクトされます。

次に、認証コードを取得してアクセス トークンを取得する必要があります:

$auth0 = new Auth0SDKAuth0($config['auth0']);
$access_token = $auth0->get_access_token();

この時点で、認証は正常に完了し、OpenID Connect 交換サービスからアクセス トークンを取得しました。これで、このアクセス トークンを使用して、保護された API エンドポイントにアクセスし、それを使用してユーザー リクエストを承認できるようになります。

  1. アクセス トークンを使用して API にアクセスする

取得したアクセス トークンを使用して、保護された API エンドポイントにリクエストを送信し、関連するデータやリソースにアクセスできます。

$auth0 = new Auth0SDKAuth0($config['auth0']);
$access_token = $auth0->get_access_token();

$api_url = "https://example.com/api/protected-endpoint";

$curl = curl_init();
curl_setopt_array($curl, array(
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_URL => $api_url,
    CURLOPT_HTTPHEADER => array(
        'Authorization: Bearer ' . $access_token,
        'Content-Type: application/json'
    )
));
$response = curl_exec($curl);
curl_close($curl);

echo $response;

上記の例では、cURL を使用して GET リクエストを作成し、取得したアクセス トークンを使用して API エンドポイントにアクセスします。リクエスト ヘッダーに Authorization ヘッダーを設定し、アクセス トークンで Bearer トークン タイプを使用していることに注意してください。

結論

OAuth 2.0 と OpenID Connect プロトコルを使用すると、PHP での API 認証の実装は問題なくなります。上記の手順とコード例に正しく従うことで、アプリケーションと API エンドポイントが認証の点で安全で信頼できるものであることを確認できます。

以上がPHP で API 認証に OpenID Connect を使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。