PHP と OAuth: OpenID Connect を使用した統合 ID 認証の実現
Web アプリケーションの台頭により、ユーザーは複数のプラットフォームにログインする必要があり、これらのプラットフォームでは多くの場合、ユーザーに提供するために異なる ID 認証方法が使用されます。それはいくつかの問題を引き起こしました。この問題を解決するために、OAuth と OpenID Connect が一般的なソリューションになりました。
OAuth は、サードパーティのアプリケーションが保護されたリソースにアクセスすることをユーザーが承認するメカニズムである承認フレームワークです。 OpenID Connect は OAuth 2.0 認証プロトコルに基づいており、統合された ID 認証ソリューションを提供します。
この記事では、PHP と OpenID Connect を使用して統合 ID 認証を実装する方法を紹介します。
始める前に、PHP OpenID Connect ライブラリをインストールする必要があります。これを実現するには、「PHP League OAuth2 Client」ライブラリを使用します。
Composer コマンドを使用してインストールします:
composer require league/oauth2-client
まず、アプリケーションを OpenID Connect サーバーに登録して、必要なクライアント ID とクライアント シークレット。通常、認可サーバーが使用するアプリケーションのリダイレクト 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 で適切なルート ハンドラーを構成します。
ユーザーが認可サーバーで認証に成功すると、アプリケーションにリダイレクトされ、認可コードがクエリ パラメータとして渡されます。
次のコード例は、OpenID Connect ライブラリを使用してアクセス トークンとユーザー情報を取得する方法を示しています。
$code = $_GET['code']; $token = $provider->getAccessToken('authorization_code', [ 'code' => $code ]); // 通过访问令牌获取用户信息 $userinfo = $provider->getResourceOwner($token)->toArray(); // 打印用户信息 var_dump($userinfo);
この例を通じて、ユーザー名などのユーザーの基本情報を取得できます。メールなど
アクセス トークンを取得したら、それを使用してリソースを保護できます。
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 サイトの他の関連記事を参照してください。