2010-12-18 11 views
0

新しいプロジェクトでは、ActiveDirectoryMembershipProviderとSqlRoleProviderを使用してそれぞれ認証と承認を提供する予定です。ActiveDirectoryMembershipProviderおよびSqlRoleProvider:メンテナンス?

メンテナンスがどのように処理されるかがわかりません - ログインしてロールを割り当てられたユーザーがActive Directoryから削除された場合、SqlRoleProviderが使用するマッピングテーブルで孤立したレコードを削除する方法を教えてください。私はこれがaspnet_UsersInRolesテーブルだと信じています。

無効なユーザーを定期的にActive Directoryに照会してから、Roles.RemoveUserFromRoles(UserId、Roles.GetRolesForUser(UserId))を呼び出すリストを反復処理して、UserIdもaspnet_UsersInRolesに存在することができます。大規模な組織にとっては、私は想像すると非常に遅いです。

また、UsersInRolesの各Distint UserIdに対して、ActiveDirectoryを照会して、userAccountControl属性のビットマスクがアカウントが無効であることを確認しないようにします。多数のアプリケーションユーザーにとって非常に非効率的でもあります。

もっと醜いがはるかに効率的なアプローチは、最後のログイン日を保存し、たとえば6か月間ログインしていないユーザーの役割の関連付けを定期的に消去することです。これは頭​​痛を引き起こす可能性があります。

私は提案を聞いて欲しいです。

答えて

0

はい、手動でクリーンアップを実行する必要があります。瞬間的な更新が必要ですか?夜間に実行されるバッチ処理を実行できる場合は、コア運用時間中に実行されていないため、効率的です。あるいは、別のスレッドでプロセスを開始して、ロールの削除を認識したらすぐに処理することができます。ユーザーアクセスごとにロールを削除すると、ユーザー間でヒットが共有され、アプリケーションの速度が遅いと考えることができます。

ロールは何回削除されますか?多くの場合、バッチ処理を考慮してください。数年後には、処理中にアプリケーションに取り込むことは問題ではないでしょう。

APIの使用方法については、aspnet_UsersInRolesテーブルとaspnet_rolesテーブルをSQLスクリプトを使用して簡単に削除することもできます。

HTH。

関連する問題