2016-07-04 4 views
0

私のプロジェクトでは、IdentityServer3にいくつかの外部IDプロバイダ(ADFS経由)を使用しています。しかし、スケジュールされたタスク(オフラインのとき)を介して、バックグラウンドでユーザーに代わっていくつかのアクションを実行したいと思います。IdentityServer3で認証されたユーザーに対してオフラインでアクションを実行

OpenId Connectに切り替える前に、私はローカルユーザーしかいないし、ユーザーのプリンシパルを作成して "偽装"しました。今私はこの機能を置き換える外部ユーザーがいるので、私はリフレッシュトークンを使ってこれを行う正しい方法だと思います。

ユーザーがサイトにアクセスするたびに、各ユーザーの更新トークンをデータベースに安全に保存する予定です。スケジュールされたタスクが実行されるときにリフレッシュトークンを使用して有効なアクセストークンを取得し、これを使用してバックエンドWebAPIを呼び出します。これは私が必要とするなりすましを達成し、また、外部ユーザーとの新しい問題を処理します。これは、外部ユーザーストアからの無効化/削除時にはわかりません。スケジュールされたタスクをリンクされたままシステムに残しておきたいアカウントはまだ有効です。アクセスが削除されると、保存されたリフレッシュ・トークンは最終的に失効し、スケジュールされたタスクの実行は停止します。

これはオフラインアクションを処理するための最良の方法ですか?私は、有効なリフレッシュトークンが確実に格納されるように、ユーザーが定期的にログインする必要があることを心配しています。または、オフラインアクセスを無期限に有効にし、それでもセキュリティを確保するためのより良い方法があります。

答えて

0

更新トークンは、ユーザーとの対話なしにAPIへの長命のアクセスを取得するための技術です。それはあなたの要件を満たすようです。私はリフレッシュトークンを避けたかった、と私は必要なすべてがWEBAPIバックエンドに渡すためのアクセストークンである場合

+0

は、私がカスタムを使用して(その後、リソースの所有者のパスワードの流れ、およびActAs他のユーザでログインするサービスアカウントを使用することができます付与?)。私は実際に私の仕事のために自分のユーザ用に構築されたJWTアクセストークンだけを必要とします。IdPからの要求はありません。自分のデータベースから追​​加するものです。これは私の必要としているように思えますが、IdSvr3のカスタムグラントにはまだ慣れていませんが、サンプルを偽装の一種として使用できるように見えますか? – solidstore

関連する問題