Question

Les applications SharePoint 2013 dans Visual Studio ont une classe TokenHelper qui simplifie à utiliser OAuth pour se connecter à un client SharePoint 2013. J'utilise cette classe pour se connecter à distance à un SharePoint 2013 (sur Office 365).

Je peux utiliser la méthode Tokenhelper.getClientContextWithauthorizeCodeCode pour obtenir le clientContext avec le code d'autorisation OAuth lors de l'exécution d'une application Web qui a un httpcontext.current. Toutefois, si j'utilise ce même code dans une application de console ou autre contexte où il n'y a pas de httpcontext.current, le serveur SharePoint 2013 de distant renvoie (400) Demande de mauvaise demande.

J'ai réduit le problème vers la méthode Microsoft.ProTityModel.s2s.Protocols.oauth2.Oauth2S2Sclient.Sedue (). Lorsqu'il y a un httpcontext, cela fonctionne, mais sans qu'il obtient la (400) erreur de demande de mauvaise demande.

J'ai essayé d'utiliser le cadre MOQ pour simuler un httpcontext, mais cela ne fonctionne pas non plus.

L'échec survient dans la méthode Tokenhelper.getaccessToken ici:

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

Des idées?

Était-ce utile?

La solution

J'étais enfin capable de comprendre ce que je faisais mal:

1) Le code d'autorisation renvoyé lors de la création de la connexion OAuth n'est valable que pour cette session de navigateur.Ainsi, pourquoi je ne pouvais pas réutiliser ce code d'autorisation plus tard dans les services d'arrière-plan ou dans les nouvelles sessions de navigateur.

2) Sur la page Rediriger, j'ai utilisé le code d'autorisation renvoyé pour créer un nouveau jeton d'accès.Depuis le jeton d'accès, je pourrais récupérer le jeton de rafraîchissement.

3) Le jeton de rafraillage est ce que je peux stocker et réutiliser plus tard pour créer des contextes de clients à partir du code arrière ou des nouvelles sessions de navigateur.

Donc, en un mot, pour réutiliser le jeton OAuth, vous devez utiliser le jeton de rafraîchissement, pas le code d'autorisation.

Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top