2017-03-01 2 views
0

Ich versuche, ein AppOnly-Zugriffstoken zur Verwendung im Autorisierungsträgerkopf meiner Anforderung an einen REST-Endpunkt in Project Online (SharePoint) zu erhalten. Es folgt ein Codeausschnitt, den ich zum Abrufen des Zugriffstokens verwendet habe.So erhalten Sie ein Zugriffstoken für die ACS-App für Project Online

private OAuth2AccessTokenResponse GetAccessTokenResponse() 
    { 
     var realm = TokenHelper.GetRealmFromTargetUrl([[our_site_url]]); 
     var resource = $"00000003-0000-0ff1-ce00-000000000000/[[our_site_authority]]@{realm}"; 
     var formattedClientId = $"{ClientId}@{realm}"; 

     var oauth2Request = OAuth2MessageFactory.CreateAccessTokenRequestWithClientCredentials(
      formattedClientId, 
      ClientSecret, 
      resource); 
     oauth2Request.Resource = resource; 

     try 
     { 
      var client = new OAuth2S2SClient(); 
      var stsUrl = TokenHelper.AcsMetadataParser.GetStsUrl(realm); 
      var response = client.Issue(stsUrl, oauth2Request) as OAuth2AccessTokenResponse; 

      var accessToken = response.AccessToken; 
     } 
     catch (WebException wex) 
     { 
      using (var sr = new StreamReader(wex.Response.GetResponseStream())) 
      { 
       var responseText = sr.ReadToEnd(); 
       throw new WebException(wex.Message + " - " + responseText, wex); 
      } 
     } 
    } 

Ich halte 403 als Antwort vom Server verboten bekommen, auch wenn ich Websitesammlung Admin-Anmeldeinformationen mit meiner Anfrage enthalten. Hat jemand da draußen irgendwelche Ideen?

Antwort

0

Nach dem Erstellen eines Support-Tickets mit Microsoft, um dies herauszufinden, haben wir uns schließlich dazu entschlossen, die App-Berechtigungen für die Konsolenanwendungsberechtigung zu umgehen.

Unsere Problemumgehung bestand darin, ein SharePointOnlineCredentials-Objekt mithilfe eines Dienstkontos zu erstellen und dann das Authentifizierungs-Cookie aus dem Berechtigungsnachweisobjekt mit unserer WebRequest zu übergeben. Diese Lösung stammt aus den hier gefundenen Skripts: https://github.com/OfficeDev/Project-REST-Basic-Operations

Verwandte Themen