web-dev-qa-db-ja.com

とのJWT認証 WP - アプローチ

外部サービスでWordPressアプリケーションを認証するためにJWT( JSON Web Token )を使用しています。私たちが考えている現在の流れはこのようなものです:

  1. ユーザーが親サイトにサインインします
  2. 親サイトは、ユーザー情報とJWTトークンを含むPOSTリクエストをWordPressサイトに送信します。
  3. WPサイトにはJWTトークンが格納されています。
  4. ユーザーが新しいページにアクセスするたびにトークンの有効期限がチェックされます。トークンの有効期限が切れると、ユーザーは再度ログインするために親サイトにリダイレクトされます。

私の質問:

  1. これは正しいアプローチですか?
  2. JWTトークンを保管するにはどうすればよいですか?クッキー?またはデータベース内で、一意の識別子としてユーザーの情報を使用して?注:ユーザーはWPサイトに登録されません。
  3. 有効期限を確認するにはどうすればよいですか。

WPプラグインJWT がありますが、それについてのドキュメントはないので、それが私の目的にかなうかどうかはわかりません。

8

これは、投票による通知として表示されました。これが私がそれを解決した方法です。

  1. 私が認証することになっているとアプリでコーディングされたエンドポイントがトークンを準備します。
  2. トークンは指定された形式でなければなりません。
  3. それはそれからbase 64でエンコードされハッシュ暗号化されるべきです。
  4. トークンを抽出するために、wp_initハンドラを使用して、エンドポイントから送信されたPOST要求を処理する必要があります。
  5. 鍵は他の方法で共有され、復号化に使用されます。
  6. トークンが抽出されたら、同じ情報を持つローカルに生成されたトークンと比較します。
  7. クッキーに保存して、ページにアクセスするたびに確認してください。しばらくすると期限切れになるか、またはページアクセスごとにタイムスライスを増やし続けることができます。

エンドポイントはどの言語でもかまいません。また、これはその一般的な流れです、あなたはどこでもあなたが望むそれを使用することができます。

7

WordPressでシングルサインオンを有効にするには18時間以上かかりましたが、数分しかかかりませんでした:

基本的には、 https://wordpress.org/plugins/wp-force-login/https://as.wordpress.org/plugins/jwt-authenticatorの修正版を使用することをお勧めします。/ それからJWT(JSON Web Token)を生成し、あなたのWordPressサイトの特別なURLにリダイレクトするあなたのメインサイト上の認証保護されたエンドポイントを作成します。

こちらの full codeを参照してください

0
Ryan