Pregunta

Aplicaciones de SharePoint 2013 en Visual Studio tienen una clase de tokenhelper que simplifica usando OAuth para conectarse a un SHOTEPOINT 2013 ClientContext. Estoy usando esta clase para conectarme de forma remota a un SharePoint 2013 (en Office 365).

Puedo usar el método tokenhelper.getclientcontextwithauthorizationcodecodio para obtener el céntimo con el código de autorización de OAUTH cuando se ejecuta en una aplicación web que tiene un HTTPContext.current. Sin embargo, si uso este mismo código en una aplicación de consola u otro contexto donde no hay httpcontext.current, el servidor remoto SharePoint 2013 devuelve (400) Bad Solicitud.

He reducido el problema al Microsoft.IdentityModel.S2S.PROTOCOLS.OAUTH2.OAUTH2S2SCLIENTE.ISE () MÉTODO. Cuando hay un httpcontext, funciona, pero sin él obtiene el (400) error de solicitud de mala solicitud.

He intentado usar el marco MOQ para falsificar un httpcontext, pero eso tampoco funciona.

La falla se produce en el método Tokenhelper.getAccessToken aquí:

OAuth2S2SClient client = new OAuth2S2SClient();
OAuth2AccessTokenResponse oauth2Response;
try
{
    oauth2Response =
        client.Issue(AcsMetadataParser.GetStsUrl(realm), oauth2Request) as OAuth2AccessTokenResponse;
}

¿Alguna idea?

¿Fue útil?

Solución

Finalmente pude averiguar qué estaba haciendo mal:

1) El código de autorización devuelto al crear la conexión OAUTH solo es buena para esa sesión de navegador.Por lo tanto, por lo que no pude reutilizar ese código de autorización más adelante en los servicios de retroceso o en nuevas sesiones del navegador.

2) En la página Redirecto, utilicé el código de autorización devuelto para crear un nuevo token de acceso.Desde el token de acceso, pude recuperar el token de actualización.

3) El token de actualización es lo que puedo almacenar y reutilizar más adelante para crear contextos de clientes del código de retroilio o nuevas sesiones del navegador.

Entonces, en pocas palabras, para reutilizar el token de OAuth, debe usar el token de actualización, no el código de autorización.

Licenciado bajo: CC-BY-SA con atribución
scroll top