ホームページ  >  記事  >  バックエンド開発  >  PHP と OAuth: OpenID Connect を使用して統合 ID 認証を実現する

PHP と OAuth: OpenID Connect を使用して統合 ID 認証を実現する

PHPz
PHPzオリジナル
2023-07-29 12:17:30880ブラウズ

PHP と OAuth: OpenID Connect を使用した統合 ID 認証の実現

Web アプリケーションの台頭により、ユーザーは複数のプラットフォームにログインする必要があり、これらのプラットフォームでは多くの場合、ユーザーに提供するために異なる ID 認証方法が使用されます。それはいくつかの問題を引き起こしました。この問題を解決するために、OAuth と OpenID Connect が一般的なソリューションになりました。

OAuth は、サードパーティのアプリケーションが保護されたリソースにアクセスすることをユーザーが承認するメカニズムである承認フレームワークです。 OpenID Connect は OAuth 2.0 認証プロトコルに基づいており、統合された ID 認証ソリューションを提供します。

この記事では、PHP と OpenID Connect を使用して統合 ID 認証を実装する方法を紹介します。

  1. 依存ライブラリのインストール

始める前に、PHP OpenID Connect ライブラリをインストールする必要があります。これを実現するには、「PHP League OAuth2 Client」ライブラリを使用します。

Composer コマンドを使用してインストールします:

composer require league/oauth2-client
  1. アプリケーションを登録します

まず、アプリケーションを OpenID Connect サーバーに登録して、必要なクライアント ID とクライアント シークレット。通常、認可サーバーが使用するアプリケーションのリダイレクト 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 を使用して統合 ID 認証を実現する基本的なプロセスです。 OAuth と OpenID Connect を通じて、さまざまなプラットフォームでのユーザー ログイン プロセスを簡素化し、より良いユーザー エクスペリエンスを提供できます。

この記事では基本的なサンプル コードをいくつか紹介しますが、ID 認証を実装する場合は、エラー処理やセッション管理なども考慮する必要があります。特定のニーズに応じて、サンプル コードの変更や拡張が必要になる場合があります。

概要

OpenID Connect は、OAuth を使用して統合 ID 認証を実現する方法を提供します。 Web アプリケーションを開発するときは、ユーザー ログインの数を減らし、より良いユーザー エクスペリエンスを提供するために OpenID Connect の使用を検討してください。

上記のサンプル コードを通じて、PHP と OpenID Connect を使用して統合 ID 認証を実装する方法を理解し、コードについて簡単に説明します。実際のプロジェクトでは、ニーズに応じてさらに開発や調整を行う必要があります。

以上がPHP と OAuth: OpenID Connect を使用して統合 ID 認証を実現するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。