PHP를 사용하여 OAuth2 기반 제3자 인증 및 인증 구현
OAuth2는 제3자 애플리케이션이 인증을 위해 사용자 리소스에 액세스할 수 있도록 권한을 부여하는 데 사용되는 개방형 표준 프로토콜입니다. 간단하고 안전하며 유연하며 다양한 웹 애플리케이션과 모바일 애플리케이션에서 널리 사용됩니다.
PHP에서는 타사 라이브러리를 사용하여 OAuth2 인증 및 인증을 구현할 수 있습니다. 이 기사에서는 샘플 코드를 결합하여 PHP를 사용하여 OAuth2를 기반으로 제3자 인증 및 인증을 구현하는 방법을 소개합니다.
먼저 Composer를 사용하여 OAuth2 PHP 라이브러리를 설치해야 합니다. 명령줄에서 다음 명령을 실행하세요.
composer require league/oauth2-client
설치가 완료된 후 다음 코드 조각을 사용하여 OAuth2 인증 프로세스를 구현할 수 있습니다.
<?php require 'vendor/autoload.php'; use LeagueOAuth2ClientProviderGenericProvider; $provider = new GenericProvider([ 'clientId' => 'your_client_id', 'clientSecret' => 'your_client_secret', 'redirectUri' => 'http://localhost/callback.php', 'urlAuthorize' => 'https://authorization-server.com/auth', 'urlAccessToken' => 'https://authorization-server.com/token', 'urlResourceOwnerDetails' => 'https://api.server.com/userinfo' ]); // 获取授权地址 $authorizationUrl = $provider->getAuthorizationUrl(); // 将授权地址重定向到用户 header('Location: ' . $authorizationUrl);
위 코드에서는 먼저 GenericProvider
객체를 생성하고 관련 구성 정보를 전달해야 합니다. 그 중 clientId
와 clientSecret
는 인증 서버에서 제공하는 애플리케이션 ID와 비밀 키입니다. redirectUri
는 사용자가 인증을 완료한 후 리디렉션되는 주소입니다. ; urlAuthorize
는 인증 서버의 인증 주소이고, urlAccessToken
은 인증 서버의 토큰 획득 주소입니다. 사용자 정보. GenericProvider
对象,需要传入相关的配置信息。其中,clientId
和clientSecret
是由授权服务器提供的应用程序标识和秘钥;redirectUri
是用户完成授权后重定向的地址;urlAuthorize
是授权服务器的授权地址;urlAccessToken
是授权服务器的令牌获取地址;urlResourceOwnerDetails
是获取用户信息的接口地址。
接下来,我们使用getAuthorizationUrl
方法获取授权地址,然后将其重定向给用户。用户将通过授权地址进行登录并授权,然后将被重定向回我们提供的redirectUri
地址。
我们还需要创建一个回调页面callback.php
来处理用户完成授权后的重定向。以下是callback.php
的代码示例:
<?php require 'vendor/autoload.php'; use LeagueOAuth2ClientProviderGenericProvider; $provider = new GenericProvider([ 'clientId' => 'your_client_id', 'clientSecret' => 'your_client_secret', 'redirectUri' => 'http://localhost/callback.php', 'urlAuthorize' => 'https://authorization-server.com/auth', 'urlAccessToken' => 'https://authorization-server.com/token', 'urlResourceOwnerDetails' => 'https://api.server.com/userinfo' ]); // 获取令牌 $token = $provider->getAccessToken('authorization_code', [ 'code' => $_GET['code'] ]); // 使用令牌获取用户信息 $user = $provider->getResourceOwner($token); // 输出用户信息 echo 'User ID: ' . $user->getId() . '<br>'; echo 'User Name: ' . $user->getName() . '<br>';
在callback.php
中,我们通过getAccessToken
方法获取用户授权后返回的令牌,然后使用这个令牌通过getResourceOwner
getAuthorizationUrl
메소드를 사용하여 인증 주소를 가져온 다음 이를 사용자에게 리디렉션합니다. 사용자는 승인 주소를 통해 로그인하고 승인한 후 우리가 제공하는 redirectUri
주소로 다시 리디렉션됩니다. 또한 사용자가 인증을 완료한 후 리디렉션을 처리하기 위해 콜백 페이지 callback.php
를 생성해야 합니다. 다음은 callback.php
의 코드 예입니다. rrreee
callback.php
에서는 getAccessToken
을 통해 사용자 승인 후 반환된 토큰을 얻습니다. > 메소드 토큰을 가져온 다음 이 토큰을 사용하여 getResourceOwner
메소드를 통해 사용자 정보를 얻습니다. 위는 PHP를 사용하여 OAuth2 기반의 타사 인증 및 인증을 구현하기 위한 샘플 코드입니다. 이러한 코드를 통해 우리는 사용자 인증 로그인을 구현하고 인증된 사용자 정보를 얻을 수 있습니다. 위 내용은 PHP를 사용하여 OAuth2 기반의 타사 인증 및 인증 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!