また、オフィス内のユーザー用にActive Directoryを使用し、オフィス以外のユーザーもサポートするwinformsデスクトップアプリケーションを管理しています。
これはあなたが求めている以上のことかもしれませんが、私はあなたと同じシナリオを持っているので、とにかくそれを提供するつもりです。うまく機能しています。
他の人が自分でロールするのではなく、パッケージでこれを行った可能性があると確信しています-そして正直に言うと、次にこの要件があるときにそのルートに行くでしょう...
ここにあります:
概念的には、ASP.NETからヒントを得て、セキュリティを2つの論理的な部分に分割しました。
認証-このユーザーは誰ですか?
承認-ユーザーはこれを行うことができますか?
私の実装では、単純なデータベースを使用しています。

これが私のアプリケーションのメインフォームからの抜粋です:
public EOMForm()
{
InitializeComponent();
// Show the connection string when hovering over the database label (Test Mode Only)
if(Properties.Settings.Default.TestMode)
this.toolTip1.SetToolTip(this.databaseLabel, EomAppCommon.EomAppSettings.ConnStr);
// Security
DisableMenus();
}
private void DisableMenus()
{
// Disable individual menu items
foreach (var menuItem in this.TaggedToolStripMenuItems())
menuItem.Enabled = Security.User.Current.CanDoMenuItem((string)menuItem.Tag);
// Apply disabled color to top level menus that have all their items disabled
foreach (var menu in menuStrip1.DisabledMenus())
menu.ForeColor = SystemColors.GrayText;
}
そして、これがサポートするユーティリティコードです。
最後に、ASP.NETスキャフォールドサイトを使用して管理します。
