2016-10-24 18 views
1

私は、OWIN ASP.NET IDアーキテクチャを実装している集中型ASP.NET MVC Webサイトを使用するプロジェクトを持っています。 私たちの集中型のウェブサイトは、に使用されています:ユーザー名/パスワードでOWIN認証と "オンラインユーザー"

  • 付与トークン
  • 助成金は、追加/削除して、ユーザー/ロールを変更し、OAuthentication社会ログイン経由
  • 付与トークンを主張
  • トークンリフレッシュ(ツイッター、Facebook ...)

これまではとても良いが、今は新しい要求があった。 ASP.NETアイデンティティOAuthはトークンとリフレッシュトークンを付与しているが、「セッション」と「オンライン認証されたユーザー」という概念はないため、この層は「オンラインユーザーを追跡できる」べきであると私の意見では思う。 。

この機能をどのように実装できるかについてのご意見やご提案はありますか?

+0

は、機能を要求セールスマネージャーのための「ティア」だけの素敵な名前ですか? – trailmax

答えて

0

オンラインユーザーを正確に定義することに少し依存しますが、それをリラックスさせた定義を前提にして、あなたがまだ持っていないと言ったことを正確に導入することで達成できます。セッション。

認証時には、ASP.NET MVCアプリケーションはIDプロバイダ/承認サーバ(IP/AS)として動作しますが、セッションの概念を持つことはできないことを意味しません。一般的に、セッションはIP/ASの一般的なプラクティスです。これは、セッションを使用するアプリケーションにシングルサインオンを提供できるためです。

たとえば、GoogleとFacebookの両方が他のアプリケーションのIP/ASとして動作し、どちらもセッションを維持しています。 2つのケースでは、IP/ASの役割を果たすだけでなく、セッションには必要不可欠なものであると主張できます。

ただし、認証サービスと認可サービスのみに焦点を当てたプロバイダもセッションに依存します。たとえば、前述のAuth0 uses sessions as a way to provide the single sign-on experienceです。

セッションを導入することにより、IP/ASの観点から、オンライン/認証されたユーザーのリストを維持できるはずです。大きな問題は、ビジネスユーザーがオンラインユーザーと言っているときに、それが実際に何を望んでいるのかということです。

 
開示:私はAuth0エンジニアです。


 
更新

セッションの実際の実装に関しては、要件によって異なりますが、クライアント側のクッキーとサーバー側の耐久性のあるストレージの伝統的なアプローチは行う必要がありますトリック。 ASP.NETアイデンティティと統合する必要はありません。特定のユーザーID(ユーザー固有の識別子を通じて)にアクティブなセッションがあることを追跡するだけで済みます。彼らが認証するときに行われます。

次に、いつセッションが終了するのかを決定する問題があります。それは主に正確な要件に依存します。ユーザーがIP/ASにログアウトしたり、別のアプリケーション内からシングルサインアウトをトリガーしたい場合には、やりにくくすることもできます。

トークンに関しては、セッション終了時(ログアウト時)にリフレッシュトークンを取り消すことも考えられます。要約すると、多くの動く部品と実装すべきものがあります。

あなたはすでにそれを行っていない場合は、あなたもチェックする必要があります:

+0

私はAuth0をとてもうまく知っていますが、予算上ではないため、残念ながら私はそれを使用できません。私たちはクラウド製品を持っており、2年前に高コストでAuth0の使用が拒否されました。しかし、私はASP.NETのアイデンティティとトークンを使ってセッション管理について何も見つけることができません – Raffaeu

+0

ええ、私は何年も企業の世界にいましたので、私はその気持ちを知っています。管理者は外部の価格設定を確認するのは簡単ですが、社内ソリューションの実装、保守、および保守の実際のコストを決して計算することは決してありません。セッション管理に関するあなたのポイントについて、私は答えを更新しました。 –

+0

更新のためのAngeloありがとう。残念ながら、OAuth0などの外部ツールの費用は、それぞれ数千人のユーザーを抱えるクラウド顧客に払い戻されなければならないため、私たちは独自の実装 – Raffaeu

関連する問題