web-dev-qa-db-ja.com

組織のoAuthサーバーへの認証を実装する

この質問のいくつかの部分が明らかに思えば申し訳ありませんが、私はWordPressの初心者であり、手動で(ソーシャルログインプラグインを使用せずに)oAuthワークフローを利用するのは初めてです。

組織のすべてのサイト/アプリに集中認証を提供するこのoAuth2サーバーがあります(X-Orgと呼びましょう)。私がやりたいことは、私のWoocommerce顧客がX-Orgサーバーを介してログイン/登録し、チェックアウトのためにWooに戻ってくることを許可することです。手続きとして考えているのは、

  1. ユーザーが[ログイン/ X-Orgに登録]ボタンをクリックして、[認証コード]が表示される
  2. 私のWordPressサイトはコードを入手してそれをアクセス/リフレッシュトークンと交換します
  3. 私のWordPressは「アクセストークン」を使ってプロフィール情報(電子メール、姓名)を取得します。
  4. このEメールアドレスを持つユーザーがwp_usersテーブルに存在するかどうかを確認してください。いいえの場合、ユーザーを作成してからログインユーザー(wp_signon)を作成します。
  5. また、返された "Refresh Token"を(ユーザー名として)dbに保存する必要があります。残りはWordPress認証システムによって処理されます。 wp_signonを呼び出した後(クッキーベース、正しいですか?)

私が知りたいのは、

まず第一に、私が上に挙げたものは正しい道ですか?そして論理的?

B- for 1,2私はPHP cURL libを使うことを考えています。 WordpressのコアAPIを介して他のオプションはありますか?

C - 私はdbにリフレッシュ/アクセストークンを保存する必要があるかどうかわからないですか?

4
Shahroq

JWTを使用すると、認証方法としてJSON Web Tokens Authenticationを使用してWP REST AP​​Iを拡張できます。

WordPress REST AP​​I認証:デフォルトのCookie認証:Cookie認証は、WordPress内でネイティブに使用できる唯一の認証メカニズムです。 。

リモートアプリケーション:

リモートアプリケーションをサポートするには、プラグインを使用して新しいREST AP​​I認証方法を追加する必要があります。

現在サポートされているオプションはBasic Auth、OAuth、およびJWTです。

ユーザー名とパスワードを使用した基本認証は安全ではないと見なされ、開発シナリオでのみ使用されるべきです。

OAuthは素晴らしいですが、認証するのは面倒です

JWTは素晴らしく、フロントエンドフレームワークとうまく連携します。

ユーザーサインイン([ユーザー名/パスワード])=>認証サーバー=>ユーザー認証済み、JWT作成済み、USERに戻る

USER(ユーザーがAPI呼び出し時に[JWT]を渡します)=>アプリケーションサーバー=>アプリケーションがAPI呼び出しを検証して処理します=>データ/メッセージをUSERに送信します

enter image description here ユーザーはまず、認証サーバーのログインシステム(ユーザー名とパスワード、Facebookログイン、Googleログイン、Twitterなど)を使用して認証サーバーにサインインします。その後、認証サーバーはJWTを作成してそれをユーザーに送信します。ユーザーがアプリケーションに対してAPI呼び出しを行うと、ユーザーはAPI呼び出しと共にJWTを渡します。この設定では、着信JWTが認証サーバーによって作成されたことを確認するようにアプリケーションサーバーが設定されます。

ユーザーが接続されたJWTでAPI呼び出しを行うと、アプリケーションはJWTを使用して、API呼び出しが認証されたユーザーからのものであることを確認できます。

認証プラグイン:リモートアプリケーションから機能する認証。

認証用のプラグイン:

OAuth 1.0aサーバー:パスワードを漏らさずにアプリケーションをWordPressサイトに接続します。

このプラグインはWordPress> = 4.4のみをサポートしています。

アプリケーションパスワード: - ユーザーのパスワードを直接入力せずにユーザーを認証します。代わりに、ユーザー名のbase64エンコード文字列と新しいアプリケーションパスワードを使用します。

JSON Webトークン - 認証方法としてJSON Webトークン認証を使用してWP REST AP​​Iを拡張します。

WPユーザー:認証方法としてJSON Webトークン(JWT)認証を使用してWP REST AP​​Iを拡張します。

WP Userプラグインを使用すると、Webサイトでフロントエンドのログインおよび登録フォームを作成できます。また、セキュリティを強化したWP REST AP​​IのJWTトークンを作成できます。 IPアドレスなどのブラックリスト/ホワイトリストなどの機能。

ユーザーのログインや登録、そして通常のWordPressログインページを避けたい、このプラグインはAJAXのようなスムーズな効果でログイン、登録、パスワード忘れを配置する機能を追加しますREST API.

1
Prashant Walke