Impossible de se connecter à Office Communication Server via l'API Unified Communications
Question
Je suis en train de se connecter à Office Communication Server à l'aide des communications unifiées API gérés. J'ai essayé mon utilisateur et un utilisateur nouveau activé pour OCS. Les deux compte peut se connecter avec succès dans le client Office Communicator, mais ne parviennent pas à l'aide de l'API. Lors de la création du justificatif d'identité réseau, si je passe le nom d'utilisateur sous la forme domaine \ nom d'utilisateur, je reçois cette erreur:
SupportedAuthenticationProtocols=Ntlm, Kerberos
Realm=SIP Communications Service
FailureReason=InvalidCredentials
ErrorCode=-2146893044
Microsoft.Rtc.Signaling.AuthenticationException: The log on was denied. Check that the proper credentials are being used and the account is active. ---> Microsoft.Rtc.Internal.Sip.AuthException: NegotiateSecurityAssociation failed, error: - 2146893044
Si je laisse hors du domaine dans le nom d'utilisateur I cette erreur:
ResponseCode=404 ResponseText=Not Found
DiagnosticInformation=ErrorCode=4005,Source=OCS.mydomain.com,Reason=Destination URI either not enabled for SIP or does not exist
La solution
Il s'avère que ce fut un oubli de ma part. Notre domaine AD et le domaine de communication sont différents, j'avais supposé qu'ils étaient les mêmes.
Le titre du réseau est du domaine \ nom d'utilisateur et l'adresse SIP aurait dû être sip: username@companyname.com, j'utilisais sip:. Username@domain.com
Autres conseils
Deux choses à noter:
- Nom d'utilisateur ne doit pas contenir le domaine. Il devrait y avoir une propriété séparée du domaine de NetworkCredential que vous devriez utiliser.
- Vous devez également passer dans l'URI utilisateur ainsi - par exemple:
//Initialize and register the endpoint, using the credentials of the user the application will be acting as.
UserEndpointSettings userEndpointSettings = new UserEndpointSettings(_userURI, _userServer);
userEndpointSettings.Credential = _credential;
_userEndpoint = new UserEndpoint(_collabPlatform, userEndpointSettings);
_userEndpoint.BeginEstablish(EndEndpointEstablish, _userEndpoint);