2017-06-14 3 views
1

Wir verfügen über eine SharePoint-Veröffentlichungssite mit anonymem Zugriff, die im Internet gehostet wird. Gemäß den neuesten Anforderungen müssen wir die Benutzeranmeldung implementieren (AzureAD, persönliche und geschäftliche Konten von Microsoft und mehr).Abfrage Azure active directory v2.0 für die Web-API-Integration auf einer SharePoint-Website

https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-v2-flows

Gemäß der Dokumentation hier wollen wir diese mit Hilfe von Web-API implementieren, um die sicheren Informationen aus der Datenbank zu erhalten. Wir denken darüber nach, die Datei MSAL.js für die Benutzeranmeldung und die Abmeldung auf dem SharePoint zu verwenden und nach Erhalt eines Bearer-Tokens können wir die Web-API für die zusätzlichen Daten aus unserer Datenbank aufrufen.

Einschränkung für Standalone-Web-APIs: "Sie können den Endpunkt v2.0 zum Erstellen einer Web-API verwenden, die mit OAuth 2.0 gesichert ist. Diese Web-API kann Token jedoch nur von einer Anwendung empfangen, die dieselbe Anwendungs-ID besitzt. Sie können nicht auf eine Web-API von einem Client mit einer anderen Anwendungs-ID aus zugreifen. Der Client kann keine Berechtigungen für Ihre Web-API anfordern oder erhalten. "

Wie können wir zwei Anwendungen mit derselben Anwendungs-ID unter App Registration Portal erstellen? Oder sollten wir die gleiche Anwendungs-ID am Ende der SharePoint- und Web-API verwenden?

Antwort

0

Es gibt keine Notwendigkeit, zwei Anwendungen zu registrieren, Sie brauchen nur eine Registeranwendung. Nachdem Sie die Anwendung registrieren, können Sie die MSAL Bibliothek unter den Token erhalten die Web-API aufrufen:

<script class="pre"> 
    var userAgentApplication = new Msal.UserAgentApplication("e5e5f2d3-4f6a-461d-b515-efd11d50c338", null, function (errorDes, token, error, tokenType) { 
     // this callback is called after loginRedirect OR acquireTokenRedirect (not used for loginPopup/aquireTokenPopup) 
    }) 
    userAgentApplication.loginPopup(["user.read"]).then(function (token) { 
     var user = userAgentApplication.getUser(); 
     console.log(token); 
     // signin successful 
    }, function (error) { 
     // handle error 
    }); 
</script> 

Und die Web-API zu schützen, können Sie die gleiche Anwendung verwenden und den Code siehe unten:

public void ConfigureAuth(IAppBuilder app) 
{ 
    var tvps = new TokenValidationParameters 
    { 
     // The web app and the service are sharing the same clientId 
     ValidAudience = "e5e5f2d3-4f6a-461d-b515-efd11d50c338", 
     ValidateIssuer = false, 
    }; 

    // NOTE: The usual WindowsAzureActiveDirectoryBearerAuthenticaitonMiddleware uses a 
    // metadata endpoint which is not supported by the v2.0 endpoint. Instead, this 
    // OpenIdConenctCachingSecurityTokenProvider can be used to fetch & use the OpenIdConnect 
    // metadata document. 

    app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions 
    { 
     AccessTokenFormat = new JwtFormat(tvps, new OpenIdConnectCachingSecurityTokenProvider("https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration")), 
    }); 
} 
Verwandte Themen