複数のASP.NET MVCアプリケーション間での1つのログイン


8

フォームベースの認証を使用するASP.NET MVC 4アプリケーションに取り組んでいます。ユーザーは、ログインフォームでのプロバイダーの選択に基づいて、メンバーシッププロバイダーに対して検証されます。たとえば、現時点では2つのプロバイダーがあります。ActiveDirectoryと、外部Webサービスを呼び出すカスタムプロバイダーです。ユーザーが有効な場合は、最終ログオン日などのローカルユーザーテーブルの情報を更新します。ユーザーが有効であり、ローカルユーザーテーブルに存在しない場合は、ユーザーを追加します。これがすべて完了したら、Cookieを設定してメインコンテンツに進みます。すべてのコントローラーはUser.Identity.IsAuthenticatedをチェックし、テストが失敗した場合はログインページに戻ります。

現在、このアプリケーションは単一のWebアプリケーションから複数のアプリケーションソリューションに移行すると言われています。各アプリケーションは、他のアプリケーションから独立して存在し、同じルックアンドフィールを共有し、同じログイン機能を使用する必要があります。各アプリケーションでは、新しいメンバーシッププロバイダーを追加する必要があります。アプリケーションへのアクセスを制限するためのデータも追加します。1人のユーザーは1つのアプリケーションにしかアクセスできず、別のユーザーはすべてのアプリケーションにアクセスできます。

データストレージの設定は問題ありません。あるアプリケーションのレイアウトを他のアプリケーションで使用するために共有することも問題ではありません。私が問題を抱えているのは、ログイン機能を「リファクタリング」して、新しいメンバーシッププロバイダーとアプリケーションを「すぐに」追加しても既存のアプリケーションを再公開する必要がないようにする方法を決定することです。現時点では、アプリケーションのシングルサインオン起動ページも必要ありません。彼らは、ユーザーがアプリケーションに直接アクセスしてログインし、そこにやってきたことを実行することを望んでいます。このように、私はに行くことhttp://site1.mysites.com、ログインして私の隣に男がに行く間、私の仕事をするhttp://site2.mysites.comで、ログおよび彼の作業を行います。

これを行う最善の方法に頭を抱えるのに苦労しています。私が最初に思ったのは、ログイン用のWCF Webサービスです。ログイン認証情報を渡して、コントローラーアクションでWebサービスを呼び出します。ログインが成功した場合、ローカルストレージからユーザーのアプリケーションのリストを取得できます。アプリケーションを追加しても、既存のアプリケーションのWebサービスに変更がないため、それらのアプリケーションを再公開する必要はありません。

また、このASP.NET Web APIについても耳にします。代わりにそのルートに行くべきですか?ローカルユーザーデータベースの管理を中心にサイトを構築して、Web APIをホストするサイトを用意することもできます。

この状況でWeb APIの問題は間違っていますか?そうでない場合は、WCF Webサービスよりも優れていますか?私の最終結果を達成する別の方法はありますか?

回答:


1

すべてのアプリケーションに外部ユニバーサル認証プロバイダーが必要であり、特にメンバーシッププロバイダーを変更したときに、その結果としてアプリケーションの新しいリリース。

ユニバーサル認証プロバイダーでは、どのサイトがどのメンバーシッププロバイダーを使用するかを制御でき、認証後にさまざまなユーザーにロールと権限を委任するなどの責任を委譲することもできます。

ただし、ASP.NET Web APIで提供されているようなSOAPベースのWebサービスの重要性がRESTベースのWebサービスに徐々に置き換わっているように見えるため、WCFアプローチについては注意してください。アプリケーションの未来はモバイルであり、すべての主要なモバイル開発プラットフォームはRESTベースのWebサービスを強力にサポートしています。

メンバーシッププロバイダーのサポートをモバイルアプリケーションにまで拡張する必要があるかもしれないという少しでも疑問がある場合は、WCFを無視することをお勧めします。さらに、RESTベースのWebサービスを使用すると、サードパーティ(おそらく、クライアントがソフトウェアパッケージと統合したいですか?)による統合を強化して、アプリケーションと通信し、アプリケーションから情報を取得できます。

RESTベースのWebサービスの認証プロトコルに関する限り、これを行うための優れた方法はないようですが、セキュリティはかなり重要です。認証プロバイダーアプリケーションへの認証リクエストを保護する方法に関する優れた記事があります。 http://codebetter.com/johnvpetersen/2012/04/02/making-your-asp-net-web-apis-secure/


入力いただきありがとうございます。私はWCFについて同じくらい考えていました。RESTに基づいてソリューションを構築し、そのリンクに基づいてそれを保護することに取り組むと私は信じています。
fkm71 2013年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.