PHP의 OAuth: 인증 코드 인증 서버 만들기
OAuth는 타사 애플리케이션이 사용자 리소스에 액세스하도록 인증하기 위한 개방형 표준입니다. 이는 사용자를 리소스 서버로부터 격리하고 보다 안전하고 안정적인 인증 프로세스를 구현하는 HTTP 프로토콜을 기반으로 구축되었습니다. 이 기사에서는 PHP에서 인증 코드 인증 서버를 만드는 방법을 소개합니다.
인증 코드 인증은 OAuth2에서 가장 일반적으로 사용되는 인증 유형입니다. 해당 작업 흐름은 다음과 같습니다.
먼저 "bshaffer/oauth2-server-php"와 같은 인기 있는 PHP OAuth2 라이브러리를 설치해야 합니다. 이 라이브러리는 Composer를 사용하여 프로젝트에 추가할 수 있습니다.
composer require bshaffer/oauth2-server-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); // 创建一个存储库实例 $storage = new OAuth2StoragePdo($pdo); // 创建一个授权服务器实例 $server = new OAuth2Server($storage); // 添加支持的授权类型 $server->addGrantType(new OAuth2GrantTypeAuthorizationCode($storage)); // 处理授权请求 $request = OAuth2Request::createFromGlobals(); $response = new OAuth2Response(); if (!$server->validateAuthorizeRequest($request, $response)) { $response->send(); die; } // 显示授权页面 if (empty($_POST)) { exit(' <form method="post"> <label for="username">Username:</label> <input type="text" id="username" name="username"><br><br> <label for="password">Password:</label> <input type="password" id="password" name="password"><br><br> <input type="submit" value="Authorize"> </form> '); } // 处理授权请求 $is_authorized = ($_POST['username'] == 'admin' && $_POST['password'] == 'admin'); $server->handleAuthorizeRequest($request, $response, $is_authorized); if ($is_authorized) { $response->send(); } else { echo '授权失败'; }
다음으로 클라이언트 정보를 저장할 데이터베이스 테이블을 생성해야 합니다. MySQL 데이터베이스에서 다음 SQL 문을 실행합니다.
CREATE TABLE `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 DEFAULT NULL, `scope` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, `user_id` varchar(80) COLLATE utf8_unicode_ci DEFAULT NULL, PRIMARY KEY (`client_id`) );
이제 테스트용 인증 코드를 사용하여 서버에 권한을 부여할 수 있습니다.
브라우저에서 http://localhost/index.php?response_type=code&client_id=YOUR_CLIENT_ID&redirect_uri=YOUR_REDIRECT_URI&scope=SCOPE
를 방문하고 YOUR_CLIENT_ID
를 클라이언트 ID로 바꾸고 YOUR_REDIRECT_URI
를 리디렉션 URI로 바꾸고 SCOPE
를 액세스하려는 리소스 범위로 바꿉니다. http://localhost/index.php?response_type=code&client_id=YOUR_CLIENT_ID&redirect_uri=YOUR_REDIRECT_URI&scope=SCOPE
,将 YOUR_CLIENT_ID
替换为你的客户端ID,YOUR_REDIRECT_URI
替换为你的重定向URI,SCOPE
替换为你想要访问的资源范围。
授权服务器将要求你输入用户名和密码。在本例中,用户名和密码均为 "admin"。输入正确的用户名和密码后,将会收到一个授权码作为响应。
接下来,我们可以使用授权码向授权服务器请求访问令牌。使用curl或其他HTTP客户端发出以下请求:
curl -X POST -d "grant_type=authorization_code&code=AUTHORIZATION_CODE&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET&redirect_uri=YOUR_REDIRECT_URI" http://localhost/token.php
将 AUTHORIZATION_CODE
替换为收到的授权码,YOUR_CLIENT_ID
、YOUR_CLIENT_SECRET
和 YOUR_REDIRECT_URI
rrreee
AUTHORIZATION_CODE
를 받은 승인 코드인 YOUR_CLIENT_ID
, YOUR_CLIENT_SECRET
및 YOUR_REDIRECT_URI를 클라이언트 ID, 클라이언트 비밀번호 및 리디렉션 URI로 바꾸세요. 🎜🎜모든 것이 정상이라면 이에 대한 응답으로 액세스 토큰을 받게 됩니다. 🎜🎜위는 PHP에서 인증 코드 인증 서버를 생성하는 세부 단계입니다. OAuth를 사용하면 보다 안전하고 안정적인 인증 프로세스를 제공하여 사용자 데이터와 개인정보를 보호할 수 있습니다. 이 글이 OAuth 인증을 이해하고 사용하는 데 도움이 되기를 바랍니다. 🎜위 내용은 PHP의 OAuth: 인증 코드 인증 서버 생성의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!