Posts recientes

El contenido de este blog tiene una licencia Creative Commons.
Creative Commons

Impersonación a la hora de trabajar con Exchange   

Para invocar a los Web Services propios de Exchange 2007 es necesario crear un usuario de servicio que cuente con permisos de impersonación sobre las mailbox databases. Para cada entorno se creará el usuario llamado ExchangeWSuser (sin incluir en ningún grupo de seguridad, únicamente en “domain user” ) y desde el servidor de Exchange 2007 se deberán ejecutar estas dos sentencias en PowerShell. Estos comandos será preciso ejecutarse cada vez que se cree una BBDD de Exchange 2007.
1.------------------------------------------------------------------
Get-MailboxDatabase | ForEach-Object {Add-ADPermission -Identity $_.DistinguishedName -User ExchangeWSUser -ExtendedRights ms-Exch-EPI-May-Impersonate}
2.------------------------------------------------------------------
Add-ADPermission -Identity (get-exchangeserver -Identity SERVER_NAME).DistinguishedName -User (Get-User -Identity ExchangeWSUser | select-object).identity -extendedRight ms-Exch-EPI-Impersonation
El documento en el msdn es el que sigue:
http://msdn.microsoft.com/en-us/library/bb204095.aspx
Una vez tenemos el usuario ExchangeWSUser creado, se debe usar al instanciar el ExchangeServiceBinding de la siguiente forma:
ExchangeServiceBinding esb = new ExchangeServiceBinding();private static string usuarioEx;
// summary
// Crear el Objeto de enlace con Exchange 2007
// summary
// param name="UserName" Nombre de Usuario
// param name="Domain Dominio del usuario
// param name="Url" Url De Exchange. Parámetro opcional. Se cogerá la Url por defecto en caso de estar vacío.
private void CreateExchangeServiceBinding(string UserName, string Domain, string Url)
{
usuarioEx = UserName;
esb.ExchangeImpersonation = new ExchangeImpersonationType();
ServicePointManager.ServerCertificateValidationCallback = delegate(Object obj, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
{
// Replace this line with code to validate server certificate.
return true;
};
esb.ExchangeImpersonation.ConnectingSID = new ConnectingSIDType();
esb.ExchangeImpersonation.ConnectingSID.PrimarySmtpAddress = UserName + "@" + Domain;
if (Url != null && Url != string.Empty)
{
esb.Url = Url;
}
else
{
esb.Url = ConfigurationManager.AppSettings["EWSUrl"].ToString();
}
// Se identifica el enlace del servicio y el usuario Exchange que reealizará la impersonación
esb.Credentials = new NetworkCredential(ConfigurationManager.AppSettings["ExchangeWsUser"].ToString(), ConfigurationManager.AppSettings["ExchangeWsPass"].ToString(), ConfigurationManager.AppSettings["ExchangeWsUserDomain"].ToString());
}
Como se ve se accede al config en algunos casos:
ConfigurationManager.AppSettings["ExchangeWsUser"]
Obteniendo el username, pass y domain al que pertenece el usuario impersonador.
Espero les sirva de ayuda.
 
Publicado  en  27/03/2010  por  David Acosta Lesmes
0  Comentarios  |  Trackback Url  | 0  Enlaces a este post | Bookmark este post con:          
Etiquetas: ASP.NET, Office 2010
Technorati Tags: ,
 

Vinculos a este post

Comentarios