現在の位置: ホーム> 最新記事一覧> PHP OAuth2認証:認証コード認証サーバーの構築に関する完全なガイド

PHP OAuth2認証:認証コード認証サーバーの構築に関する完全なガイド

M66 2025-06-21

PHP OAUTH2認可:認証コード認証サーバーを構築するための完全なガイド

OAUTHは、サードパーティのアプリケーションがユーザーのリソースに安全にアクセスできるようにするオープンな標準です。 OAUTH2では、承認コード認証は最も一般的な認証タイプです。この記事では、安全で信頼できるユーザー認証を実現するのに役立つPHPで認証コード認証サーバーを構築する方法を詳細に紹介します。

OAUTH2認証コードプロセスの概要

承認コードの許可プロセスは次のとおりです。

  1. クライアントは、承認サーバーへの承認要求を開始します。
  2. Authorization Serverは、ユーザーのIDを検証し、ユーザー認証を要求します。
  3. ユーザーが承認に同意した後、承認サーバーはクライアントに承認コードを発行します。
  4. クライアントは、承認コード、クライアントID、クライアントキーなどの情報を使用して、承認サーバーからアクセストークンを要求します。
  5. Authorization Serverは情報を検証し、問題にアクセスします。
  6. クライアントは、アクセストークンを使用してリソースサーバーにアクセスしてユーザーのリソースを取得します。

PHP OAuth2ライブラリをインストールします

まず、人気のあるPHP OAuth2ライブラリをインストールします。ライブラリ「bshaffer/oauth2-server-php」を使用します。これは、作曲家を介してインストールできます。

作曲家には、Bshaffer/OAuth2-Server-PHPが必要です

承認サーバーを作成します

次に、承認コード認証サーバーとしてPHPで `index.php`ファイルを作成します。

<?php
require_once 'vendor/autoload.php';

// 作成する PDO インスタンス接続データベース
$dsn = "mysql:dbname=testdb;host=localhost";
$username = "root";
$password = "";
$pdo = new PDO($dsn, $username, $password);

// 作成する OAuth2 リポジトリインスタンス
$storage = new OAuth2StoragePdo($pdo);

// 作成する授权服务器实例
$server = new OAuth2Server($storage);

// サポートされている認めるタイプを追加します
$server-> addgrantType(new oauth2granttypeauthorizationCode($ stray));

//プロセス要件を認めます$ request = oauth2request :: createfromglobals();
$ response = new oauth2response();

if(!$ server-> validateauthorizerequest($ request、$ response)){
    $ response-> send();
    die();
}

//認めるページを急行if(empty($ _ post)){
    出口(&#39;
        <form method="post">
            <label for="username">ユーザー名前:</label>
            <input type="text" id="username" name="username"><br><br>
            <label for="password">パスワード:</label>
            <input type="password" id="password" name="password"><br><br>
            <input type="submit" value="ライセンス">
        </form>
    &#39;);
}

$ is_authorized =($ _post [&#39;username&#39;] == &#39;admin&#39; && $ _post [&#39;password&#39;] == &#39;admin&#39;);

$ server-> handleauthorizerequest($ request、$ response、$ is_authorized);

if($ is_authorized){
    $ response-> send();
} それ以外 {
    echo &#39;認めるが失敗しました&#39;;
}

データベーステーブルを作成します

次に、クライアント情報を保存するためのデータベーステーブルを作成する必要があります。 MySQLで次のSQLステートメントを実行します。

テーブルを作成します `oauth_clients`(
    `client_id` varchar(80)collat​​e utf8_unicode_ci not null、
    `client_secret` varchar(80)collat​​e utf8_unicode_ci not null、
    `redirect_uri` varchar(2000)collat​​e utf8_unicode_ci not null default &#39;&#39;、
    `grant_types` varchar(80)collat​​e utf8_unicode_ciデフォルトnull、
    `scope` varchar(100)collat​​e utf8_unicode_ciデフォルトnull、
    `user_id` varchar(80)collat​​e utf8_unicode_ciデフォルトnull、
    ホストキー( `client_id`)
);
  

認証コード認証プロセスをテストします

承認するには、次のURLにアクセスしてください。

http://localhost/index.php?response_type = code&client_id = your_client_id&redirect_uri = your_redirect_uri&scope = scope
  

承認ページ(たとえば、ユーザー名とパスワードは「管理者」)にユーザー名とパスワードを入力し、承認コードが返されます。ユーザーの認証が成功した場合、サーバーは承認コードを返します。

アクセストークンをリクエストします

Curlまたは他のHTTPクライアントを介して、取得した認証コードを使用してアクセストークンを要求します。

curl -x post -d "grant_type = autherization_code&code = authorization_code&client_id = your_client_id&client_secret = your_client_secret&redirect_uri = your_redirect_uri" http://localhost/token.php
  

承認コード、クライアントID、クライアントキーを置き換え、URIを実際の値にリダイレクトします。リクエストが成功した場合、アクセストークンが表示されます。

要約します

上記は、PHPで承認コード認証サーバーを作成する方法の完全なプロセスです。 OAUTH2を使用すると、アプリケーションの安全な承認プロセスを実装し、ユーザーデータのプライバシーを保護できます。