WPによるJWT認証-アプローチ


8

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

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

私の質問:

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

JWT用のWPプラグインはありますが、ドキュメントはありません。そのため、目的にかなうかどうかはわかりません。


hmmm wtfはjwt?
Mark Kaplun、2015年

関連リンクを追加しました。小切手。
Rutwick Gangurde

わかりました、今私はJWTが何であるかをまだ理解していません、そしてそれはまだ質問を理解していません、そしてなぜそれがワードプレスに特有なのですか?そのためのベストプラクティスガイドはありませんか?とにかく、プラグイン/ライブラリの推奨事項はトピックから外れています...
Mark Kaplun

1
プラグインの推奨は必要ありません。自分でコードを書いています。そう思うようになった最後の行を削除しました。
Rutwick Gangurde、2015年

回答:


8

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

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

エンドポイントは任意の言語にすることができます。また、これは一般的なフローであり、どこでも使用できます。


0

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

基本的に、あなたが使用したいと思うhttps://wordpress.org/plugins/wp-force-login/との修正バージョンhttps://as.wordpress.org/plugins/jwt-authenticator/をして、認証を作成しますJWT(JSON Web Token)を生成し、WordPressサイトの特別なURLにリダイレクトする、メインサイトの保護されたエンドポイント。

ここで完全なコードを参照してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.