OAUTHは、サードパーティのアプリケーションがユーザーのリソースに安全にアクセスできるようにするオープンな標準です。 OAUTH2では、承認コード認証は最も一般的な認証タイプです。この記事では、安全で信頼できるユーザー認証を実現するのに役立つPHPで認証コード認証サーバーを構築する方法を詳細に紹介します。
承認コードの許可プロセスは次のとおりです。
まず、人気のある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)){ 出口(' <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> '); } $ is_authorized =($ _post ['username'] == 'admin' && $ _post ['password'] == 'admin'); $ server-> handleauthorizerequest($ request、$ response、$ is_authorized); if($ is_authorized){ $ response-> send(); } それ以外 { echo '認めるが失敗しました'; }
次に、クライアント情報を保存するためのデータベーステーブルを作成する必要があります。 MySQLで次のSQLステートメントを実行します。
テーブルを作成します `oauth_clients`( `client_id` varchar(80)collate utf8_unicode_ci not null、 `client_secret` varchar(80)collate utf8_unicode_ci not null、 `redirect_uri` varchar(2000)collate utf8_unicode_ci not null default ''、 `grant_types` varchar(80)collate utf8_unicode_ciデフォルトnull、 `scope` varchar(100)collate utf8_unicode_ciデフォルトnull、 `user_id` varchar(80)collate 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を使用すると、アプリケーションの安全な承認プロセスを実装し、ユーザーデータのプライバシーを保護できます。