Actualmente estoy tratando de utilizar el User-Agent flujo de OAuth 2.0 con una aplicación del lado del cliente C#, y estoy corriendo en una cierta confusión con respecto a la URI de redireccionamiento.OAuth User-Agent de flujo con C# aplicación de escritorio
porque estoy trabajando con una aplicación del lado del cliente, no puede suministrar una URL de redireccionamiento estándar a un servidor web. Sin embargo, de acuerdo con las personas con las que intento autenticar (Salesforce, en este caso), User-Agent Flow es el correcto para usar en una aplicación cliente.
Mi pregunta es, ¿qué puedo hacer para capturar el token de acceso en esta situación? Aparentemente puedo crear un "recurso local accesible para el cliente", pero no estoy familiarizado con la mecánica detrás de esto, y no puedo encontrar ningún recurso sobre el tema (en parte porque no sé qué buscar).
Cualquier puntero sobre dónde debería empezar a mirar sería muy apreciado.
Editar: Un poco más de excavación ha revelado la siguiente pregunta StackOverflow:
How do I develop against OAuth locally?
que estoy haciendo un poco más de investigación con lo que sugirieron, pero cualquier otra sugerencia sería muy bueno también.
Editar: Un poco más búsqueda reveló este artículo:
http://sarangasl.blogspot.com/2010/09/create-simple-web-service-in-visual.html
todavía se siente como si estuviera hurgando en la oscuridad sin una comprensión de la imagen más grande, pero creo que necesito configurar un servicio web local utilizando localhost y señalar mi URI de redirección allí. Luego usaré mi servicio web para desenvolver la respuesta del servidor de OAuth y hacer que mi aplicación responda de manera adecuada. Más actualizaciones por venir.
Ooookay. Por lo que he podido reunir, necesito configurar un servicio web local para que lo proporcione como devolución de llamada para OAuth. Necesito escuchar en dicho servicio web y tomar la devolución de llamada para pasarla a mi aplicación. Sin embargo, el servicio web predeterminado de ASP.NET proporcionado por VS2010 no admite parámetros de URL, solo llamadas de API, por lo que aparentemente necesito usar el kit de inicio WCF Rest.
Soy completamente ajeno a todo esto, por lo que cualquier consejo sería un regalo del cielo en este momento. En general, estoy pensando en configurar un servicio WCF Rest local, suministrar ese URI local a OAuth como devolución de llamada, y luego capturar la URL de devolución de llamada utilizando el servicio Rest. Luego analizo la URL y extraigo el token de acceso. En este punto, ¿mi aplicación solicita el token de acceso o mi servicio web puede "dar" el token a mi aplicación? Es decir, ¿dónde debería estar el lugar de control?
Esta sería una opción. Pero tenga cuidado: el usuario puede usar algunos trucos en su WebBrowser, como avanzar y retroceder dentro del historial del navegador, la actualización de la página, los tiempos de espera y la interrupción de la red. USTED tendrá que manejar todos los códigos de error HTTP + todos los trucos desagradables del navegador incorporado. Buena suerte :) –
Además, considere la interfaz de usuario de su aplicación que, probablemente, será diferente de la propuesta por Salesforce, y no puede cambiar su valor predeterminado porque no tiene control sobre ella. –
Ugh, tienes razón. Tendré que echar un vistazo a la seguridad del navegador incorporado a continuación. En cuanto a la interfaz de usuario, sin embargo, mi aplicación es un proceso en segundo plano que genera una ventana emergente en ciertos eventos, por lo que la autenticación solo se requiere una vez por lanzamiento de la aplicación (por lo general una vez al día, por la mañana). Sin embargo, gracias por los consejos, me olvidé de los agujeros de seguridad que potencialmente se abrirían con una instancia de IE incorporada. – sichinumi