この記事では、PHP での oauth2 の実践を紹介します。ここで皆さんと共有し、必要な方の参考にしてください。それでは、一緒に見てみましょう
例えば、次のような場合です。第三者がユーザーアカウントとパスワードを介して一部のサービスを取得すると、簡単に漏洩につながります
- 認証時間の範囲がどのくらいの長さであり、この認証の範囲がどのくらいの大きさかを把握する必要があります
- そしてあなたは他のサードパーティ アプリケーションを承認している場合、ユーザーがパスワードを変更すると、サードパーティの機能が無効になります。
クライアントは、ユーザーの承認を取得する必要があります。トークン(アクセストークン)を取得します。 OAuth 2.0 では 4 つの認証方法が定義されています。
認可コードモード(認可コード)
簡易モード(暗黙的)
- パスワードモード(リソース所有者のパスワード認証情報) これを使用します
- クライアントモード(クライアント認証情報)
- oauht2プロセス
- ユーザーがクライアントにアクセスし、クライアントがユーザーに認可を申請する
ユーザーが認可に同意する
- 前のステップで取得した認可に対して、クライアントがトークンを申請するサーバー
- サーバー 確認後、トークンがクライアントに発行されます
- クライアントがトークンを取得した後、サーバーから対応するリソースを申請できます
- サーバーがトークンが確認されたかどうかを判断した後、 、アクセスのためにクライアントにリソースを開きます
概要: 実際、上記の 2 番目のステップは 4 つの認証方法であり、この種の認証にはクライアントからの高いレベルの信頼が必要です。実際には、ユーザー アカウントとパスワードをサーバーに取得してトークンを申請し、トークンが正しい場合はクライアントに返すことを意味します。
- 問題: 1. クライアント証明書が無効です
{"error":"invalid_client","error_description":"The client credentials are invalid"}
ログイン後にコピー
ログイン後にコピー
解決策:
データベースに client_id と client_screct の 2 つのパラメータが必要です
リクエストするとき、本文はこれら 2 つを持ってくる必要がありますパラメータの値
- 2. フロントエンドアプリの同時リクエスト失敗を防ぐ方法1. RefreshTokenクラスの設定:
$grantType1 = new RefreshToken($storage, array( 'always_issue_new_refresh_token' => false #这个可以防止每次生成新的refresh_token
));
ログイン後にコピー
ログイン後にコピー
- 参考リソース:公式ドキュメント
github URL
oauth実装ロジック
oauth2ソリューション 質問:
例えば、ユーザーアカウントとパスワードを通じて第三者が何らかのサービスを取得した場合、簡単に漏洩に繋がります
いつまで問題を解決する必要があります認証時間の範囲と、この認証の範囲の大きさ
- とそれ自体 他のサードパーティアプリケーションが認証されている場合、ユーザーがパスワードを変更すると、サードパーティ機能は無効になります
- oauth2。 4 つの認可方法: クライアントはトークン (アクセス トークン) を取得するためにユーザーの認可 (認可グラント) を取得する必要があります。 OAuth 2.0 では 4 つの認証方法が定義されています。
- 認可コードモード(認可コード)
簡易モード(暗黙的)
- パスワードモード(リソース所有者のパスワード認証情報) これを使用します
- クライアントモード(クライアント認証情報)
- oauht2プロセス
- ユーザーがクライアントにアクセスし、クライアントがユーザーに認可を申請する
ユーザーが認可に同意する
- 前のステップで取得した認可に対して、クライアントがトークンを申請するサーバー
- サーバー 確認後、トークンがクライアントに発行されます
- クライアントがトークンを取得した後、サーバーから対応するリソースを申請できます
- サーバーがトークンが確認されたかどうかを判断した後、 、アクセスのためにクライアントにリソースを開きます
概要: 実際、上記の 2 番目のステップは 4 つの認証方法であり、この種の認証にはクライアントからの高いレベルの信頼が必要です。実際には、ユーザー アカウントとパスワードをサーバーに取得してトークンを申請し、トークンが正しい場合はクライアントに返すことを意味します。
- 問題: 1. クライアント証明書が無効です
{"error":"invalid_client","error_description":"The client credentials are invalid"}
ログイン後にコピー
ログイン後にコピー
解決策:
データベースに client_id と client_screct の 2 つのパラメータが必要です
リクエストするとき、本文はこれら 2 つを持ってくる必要がありますパラメータ値
- 2. フロントエンドアプリの同時リクエスト失敗を防ぐ方法1. RefreshTokenクラスの設定:
$grantType1 = new RefreshToken($storage, array( 'always_issue_new_refresh_token' => false #这个可以防止每次生成新的refresh_token
));
ログイン後にコピー
ログイン後にコピー
- 参考リソース:
公式ドキュメント
github URL
oauth ロジックの実装
関連する推奨事項:
PHP を使用して QQ を OAuth2.0 に接続するときに発生する問題
以上がPHPでのoauth2の練習の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。