2011-01-20 14 views
1

現在、ユーザーはADに対して検証されたAD(Active Directory)資格情報を使用してWebアプリケーションにログインします。アプリケーションの内部に入ると、特定のユーザーはADを更新する必要があります。ユーザー名/パスワードをハードコードすると、ADを更新することができますが、オブジェクトにログオン資格情報を使用させようとすると、ユーザー名/パスワードを指定しないとエラーが発生します。明らかにセキュリティ上の懸念から、私は資格情報をハードコードしたくありません。これには解決策がありますか?ユーザー名/パスワードをハードコードしないでActive Directoryを更新する

エラー - System.DirectoryServices.DirectoryServicesCOMException:操作エラーが発生しました。

Public Shared Sub SetProperty(ByVal de As DirectoryEntry, ByVal propName As String, ByVal propValue As String) 
     If Not propValue Is Nothing Then 
      If de.Properties.Contains(propName) Then 
       de.Properties(propName)(0) = propValue 
      Else 
       de.Properties(propName).Add(propValue) 
      End If 
     End If 
    End Sub 

    Public Shared Function GetDirectoryEntry(ByVal path As String) As DirectoryEntry 
     Dim de As New DirectoryEntry() 
     de.Path = path 
     de.Username = "<username>" 
     de.Password = "<password>" 
     'Not setting the username or password or setting both to Nothing throws the error 
     de.AuthenticationType = AuthenticationTypes.Secure 
     Return de 
    End Function 

    Dim de As DirectoryEntry = GetDirectoryEntry("<path>") 
    Dim searcher As DirectorySearcher = New DirectorySearcher(de) 
    searcher.Filter = "(&(objectCategory=person)(objectClass=user)(cn=" & fullName & "))" 
    searcher.SearchScope = SearchScope.SubTree 
    Dim result As SearchResult = searcher.FindOne() 

    If Not result Is Nothing Then 
     Dim deResult As New DirectoryEntry(result.Path) 
     SetProperty(deResult, "accountExpires", toAccountExpirationDate) 
     deResult.CommitChanges() 
     deResult.Close() 
    End If 

    de.Close() 
+0

これはwinformsまたはasp.netでですか? –

+0

それはasp.netだ、私はタグを更新します。 –

答えて

1

操作を行う前に、任意の資格情報を指定する必要がないために、いずれかのユーザーIISは、(デフォルトでは、それは最も確かにしない)AD編集権限を持っている必要があります下に実行されている、またはあなたが設定する必要があります偽装し、Windows認証を使用して、ページを表示しているユーザーとして実行されます。

2番目のケースでは、偽装が「ダブルホップ」できないために特別な問題があります。つまり、Webサーバーもドメインコントローラでなければならない、またはサーバー上で余分なAD delegation特権を設定する必要がありますあなたのドメイン管理者はあなたに与えたくないかもしれません。

この場合、問題の解決策は、アプリケーションが実行されているユーザーアカウントを、必要な権限を既に持っているユーザーアカウントに変更することです。その危険性は、セキュリティホールが攻撃者に同じ権限を与えることです。

また、一部の資格情報を暗号化して復号化して使用することもできます。これはハードコーディングよりも少し優れています。私は、ユーザーが手動で資格情報を提供し、それらを使用してあなたが現在もハードコードされたものを使用している同じ方法で動作すると思います。

関連する問題