OAuth2.0 プロトコルと PHP アクセスの概要

安安杰尼
リリース: 2020-05-16 08:59:59
オリジナル
498 人が閲覧しました

OAuth2.0 の概要

OAuth (Open Authorization) は、ユーザーのアカウントとパスワードを第三者に伝えることなく、ユーザー情報を第三者に許可する安全なオープン標準プロトコルです。プロトコルの詳細については、RFC 6749を参照してください。

このプロトコルにおける最も古典的な認証コード モードの簡単な説明から始めましょう。 導入は次のとおりです:

OAuth2.0 プロトコルと PHP アクセスの概要

上記のプロセスには 4 つの役割があることを説明しましょう。

  1. ResourceOwner はリソース所有者、つまりユーザー自身です

  2. User-Agent はアプリケーションへのアクセスに使用するブラウザです

  3. Client はサードパーティのサービスです

  4. AuthorizationServer は認証サーバー。ユーザー リソースのプロバイダーとして理解できます。

その後、呼び出しプロセスは次のようになります:

  1. ユーザーはブラウザを通じてクライアントのサードパーティ サービスにアクセスし、クライアントは OAuth2 リンクを構築します (パラメーターには、現在のサードパーティ サービスの ID ID、とリダイレクトURI)、ユーザーを認証サーバーの認可ページに誘導します

  2. このとき、ユーザーはブラウザ上で認可に同意するかどうかを選択します

  3. ユーザーが認可に同意した場合、認証サーバーは、最初の手順で指定したリダイレクト URI にユーザーをリダイレクトします。同時に、認可コード コードを添付します

  4. サードパーティ サービスは認可コードを受け取り、認可コード ソースのリダイレクト URI を取得します。そして認証サーバーに証明書を申請します。

  5. 認証サーバーは認可コードとリダイレクトURIの正当性をチェックし、それを渡した後にAccessToken(呼び出し認証情報)を発行します

dとeはサーバー側で実行されるため経由する必要はありませんブラウザ

OAuth2の設計

OAuth2.0 プロトコルと PHP アクセスの概要

1. 認可されたログインリンクの構築

まず、ユーザーがアプリケーションにアクセスすると、フロントエンドはサーバーのインターフェースを呼び出し、サーバーはユーザーがログインしていないことを検出します。 、この時点で認可リンクを構築します。

$redirect_uri = 'https://test.xx.ccom/index';
$this->goUrl('https://auth.xx.com/connect/oauth2/authorize?appid=xxx&redirect_uri='.$redirect_uri);
ログイン後にコピー

リンクをフロントエンドに返し、フロントエンドはリンクに直接ジャンプします。次に、https://auth.xx.com/connect/oauth2/authorize

認証に同意するかどうかを尋ねるページが表示されます。ユーザーは「Authorize」をクリックします。このとき、認証サーバーは redirect_uri に直接リダイレクトされます。コードパラメータ。サーバーは、このコード パラメーターを受信すると、このパラメーターを使用して認証サーバーにアクセスし、access_token を取得します。

$code = $_GET['code'];
$res = file_get_contents('.$code );
$access_token = $res['access_token'];
ログイン後にコピー

その後、サーバーはユーザー情報と引き換えに、この access_token を認証サーバーに送信します。

$res = file_get_contents('https://auth.xx.com/user_info?token='.$access_token );
$uid = $res['uid'];
$name = $res['name'];
ログイン後にコピー

キャッシュ ソリューションの提案

ユーザーは、認証サーバーへの過剰な負荷を避けるために、このプロトコルを通じて特定のキャッシュを実行できます。

  1. サードパーティは、ユーザー情報を保存し、認証サーバーへの継続的なリクエストを回避するために、特定の Cookie 原則を設計できます。

以上がOAuth2.0 プロトコルと PHP アクセスの概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
1
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート