Domanda

Le app SharePoint 2013 in Visual Studio hanno una classe tokenhelper che semplifica l'utilizzo di OAuth per connettersi a un clientContext di SharePoint 2013. Sto usando questa classe per connettersi in remoto a un SharePoint 2013 (su Office 365).

Posso utilizzare il metodo Tokenhelper.getClientConTextWitHitHorizationCode per ottenere il ClienteContext con il codice di autorizzazione OAuth durante l'esecuzione in un'applicazione Web che ha un httpContext.Current. Tuttavia, se utilizzo questo stesso codice in un'applicazione console o in un altro contesto in cui non è presente httpContext.Current, il server Remote SharePoint 2013 restituisce (400) cattiva richiesta.

Ho ristretto il problema fino a Microsoft.IdentityModel.S2S.Protocols.oAuth2.oauth2S2Sclient.issue () Metodo. Quando c'è un httpContext, funziona, ma senza che non riceva il (400) errore di richiesta cattiva.

Ho provato a utilizzare il framework MOQ per falsificare un httpContext, ma non funziona neanche.

L'errore si verifica nel metodo Tokenhelper.GetAccesstoken qui:

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

Qualche idea?

È stato utile?

Soluzione

Sono stato finalmente in grado di capire cosa stavo facendo male:

1) Il codice di autorizzazione restituito durante la creazione della connessione OAuth è valida solo per quella sessione del browser.Quindi perché non riuscivo a riutilizzare quel codice di autorizzazione in seguito nei servizi di back-end o nelle nuove sessioni del browser.

2) Nella pagina Reindirizzamento, ho utilizzato il codice di autorizzazione restituito per creare un nuovo token di accesso.Dal token di accesso potrei recuperare il token di aggiornamento.

3) Il token di aggiornamento è ciò che posso memorizzare e riutilizzare in seguito per creare contesti client dal codice posteriore o da nuove sessioni del browser.

Così, in breve, per riutilizzare il token OAuth, è necessario utilizzare il token di aggiornamento, non il codice di autorizzazione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange
scroll top