PowerApps

Jestem ogromnym fanem pracy z PowerApps i tworzenia rozwiązań biznesowych z użyciem tego narzędzia. Aż do minionego tygodnia nie byłem jednak świadom, że jeśli użyję połączeń do danych wymagających uprawnień (SharePoint w tym wypadku), wówczas użytkownik końcowy (korzystający z aplikacji), zostanie poproszony o pozwolenie jej na dostęp do danych używając uprawnień tegoż użytkownika.

Wiadomość, jaką użytkownik zobaczy, wygląda jak poniżej:

PowerApps app needs user permissions
Pop-up pytający o uprawnienia

Taka sytuacja to „no go” dla właścicieli biznesowych, którzy pytają dlaczego taki komunikat się pojawia. Uważają (słusznie zresztą), że kiedy zwykły użytkownik to zobaczy, w żaden przycisk nie kliknie, z obawy przed konsekwencjami.

Rozwiązanie?

Szukałem w internecie rozwiązań, informacji w jaki sposób można skonfigurować takie połączenie, by zawsze działało w kontekście wybranego użytkownika lub miało podwyższone uprawnienia. Znalazłem, że taki pomysł został już zgłoszony: https://powerusers.microsoft.com/t5/PowerApps-Ideas/Delegate-to-Administrator-Allow-access-window-when-sharing/idi-p/98739. Super, ale to na razie jest jedynie pomysł..

Następnie znalazłem ten temat na forum: https://powerusers.microsoft.com/t5/General-Discussion/End-Users-receive-pop-up-asking-for-permission-when-launching/td-p/31906/ i rozwiązanie opiusjące użycie cmdletów PowerShell dla PowerApps (opisanych tutaj: https://docs.microsoft.com/en-us/powerapps/administrator/powerapps-powershell).

Spróbowałem i zadziałało! Poniżej znamieściłem opis krok po kroku prowadzący przez kolejne etapy instalacji cmdletów i ich uruchomienia, by finalnie pozbyć się popup’ów na zawsze!

Instalacja PowerApps cmdlets

Ważne! Od 2019-01-07 cmdlety zostały rozdzielone na dwie grupy: Administrator i Maker. Aby uruchomić jakikolwiek skrypt z grupy Administrator konto, które zostanie użyte musi posiadać przypisaną licencję PowerApps P2.

Źródło: https://powerapps.microsoft.com/en-us/blog/gdpr-admin-powershell-cmdlets/

Ważne! Musisz posiadać konto z uprawnieniami administratora na maszynie, na której będziesz uruchamiać cmdlety, a także konto Global Administrator tenanta Office 365, by poprawnie wykonać instalację i uruchomienie cmdletów!

  • Pobierz skrypty PowerShell.
  • Rozpakuj je do wybranego folderu.
  • Otwórz Windows PowerShell w roli administratora.
  • Ustaw ścieżkę w konsoli do lokalizacji, w której znajdują się rozpakowane, pobrane pliki (używając polecenia „cd”).

Musisz zmienić/ podnieść poziom Execution Policy dla skryptów wykonywanych na Twojej maszynie. Wklej i uruchom poniższy skrypt:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Force

Następnie, z uwagi na znany problem, opisywany przez zespół Microsoft, uruchomienie skryptów może również wymagać ręcznego „odblokowania” w PowerShell. Skopiuj i uruchom poniższe polecenie:

dir . | Unblock-File

Następnie zaimportuj wymagane moduły:

Import-Module .\Microsoft.PowerApps.Administration.PowerShell.psm1 -Force 
Import-Module .\Microsoft.PowerApps.PowerShell.psm1 -Force

Uruchomienie PowerApps cmdlets

Poniższe polecenie otworzy okienko do wpisania danych do logowania (AAD account & password), które będą następnie używane przez polecenia. Użyj danych Globalnego Administratora. Sesja będzie ważna przez następnych 8 godzin:

Add-PowerAppsAccount
Prompt for credentials for PowerApps Cmdlets
Logowanie

Następnie otwórz stronę ze szczegółami aplikacji PowerApps, którą chcesz zmodyfikować i skopiuj jej App ID:

PowerApps app id
Pobieranie PowerApps App ID

Upewnij się, że konto Global Admin (jeśli nie jest to to samo konto, co Twoje), posiada uprawnienia „Co-owner” lub „Owner” dla aplikacji (oraz posiada przypisaną licencję PowerApps P2). Jeśli nie, udostępnij aplikację temu kontu:

Sharing PowerApps app with user as "Co-owner"
Współdzielenie aplikacji PowerApps z użytkownikiem jako „Co-owner”

Następnie, skopiuj, wstaw „APP-ID” swojej aplikacji i uruchom poniższy Cmdlet, by usunąć prośbę o uprawnienia w swojej aplikacji:

Set-AdminPowerAppApisToBypassConsent -AppName APP-ID -ApiVersion 2017-05-01
Correctly executed Cmdlet
Poprawnie wykonane uruchomienie cmdleta

Jeśli wszystko przebiegło poprawnie, powinno się pojawić: „Code: 200” i „Description: OK”. Od teraz, Twoi użytkownicy końcowi, gdy otworzą aplikację, nie będą już proszeni o zaakceptowanie dostępu do danych przez nią.

Disclaimer: przed uruchomieniem cmdletów opublikowałem aplikację ponownie używając konta Administratora Globalnego. Nie sprawdziłem, czy niewykonanie tego kroku spowodowałoby, że cmdlet uruchomiłby się niepoprawnie. Od czasu jego wykonania pracując zwykłym kontem, wielokrotnie modyfikowałem i ponownie publikowałem aplikację, jednak okienko z prośbą o uprawnienia już się nie pokazuje.