問題タブ [json-web-token]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
rest - ステートレスサーバーで非アクティブ時にユーザーセッションを無効にする方法は?
Java でステートレスな RESTful サーバー バックエンドを構築しています。これは AngularJS フロントエンドで使用されます。ステートレスである必要があるため、セッションは作成しませんが、アクセス トークン、より正確には JSON Web トークンを生成します。クライアントはすべての要求で提示する必要があります。
トークンには、絶対有効期限として機能する「expires」フィールドが含まれています。ただし、ユーザーの非アクティブ時に有効期限を追加したいと考えています。したがって、ユーザーが 30 分に 1 回アクティブな場合、アクセス トークンが 24 時間有効になるように定義します。
リクエストごとにデータベースに何かを書き込んでリクエスト間の時間を確認することでこれを実装することもできますが、アプリケーション サーバーのセッション管理を使用するときにすぐに動作していたものにとっては、これは大変な作業のようです。
angularjs - angular および express-jwt を使用したリフレッシュ トークンの実装
angular、nodejs、およびexpress-jwtを使用して、json Webトークンでスライド有効期限の概念を実装したいと考えています。これを行う方法について少し混乱しており、これらのテクノロジー/フレームワークを使用したセッションに関連するリフレッシュ トークンやその他の資料の例を見つけるのに苦労しています。
私が考えていたいくつかのオプションは
- 最初のログイン後にリクエストごとに新しいトークンを生成する
- 発行されたトークンをサーバー側で追跡する
でも正直よくわからないので助けてください
c# - JWT を使用して Azure AD グループ情報を取得する
Azure AD ベアラー認証を必要とする API があります。
その後、おそらく Graph API を使用して Azure AD にクエリを実行し、呼び出し元のユーザーのグループ情報を特定することはできますか? ここでの最終目標は、以下の (または類似の) API メソッド/コントローラーにロールベースのセキュリティを適用することです。
さらに、ID 情報は実行中のスレッドにどのように適用されますか?
security - JsonWebToken: アクティビティベースの有効期限と時間ベースの有効期限の発行
私はトークンベースの認証にかなり慣れていません。カスタムの有効期限/トークン更新スキームの欠陥を見つけようとしています。
Express API で基本的な JWT 認証を設定しています。JWT の有効期限を 1 時間に設定しています。ただし、JWT は、トークンが発行された時刻を基準にしてトークンの有効期限をチェックします。API呼び出しが成功するたびに有効期限がリセットされることをお勧めします。ユーザーがアプリを 1 時間以上アクティブに使用している場合、トークンを更新するために再度ログインする必要はありません (そして、作業中のデータが失われる可能性があります)。
一方、トークンが 1 時間以上応答しない場合は、トークンを期限切れにしたいと考えています。
私は次のアプローチを思いつきました:
API リクエストが成功するたびに、新しい JWT を発行し、カスタム レスポンス ヘッダーで送信します。私のクライアント側コードは、この JWT 応答ヘッダーをチェックし、その値を新しいデフォルトの Authorization 要求ヘッダーとして使用する責任があります。したがって、ユーザーからの API 要求が 1 時間以上ない場合、トークンは期限切れになり、更新されません。ログインが必要になります。さらに、トークンの元の発行日 (ログイン認証のタイムスタンプ) が保存されるため、24 時間後にトークンの「ハード有効期限」が適用されます。
これはかなり簡単で、かなり安全に思えますが、私の JWT 調査ではこれに関する言及は見当たりませんでした。同じ目標を達成するためのより良い方法はありますか? このアプローチで主要なセキュリティ ホールを見逃していませんか?
更新: これについてしばらく考えた後、これの問題は、トークンの有効期限によって阻止できなかったリプレイ攻撃への扉を開くことであることに気付きました。したがって、絶対に「ハード有効期限」チェックが必要です。ハード有効期限は、最近のユーザー アクティビティに関係なく、発行日以降のある時点でトークンを無効にします。
angularjs - expressJwt: ログインを必要としないページで req.user にアクセスする
angularjs Web サイトのユーザー検証を行うために、expressJwt ( https://github.com/auth0/express-jwt ) を使用しています。誰でもこのページにアクセスできる URL (/username/somedata) があるという興味深い状況があります。ログインしていない場合、またはこのユーザーではない場合、パブリックとしてマークされたデータのみを取得します。ログインしていて正しいユーザーである場合、公開データと非公開データを取得します。
問題は、req.user から JWT (json Web トークン) にアクセスできるのは、/api (ログインが必要) で始まる任意のパスに限られることです...そして、このページはログインを必要としないため、落ちません。 /api の下。
/api の下にないパスで req.user へのアクセスを許可する方法はありますか? 別の考えは、データを要求して別のパスを使用する前に、ログインしているかどうかを確認することでした...
すなわち:
ログインしていない場合は常に次を使用します: /username/somedata (常に公開のみのデータ)
ログイン中: /api/username/somedata (出力する前に、ユーザーがデータの作成者であるかどうかを確認します。作成者が公開および非公開を出力する場合、それ以外の場合は公開のみ)
更新:複数のパスをテストしましたが、うまく機能していますが、別の方法で req.user にアクセスできるかどうかまだ知りたいので、まだ自分の質問には答えません。
json - json Web トークン + img src
プロジェクトのjson Webトークン認証に設定しました。「プライベート」パスですべてのリクエストを保護しました。タグ img と属性 src を使用してクライアントから画像をダウンロードする最良の方法は何ですか?
私がこれまでに持っている唯一の解決策は、トークン値を使用してクライアントにクッキーを設定し、プライベートではなくパブリックパスにアクセスすることです。サーバー上よりも、Cookie の値を取得し、ヘッダーに適切なトークンを設定して、プライベート パスに向けて新しいリクエストを作成します。
もっとエレガントな方法はありますか?