현재 위치: > 최신 기사 목록> PHP OAUTH2 승인 : 권한 부여 코드 권한 부여 서버 구축에 대한 완전한 안내서

PHP OAUTH2 승인 : 권한 부여 코드 권한 부여 서버 구축에 대한 완전한 안내서

M66 2025-06-21

PHP OAUTH2 승인 : 권한 부여 코드 권한 부여 서버 구축에 대한 완전한 안내서

OAUTH는 타사 응용 프로그램이 사용자의 리소스에 안전하게 액세스 할 수있는 공개 표준입니다. OAUTH2에서 승인 코드 승인이 가장 일반적인 권한 부여 유형입니다. 이 기사는 안전하고 신뢰할 수있는 사용자 인증을 달성 할 수 있도록 PHP에서 권한 부여 코드 권한 부여 서버를 구축하는 방법을 자세히 소개합니다.

OAUTH2 권한 부여 코드 프로세스 개요

권한 부여 코드의 승인 프로세스는 다음과 같습니다.

  1. 클라이언트는 인증 서버에 권한 부여 요청을 시작합니다.
  2. 인증 서버는 사용자의 신원을 확인하고 사용자 승인을 요청합니다.
  3. 사용자가 권한 부여에 동의 한 후, 인증 서버는 클라이언트에게 인증 코드를 발행합니다.
  4. 클라이언트는 인증 코드, 클라이언트 ID 및 클라이언트 키와 같은 정보를 사용하여 권한 부여 서버의 액세스 토큰을 요청합니다.
  5. 인증 서버는 정보 및 문제 액세스 토큰을 확인합니다.
  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 ($ stoage));

// 프로세스 승인 요청 $ request = oauth2request :: createfromglobals ();
$ response = new Oauth2Response ();

if (! $ server-> validAuthorizeRequest ($ request, $ responsk)) {
    $ response-> send ();
    주사위();
}

// 인증 페이지 표시 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 ();
} 또 다른 {
    에코 &#39;승인 실패&#39;;
}

데이터베이스 테이블을 만듭니다

이제 클라이언트 정보를 저장하기위한 데이터베이스 테이블을 작성해야합니다. MySQL에서 다음 SQL 문을 실행하십시오.

테이블 만들기`oauth_clients` (
    `client_id` varchar (80)는 utf8_unicode_ci not null,
    `client_secret` varchar (80)는 utf8_unicode_ci not null,
    `redirect_uri` varchar (2000)는 utf8_unicode_ci not null default &#39;&#39;,
    `grant_types` varchar (80)는 UTF8_UNICODE_CI DEFAULT NULL,
    `scope` varchar (100)는 UTF8_UNICODE_CI 기본 NULL,
    `user_id` varchar (80)는 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
  

권한 부여 페이지에 사용자 이름과 암호를 입력하십시오 (예 : 사용자 이름과 암호는 모두 "admin"입니다). 인증 코드가 반환됩니다. 사용자의 인증이 성공하면 서버는 인증 코드를 반환합니다.

액세스 토큰을 요청하십시오

CURL 또는 기타 HTTP 클라이언트를 통해 얻은 승인 코드를 사용하여 액세스 토큰을 요청하십시오.

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

권한 부여 코드, 클라이언트 ID, 클라이언트 키 및 URI를 실제 값으로 바꾸십시오. 요청이 성공하면 액세스 토큰을 얻게됩니다.

요약

위는 PHP에서 권한 부여 코드 인증 서버를 만드는 방법의 완전한 프로세스입니다. OAUTH2를 사용하면 응용 프로그램에 대한 보안 승인 프로세스를 구현하고 사용자 데이터 개인 정보를 보호 할 수 있습니다.