2010-09-16 31 views
0

我正在創建一個WPF應用程序,所有用戶都必須通過身份驗證到Active Directory。 - 客戶端,我正在使用客戶端應用程序服務。 - 服務器端,我有一個asp.net web應用程序與AspNetActiveDirectoryMembershipProvider。AspNetActiveDirectoryMembershipProvider&混合登錄

所有按預期工作。

但是有一個問題。 某些wpf應用程序用戶使用其窗口登錄到域中,而其他用戶則不能。

因此,對於登錄到域(組A)的用戶,我不想在應用程序啓動時詢問他們的用戶名/密碼。 其他用戶(B組)當然必須在應用程序啓動時提供其Active Directory用戶名/密碼。 該組B僅執行Membership.ValidateUser(用戶名,密碼),最終在AspNetActiveDirectoryMembershipProvider中進行身份驗證。

但是,如何檢查組A是否已成功通過AspNetActiveDirectoryMembershipProvider認證,而不需要 詢問他們的用戶名/密碼?

感謝, 公園

回答

0

應用服務,使用HTTP傳輸。沒有令牌的概念(當你登錄到你的機器/域時得到的東西),所以除非你想完全重寫應用程序服務的實現(不是......不推薦),否則登錄是沒有辦法的不管當前的認證。

但是這使我想到了這樣的問題:如果他們登錄到域,爲什麼使用應用程序服務?

在您的應用中,您可以先檢查當前身份是否屬於相關域,並且是否通過身份驗證。如果是這樣,繼續申請。如果不是,則回退應用程序服務。

這種類型的混合不是非常複雜,但它將需要您的一部分計劃和代碼。

+0

我的解決方案確實是首先檢查它是否屬於域,如果不落在應用程序服務上。 但是,理想情況下,我會喜歡將所有身份驗證/授權邏輯保留在應用程序服務的界面之後。如果我想從基於Windows的身份驗證切換到基於數據庫的身份驗證,我必須修改客戶端和服務器。 感謝您的意見, Koen – KoenJ 2010-09-28 06:27:55