2016-04-29 6 views
0

Derzeit Probleme beim Zugriff auf einen Web-API-Controller, der über das Attribut 'autherize' verfügt und bei Azure AD registriert ist. Momentan erhalte ich einen Token von ADAL.JS und versuche nun, einen Ajax-Aufruf an einen Test-Webapi zu machen, der einen Back-End-Dienst für meine Office-Addin-App ausführt. Ich habe Szenarien versucht, die ich beschreiben werde.Office-Add-in Authentifiziert nicht zu Webapi

Erste Szenario: Ich erstellt, um Web-Anwendung Einträge Azure Management-Portal, eine für mein Büro Add in App, damit ich ein Token, und das andere für meine Web-API kann ich es sperren zu trennen. Ich gab dann die Erlaubnis für meine Office-Add-Anwendung auf meiner Webapi, um mein Office-Add-in, um mit meiner Web-API zu sprechen. Ich bekomme einen 401 Status unbefugt.

Zweite Senario:

Da ich nicht autorisierte bekomme ich eine neue Anwendung in meinem Azure Management Portal zu machen ging und ein Token mit dem ADAL.js bekommen, aber wenn ich den gleichen Anruf an die WebAPI welche machen teile die gleiche Kundennummer wie meine Office-Addin-App bekomme ich immer noch einen 01-Status unbefugt.

Nicht sicher, was ich falsch mache, scheinen, als ob ich beide Möglichkeiten ausprobiert habe, aber keiner arbeitet für mich. Das ist mein Java-Script

window.config = { 
tenant: variables.azureAD, 
clientId: variables.clientId, 
postLogoutRedirectUri: window.location.origin, 
endpoints: { 
    sharePointUri: "https://" + tenant + ".sharepoint.com", 
    ContentCenterApi: "https://localhost:44334" 
}, 
cacheLocation: "localStorage" 
}; 

    var authContext = new AuthenticationContext(config); 

    var isCallback = authContext.isCallback(window.location.hash); 
authContext.handleWindowCallback(); 

if (isCallback && !authContext.getLoginError()) { 
window.location =  authContext._getItem(authContext.CONSTANTS.STORAGE.LOGIN_REQUEST); 
} 


function GetSharepointList(e) { 
var authContext = new AuthenticationContext(config); 
var user = authContext.getCachedUser(); 


if (!user) { 
    authContext.login(); 
} 

else { 
    authContext.acquireToken(config.endpoints.sharePointUri, function (error, token) { 

     if (error || !token) { 
      console.log("ADAL error occurred: " + error); 
      return; 
     } 
     else { 
      var me = this; 
      //var SiteUrl = config.endpoints.sharePointUri + "/sites/Apps_Dev/ER_TestSite/"; 
      $.ajax({ 

       url: 'https://localhost:44334/api/Values/Get', 
       dataType: "json", 
       headers: { 
        "Authorization": "Bearer " + token, 
        "accept": "application/json;odata=verbose", 
       }, 
       success: function (data) { 
        handleData(data); 
       } 
      }).done(function (response) { 
       console.log("Successfully fetched list from SharePoint."); 
       // var items = response.d.results; 
       //$("#contentPreview").append(items[0]); 
      }).fail(function (error) { 
       console.log("Fetching list from SharePoint failed."); 
      }); 
     } 

    }); 
}; 
} 

Antwort

2

ich ein wenig verwirrend bin, dass die API Sie nennen, ist „https://localhost:44334/api/Values/Get“, aber die Ressource-ID-Token zu erwerben ist „config.endpoints.sharePointUri“. Es sollte der App-URI sein, den Sie im Azure AD registriert haben.

Informationen zum Sichern der Web-API mithilfe von Azure AD. Der folgende Artikel gibt Ihnen möglicherweise Hilfe.

Protect a Web API using Bearer tokens from Azure AD.

Einzel Seite Anwendungs ​​Demo (adal.js): active-directory-angularjs-singlepageapp

dieses Beispiel wird die Verwendung von ADAL für JavaScript zeigt eine AngularJS basierte Single Seite App zur Sicherung mit einem ASP.NET Web API Backend implementiert.

Verwandte Themen