>백엔드 개발 >PHP 튜토리얼 >PHP 및 OAuth: OpenID Connect를 사용하여 통합 ID 인증 달성

PHP 및 OAuth: OpenID Connect를 사용하여 통합 ID 인증 달성

PHPz
PHPz원래의
2023-07-29 12:17:30974검색

PHP 및 OAuth: OpenID Connect를 사용하여 통합 ID 인증 달성

웹 애플리케이션이 증가함에 따라 사용자는 여러 플랫폼에 로그인해야 하며 이러한 플랫폼은 종종 서로 다른 ID 인증 방법을 사용하므로 사용자에게 특정 문제를 야기합니다. 이 문제를 해결하기 위해 OAuth와 OpenID Connect가 일반적인 솔루션이 되었습니다.

OAuth는 사용자가 보호된 리소스에 액세스하기 위해 타사 애플리케이션을 인증하는 데 사용하는 메커니즘인 인증 프레임워크입니다. OpenID Connect는 OAuth 2.0 인증 프로토콜을 기반으로 하며 통합 ID 인증 솔루션을 제공합니다.

이 글에서는 PHP와 OpenID Connect를 사용하여 통합 ID 인증을 구현하는 방법을 소개합니다.

  1. 종속 라이브러리 설치

시작하기 전에 PHP OpenID Connect 라이브러리를 설치해야 합니다. 이를 달성하기 위해 "PHP League OAuth2 클라이언트" 라이브러리를 사용할 수 있습니다.

Composer 명령을 사용하여 설치:

composer require league/oauth2-client
  1. 앱 등록

먼저 필요한 클라이언트 ID와 클라이언트 비밀번호를 얻으려면 OpenID Connect 서버에 앱을 등록해야 합니다. 일반적으로 인증 서버에서 사용할 애플리케이션의 리디렉션 URL을 제공해야 합니다.

  1. 인증 URL 생성

다음으로 인증을 위해 사용자를 인증 서버로 리디렉션하는 URL을 생성해야 합니다. 클라이언트 ID, 리디렉션 URL, 획득할 권한 범위를 지정해야 합니다.

use LeagueOAuth2ClientProviderGenericProvider;

$provider = new GenericProvider([
    'clientId'                => 'yourClientId',
    'clientSecret'            => 'yourClientSecret',
    'redirectUri'             => 'http://your-app/callback-url',
    'urlAuthorize'            => 'https://openid-provider.com/authorize',
    'urlAccessToken'          => 'https://openid-provider.com/token',
    'urlResourceOwnerDetails' => 'https://openid-provider.com/userinfo'
]);

$authUrl = $provider->getAuthorizationUrl([
    'scope' => ['openid', 'profile', 'email']
]);

// 将$authUrl重定向到用户进行认证

사용자가 인증한 후 앱으로 다시 리디렉션되도록 리디렉션 URL에 적절한 경로 처리기를 구성하세요.

  1. 콜백 처리

사용자가 승인 서버에서 성공적으로 인증한 후에는 애플리케이션으로 다시 리디렉션되고 승인 코드가 쿼리 매개변수로 전달됩니다.

다음 코드 예제에서는 OpenID Connect 라이브러리를 사용하여 액세스 토큰 및 사용자 정보를 얻는 방법을 보여줍니다.

$code = $_GET['code'];

$token = $provider->getAccessToken('authorization_code', [
    'code' => $code
]);

// 通过访问令牌获取用户信息
$userinfo = $provider->getResourceOwner($token)->toArray();

// 打印用户信息
var_dump($userinfo);

이 예제를 통해 사용자 이름, 이메일 등과 같은 사용자의 기본 정보를 얻을 수 있습니다.

  1. 리소스 보안

액세스 토큰을 획득하면 이를 사용하여 리소스를 보호할 수 있습니다.

use LeagueOAuth2ClientProviderGenericProvider;

$provider = new GenericProvider([
    'clientId'                => 'yourClientId',
    'clientSecret'            => 'yourClientSecret',
    'redirectUri'             => 'http://your-app/callback-url',
    'urlAuthorize'            => 'https://openid-provider.com/authorize',
    'urlAccessToken'          => 'https://openid-provider.com/token',
    'urlResourceOwnerDetails' => 'https://openid-provider.com/userinfo'
]);

// 刷新访问令牌
$refreshToken = 'yourRefreshToken';
$newToken = $provider->getAccessToken('refresh_token', [
    'refresh_token' => $refreshToken,
]);

// 使用访问令牌访问保护资源
$response = $provider->getAuthenticatedRequest(
    'GET',
    'https://api.example.com/resource',
    $newToken
);

// 处理响应

위는 PHP와 OpenID Connect를 사용하여 통합 신원 인증을 달성하는 기본 프로세스입니다. OAuth 및 OpenID Connect를 통해 다양한 플랫폼에서 사용자 로그인 프로세스를 단순화하고 더 나은 사용자 경험을 제공할 수 있습니다.

이 글에서는 몇 가지 기본적인 샘플 코드를 제공하지만 신원 인증을 구현할 때 오류 처리, 세션 관리 등도 고려해야 합니다. 특정 요구 사항에 따라 샘플 코드를 변경하고 확장해야 할 수도 있습니다.

요약

OpenID Connect는 OAuth를 사용하여 통합 ID 인증을 달성하는 방법을 제공합니다. 웹 애플리케이션을 개발할 때 OpenID Connect를 사용하여 사용자 로그인 수를 줄이고 더 나은 사용자 경험을 제공하는 것을 고려하십시오.

위의 샘플 코드를 통해 PHP와 OpenID Connect를 사용하여 통합 ID 인증을 구현하는 방법을 이해할 수 있으며 코드에 대한 간략한 설명을 제공합니다. 실제 프로젝트에서는 여전히 특정 요구에 따라 추가 개발과 조정을 수행해야 합니다.

위 내용은 PHP 및 OAuth: OpenID Connect를 사용하여 통합 ID 인증 달성의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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