0

VB.NETを使用してActiveDirectoryに新しいユーザーを作成するページがあります次のコードを使用しています

Dim rootEntry As New DirectoryEntry
With rootEntry
    .Path = "LDAP://" & strServer & "/" & strLDAP
    .AuthenticationType = AuthenticationTypes.Secure
    .Username = strServerUsername
    .Password = strServerPassword
End With



Dim newUser As DirectoryEntry = rootEntry.Children.Add("CN=" & strCN, "user")
With newUser
    .CommitChanges()
    .Properties("userPrincipalName").Value = TextPN.Text 
    .Properties("sAMAccountName").Value = TextAlias.Text
    .Properties("givenname").Value = TextGivenname.Text
    .Properties("sn").Value = TextSurname.Text
    ……
    .CommitChanges()

    .Invoke("setPassword", New Object() {strDefaultPassword})
    .CommitChanges()
    .Properties("userAccountControl").Value = &H0001
    .CommitChanges()        
End With

このコードは過去に正常に機能していました。これで、WebサーバーをWindows Server 2008R2およびIIS7.5に移行しましたが、突然コードが機能しなくなりました。(.net Frameworkは2.0であり、変更できません)ユーザーは引き続きActive Directoryに作成されますが、アカウントは自動的に無効になり、パスワードは設定されません。

この問題を調査すると、例外が回線でスローされていることがわかります

 .Invoke("setPassword", New Object() {strDefaultPassword})

例外

The RPC server is unavailable. (Exception from HRESULT: 0x800706BA)

ADへの接続に使用されるユーザーアカウントは同じであり、ドメイン管理者権限があります。コードに何も変更されていないので、これが機能しなくなった別の理由があるに違いないと思いますか?ファイアウォール設定、IIS構成、..?

何か案は??

ここにも同様のケースがあることを知っています。新しいActiveDirectoryユーザーを作成しようとすると、Invoke( "SetPassword"、pwd)は "RPCサーバーが利用できません"をスローしますが 、これは役に立ちません。

4

2 に答える 2

1

ファイアウォールで TCP/UDP 445 ポートが開いていることを確認します。ドメインの外部から AD サーバーに接続するには、次のポートを開く必要があります。TCP/UDP 389 (LDAP) . TCP 3268 (GC) . TCP/UDP 445 (SMB オーバー IP)

于 2013-02-25T10:35:41.697 に答える
1

DirectoryEntry.Invoke() には AuthenticationType.Secure が必要です。これが意味することは、Kerberos または NTLM を介して要求を認証できる必要があるということです。

最初に LDAPS (TCP 636) の使用を試みますが、証明書が見つからないか無効なためにタイムアウトするか失敗した場合は、CiFS (TCP445) にフォールバックします。これらのポートのどちらも開いていない場合、「RPC サーバーを使用できません」という例外で失敗します。

于 2013-02-25T12:49:29.683 に答える