OAuth (Open Authorization) は、ユーザーのアカウントとパスワードを第三者に伝えることなく、ユーザー情報を第三者に許可する安全なオープン標準プロトコルです。プロトコルの詳細については、RFC 6749を参照してください。
このプロトコルにおける最も古典的な認証コード モードの簡単な説明から始めましょう。 導入は次のとおりです:
上記のプロセスには 4 つの役割があることを説明しましょう。
ResourceOwner はリソース所有者、つまりユーザー自身です
User-Agent はアプリケーションへのアクセスに使用するブラウザです
Client はサードパーティのサービスです
AuthorizationServer は認証サーバー。ユーザー リソースのプロバイダーとして理解できます。
その後、呼び出しプロセスは次のようになります:
ユーザーはブラウザを通じてクライアントのサードパーティ サービスにアクセスし、クライアントは OAuth2 リンクを構築します (パラメーターには、現在のサードパーティ サービスの ID ID、とリダイレクトURI)、ユーザーを認証サーバーの認可ページに誘導します
このとき、ユーザーはブラウザ上で認可に同意するかどうかを選択します
ユーザーが認可に同意した場合、認証サーバーは、最初の手順で指定したリダイレクト URI にユーザーをリダイレクトします。同時に、認可コード コードを添付します
サードパーティ サービスは認可コードを受け取り、認可コード ソースのリダイレクト URI を取得します。そして認証サーバーに証明書を申請します。
認証サーバーは認可コードとリダイレクトURIの正当性をチェックし、それを渡した後にAccessToken(呼び出し認証情報)を発行します
dとeはサーバー側で実行されるため経由する必要はありませんブラウザ
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'];
ユーザーは、認証サーバーへの過剰な負荷を避けるために、このプロトコルを通じて特定のキャッシュを実行できます。
サードパーティは、ユーザー情報を保存し、認証サーバーへの継続的なリクエストを回避するために、特定の Cookie 原則を設計できます。
以上がOAuth2.0 プロトコルと PHP アクセスの概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。