2

半分のユーザーの認証に企業 Active Directory を使用し、残りの半分のカスタム認証方法を使用する C# アプリケーションがあります。

DirectoryEntry、DirectorySearcherなどを使用してADでユーザーを認証することができ、カスタム認証も機能しています。

ただし、ユーザーが企業ドメインを使用してコンピューターに既にログインしているかどうかを知りたいのですが、そのユーザーにはログオンフォームが表示されず、アプリケーションに渡す必要があります。

WindowsIdentity.GetCurrent().IsAuthenticatedを使用できることはわかっていますが、ローカルにログインしたユーザーとドメインにログインしたユーザーの両方に対して「true」を返します。

最初のものと最新のものを区別する方法を知りたいです。

(注: これはデスクトップ アプリケーションです)

4

1 に答える 1

1

また、オフィス内のユーザー用に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スキャフォールドサイトを使用して管理します。

ここに画像の説明を入力してください

于 2012-12-06T23:28:21.770 に答える