>  기사  >  백엔드 개발  >  PHP를 사용하여 OAuth2 기반의 타사 인증 및 인증 구현

PHP를 사용하여 OAuth2 기반의 타사 인증 및 인증 구현

WBOY
WBOY원래의
2023-08-08 10:53:051131검색

PHP를 사용하여 OAuth2 기반의 타사 인증 및 인증 구현

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 객체를 생성하고 관련 구성 정보를 전달해야 합니다. 그 중 clientIdclientSecret는 인증 서버에서 제공하는 애플리케이션 ID와 비밀 키입니다. redirectUri는 사용자가 인증을 완료한 후 리디렉션되는 주소입니다. ; urlAuthorize는 인증 서버의 인증 주소이고, urlAccessToken은 인증 서버의 토큰 획득 주소입니다. 사용자 정보. GenericProvider对象,需要传入相关的配置信息。其中,clientIdclientSecret是由授权服务器提供的应用程序标识和秘钥;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 기반의 타사 인증 및 인증을 구현하기 위한 샘플 코드입니다. 이러한 코드를 통해 우리는 사용자 인증 로그인을 구현하고 인증된 사용자 정보를 얻을 수 있습니다.
  1. 이것은 OAuth2의 간단한 예일 뿐이라는 점에 유의해야 합니다. 실제 애플리케이션은 오류 및 예외뿐만 아니라 더 많은 인증 프로세스도 처리해야 합니다. 개발자는 특정 요구 사항에 따라 적절한 수정 및 확장을 수행해야 합니다.
참조: 🎜🎜🎜League OAuth2 클라이언트: https://github.com/thephpleague/oauth2-client🎜🎜

위 내용은 PHP를 사용하여 OAuth2 기반의 타사 인증 및 인증 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.