2012-10-12 185 views
7

Estoy intentando crear un sitio web ASP.NET (.NET 3.5) para conectarme a nuestro servidor de Exchange 2010 a través de los Servicios web de Exchange, puedo conectarme a EWS cuando defino el nombre de usuario, contraseña y dominio para autenticar pero me gustaría, si es posible, no incluir detalles de inicio de sesión en mi código.Autenticación de usuario AD

En IIS he habilitado la Autenticación de Windows integrada para el sitio, en web.config del sitio tengo <authentication mode="Windows"/>.

El código siguiente es lo que he estado Woking con:

svc.UseDefaultCredentials = True 
svc.Credentials = New WebCredentials() 
svc.Url = New Uri(svcURL) 

Con el código anterior Estoy recibiendo el mensaje:

Al hacer una petición como una cuenta que no tenga una buzón de correo, usted debe especificar la dirección SMTP principal del buzón para cualquier carpeta distinguida Ids.

Cuando intento de usar svc.Credentials = CredentialCache.DefaultNetworkCredentials (en lugar de svc.Credentials = New WebCredentials()) recibo el mensaje de error:

No se puede convertir objeto de tipo 'System.Net.SystemNetworkCredential' a tipo 'Microsoft.Exchange .WebServices.Data.ExchangeCredentials '.

Como se ha mencionado, la única cosa que ha trabajado es definir las credenciales de usuario para autenticar a hardcoding datos de acceso del usuario, que preferiría no hacer: svc.Credentials = New WebCredentials("username","password","domain")

nadie ha sido capaz de autenticar a EWS usando las credenciales del usuario registrado actual en un sitio web ASP.NET?

+0

Lima, ¿dónde pudo encontrar una solución para este escenario? –

Respuesta

2

De manera predeterminada, no es posible delegar las credenciales de un usuario de un servidor (el servidor en el que aloja su sitio ASP.NET) a otro (su servidor Exchange). Esto se conoce como "salto de servidor" y Windows lo evitará de forma predeterminada como medida de seguridad.

usted tiene un par de opciones para evitar este:

  1. Uso de Kerberos: Cuando Kerberos está habilitado hace que sea posible delegar credenciales de usuario entre los servidores cuando se utiliza la autenticación de Windows. No conozco los detalles exactos sobre cómo configurar Kerberos ya que solo soy un desarrollador humilde, pero tal vez el administrador de tu sistema puede ayudarte. AFAIK, necesita configurar su servidor ASP.NET para permitir la delegación del usuario.
  2. Configuración de la identidad de usuario de su grupo de aplicaciones IIS: Si Kerberos no es una opción, puede cambiar la identidad del grupo de aplicaciones en el que se ejecuta el sitio ASP.NET. Primero defina un nuevo grupo de aplicaciones en el administrador de IIS. A continuación, vaya al cuadro de diálogo Configuración avanzada para ese grupo de aplicaciones y establezca la identidad a un usuario de dominio que tenga permiso para acceder a su servidor de Exchange. Más información sobre la identidad del grupo de aplicaciones aquí: http://technet.microsoft.com/en-us/library/cc771170(v=WS.10).aspx.
  3. Ajuste del > elemento de identidad <: Si por alguna razón no se puede cambiar el grupo de aplicaciones, puede tratar de suplantación de su sitio Web ASP.NET mediante la > elemento < identidad en su archivo web.config. ÁSPID.NET le da la opción de almacenar las credenciales en el registro para que no tenga que ponerlas directamente en su archivo web.config. Más información aquí: http://msdn.microsoft.com/en-us/library/72wdk8cc(v=vs.90).aspx
  4. Utilizando el < appsettings> ellement y cifrado: La última opción que se me ocurre es simplemente poner las credenciales en su archivo web.config como < appsettings normales> y luego cifrar todo el < appsettings > sección. Simplemente leería la configuración de la aplicación desde su código usando the AppSettingsReader class. .NET le permite encriptar secciones del archivo web.config de la caja y puede leer las configuraciones sin que el evento advierta que la sección está encriptada. .NET se encarga de descifrar para usted. Más información aquí: http://msdn.microsoft.com/en-us/library/zhhddkxy.aspx
Cuestiones relacionadas