2008-10-07 15 views
5

Estoy usando servicios web de Exchange para buscar, crear, actualizar y eliminar citas de los calendarios de una o más personas. La aplicación sería utilizada por un gerente para ver el tiempo de vacaciones de los empleados, así como para asignar citas en función de la disponibilidad.Necesita una forma de autenticarse en los servicios web de Exchange

Para que todo esto funcione, las credenciales de un usuario autenticado deben enviarse al servicio web. Hasta ahora, los dos métodos que he encontrado que permitirían esto son 1) pasar el nombre de usuario y la contraseña de cada usuario y 2) suplantar a un usuario para usar DefaultCredentials. La opción DefaultCredentials no nos funciona porque no permitimos la suplantación de usuarios.

¿Alguien sabe de otra manera?

+0

parece que necesitamos las credenciales que pertenecen al propietario de cada cita con el fin de actualizar una cita. sigue investigando esto. – coder1

Respuesta

6

¿Hay restricciones de la política de empresa no le permite utilizar la suplantación? ¿Te refieres a la suplantación de Windows o a la suplantación de Exchange?

Dependiendo de qué suplantación no puede usar, una alternativa podría ser delegar acess.

Si el objetivo es permitir que un administrador de ver varios buzones, aquí hay algunas opciones:

(1) Conceder acceso delegado a los buzones de los empleados a la gerente. Dependiendo del nivel de acceso de delegado, esto le permitiría al administrador ver los buzones de los empleados y editarlos según sea necesario. Hay una advertencia sobre este enfoque, dependiendo de qué/cómo se otorga el acceso, el delegado (empleado) podría eliminar el acceso y evitar que el administrador vea sus calendarios.

Para la autenticación mediante el acceso de delegado, suponiendo que la aplicación que utiliza servicios web se ejecutaba en el contexto del administrador, debería poder usar DefaultCredentials.

(2) Cree una cuenta de servicio que tenga derechos de suplantación o delegue el acceso a través de los buzones de los empleados. Luego inicie sesión como la cuenta de servicio.

Además, aquí hay algunos enlaces que pueden serle útiles ...

2

Si te entendí bien, el gerente usaría la aplicación y se autenticaría en el EWS como él mismo. EWS no podría actualizar el buzón de otro usuario debido a permisos insuficientes.

¿Qué le parece dar al administrador acceso al buzón de cada usuario?

(O me estoy perdiendo una parte sustancial de la pregunta?)

1

Si el usuario va a iniciar sesión en su propia máquina, y es probable que estas credenciales estén disponibles e en el caché de credenciales, se puede construir un objeto WebCredential de los ICredentials cosa obtenida a partir de ahí:

public static ExchangeService GetService() 
{ 
    var webCredentials = new WebCredentials(CredentialCache.DefaultNetworkCredentials); 

    var service = new ExchangeService(ExchangeVersion); 
    service.AutodiscoverUrl(Properties.Settings.Default.SmptAccountName); 
    service.Credentials = credentials; 

    return service; 
} 
Cuestiones relacionadas