App permission w SharePoint online

utworzone przez | lis 4, 2016 | Microsoft 365, SharePoint | 0 komentarzy

Dziś zamierzam napisać jak korzystać z App permission w SharePoint online. Temat ciekawy i bardzo użyteczny, a traktowany trochę po macoszemu. Tym tematem powoli wracam do pisania, a trochę czasu, delikatnie mówiąc, minęło od mojego ostatniego wpisu. Wydaje się jednak, że pora wrócić do życia. Zaczynajmy więc 🙂 .Pamiętacie mój wpis o korzystaniu z współrzędnych geograficznych w SharePoint? Jak można tam zobaczyć kod z którego korzystam zawiera nazwę użytkownika i hasło przechowywane jako czysty tekst. O ile takie rozwiązanie może być w ostateczności używane w przypadku ręcznego uruchamiania aplikacji, to w przypadku automatycznego procesu jest to delikatnie mówiąc niewskazane. Pojawia się zatem pytanie co można z tym zrobić? Jak zaimplementować uwierzytelnianie aby pozbyć się nazwy użytkownika i hasła?

Najlepszym rozwiązaniem tego problemu jest skorzystanie z App permission. Dzięki temu nasza aplikacja będzie korzystała z tokenów, które zapewnią nam znacznie wyższy poziom bezpieczeństwa. Pierwszym krokiem powinno być wygenerowania Client Id oraz Client Secret korzystając z adresu URL, który ma następującą strukturę:

URL: https://[tenant].sharepoint.com/_layouts/15/appregnew.aspx

A następnie naciskamy przycisk Generate. Otrzymamy dwa ciągi znaków, która posłużą naszej aplikacji do generowania tokenów. W polu Title podajemy nazwę naszej aplikacji. Warto tu użyć czegoś, co będzie czymś więcej niż „moja aplikacja”, bo za kilka miesięcy możemy mieć problem z przypomnieniem sobie, do czego generowaliśmy to uwierzytelnienie. Jako app domain podajemy localhost, a Redirect URI podajemy nasz URL naszego tenanta. To był pierwszy krok. Po wygenerowaniu tokenów musimy jeszcze nadać pozwolenia dla naszej aplikacji. Robimy to pod tym adresem: /layouts/15/appinv.aspx. Po wprowadzeniu pliku XML

A sama struktura wpisu XML jest następująca

[code lang="XML"]
 <AppPermissionRequests AllowAppOnlyPolicy="true">
     <AppPermissionRequest Scope="http://sharepoint/content/tenant" Right="FullControl" />
 </AppPermissionRequests>
 [/code]

Jak wykorzystać App permission w SharePoint online

No dobrze to pora wykorzystać teraz naszą wiedzę w praktyce. Stwórzmy sobie zwykłą aplikację konsolową. Następnie w NuGet Package Manager szukamy czegoś co się nazywa AppForSharePointWebToolkit. Instalujmy.

Po zainstalowaniu paczki w referencjach pojawi się wiele odwołań do Microsoft.SharePoint.Client.* oraz plik App.config, który jest naszym kolejnym celem. Otwórzmy go i dodajmy nową sekcję appSettings z  nasyzmi kluczami ClientId oraz ClientSecret. Podajemy klucze, które wcześniej sobie wygenerowaliśmy. U mnie to wygląda w ten sposób

[code lang="XML"]
<appSettings>
           <add key="ClientId" value="28921286-09f2-4bce-819a-4e53a12dabb6"/>
           <add key="ClientSecret" value="HOaS6LQbBi8QYU/1x67Bdae38qJh79qt+LY4IoLcQHM="/>
           <add key="ClientSettingsProvider.ServiceUri" value="" />
</appSettings>
 [/code]

Ostatnim elementem, który będzie nam potrzebny to dodanie w program.cs wpisu using Microsoft.SharePoint.Client; . I to wszystko.  Ja mam zwyczaju korzystać z dodatkowej klasy, której jedynym celem jest zwracanie clientContext dla danego adresu URL

[code lang="csharp"]
public static ClientContext GetClientContext(string siteUrl)
{
         Uri siteUri = new Uri(siteUrl);
         string realm = TokenHelper.GetRealmFromTargetUrl(siteUri);
         string accessToken = TokenHelper.GetAppOnlyAccessToken(TokenHelper.SharePointPrincipal, siteUri.Authority, realm).AccessToken;
         var clientContext = TokenHelper.GetClientContextWithAccessToken(siteUri.ToString(), accessToken);
         return clientContext;
}
 [/code]

Mając clientContext możemy robić w naszym tenancie co tylko chcemy.

Written by Tomasz Szulczewski

Od ponad 25 lat w różny sposób związany z IT. Ekspert cybersecurity znany jako Cybersecurity Ninja. Certyfikowany Architekt Microsoft 365. Adwokat prywatności, niedoszły dziennikarz oraz bloger.

Related Posts

Windows 365, rozwiązanie doskonałe?

Windows 365, rozwiązanie doskonałe?

Po dwóch dniach od premiery Windows 365 wersje próbne przestały być dostępne aż do odwołania. Czy to świadczy o tym, że rozwiązanie jest aż tak super, czy tylko o tym że Microsoft nie chce oddawać za darmo zbyt dużo mocy swoich komputerów? Czy to całe gadanie to tylko...

czytaj dalej
Co nowego w Microsoft 365 Family

Co nowego w Microsoft 365 Family

Microsoft 365 Family to nowa nazwa popularnego "office" dla użytkowników końcowych. Ci, którzy pracują w IT być może wiedzą, że kilka miesięcy temu Microsoft dokonał zmian w nazwach swoich produktów z linii 365, stąd również ta zmiana. Abstrahując od zmiany nazwy...

czytaj dalej

0 komentarzy