Technical architecture of the Powell app

Infrastructure

Available on the Apple store and Google play store, Powell apps authenticate users through tenant sign-on infrastructure (Microsoft only or SSO provider)​

Application configuration is requested to Powell API servers after authentication

Frameworks and libraries

Component nameVersionLicenseDescription
AathifMahir.Maui.MauiIcons.FontAwesome6.0.0MITFontAwesome icon pack for .NET MAUI.
AutoMapper16.2.0CommercialObject-to-object mapper (DTOs, models…).
CommunityToolkit.Maui15.0.1MITUI components, helpers, and extensions for .NET MAUI (also provides popups and badge).
CommunityToolkit.Mvvm8.4.2MITOfficial MVVM Toolkit (INotifyPropertyChanged, RelayCommand…).
Flurl.Http4.0.2MITFluent HTTP client with URL chaining.
HorusStudio.Maui.Skeleton3.0.0MITSkeleton loading placeholders for MAUI views.
JWT11.1.0CC0-1.0Open standard (RFC 7519) that defines a compact token format.
Microsoft.Extensions.Configuration.Binder10.0.12MITBinds configuration sections to strongly-typed objects.
Microsoft.Extensions.Configuration.Json10.0.12MITJSON configuration provider (appsettings.json).
Microsoft.Extensions.Logging.ApplicationInsights2.23.0MITLogging provider that ships telemetry to Application Insights.
Microsoft.Identity.Client4.89.0MITMSAL — Azure AD sign-in and silent token refresh.
Microsoft.Identity.Client.Extensions.Msal4.89.0MITMSAL token-cache persistence extensions.
Microsoft.Maui.Controls10.0.101MITMain UI framework for .NET MAUI Controls.
Microsoft.Maui.Controls.Compatibility10.0.101MITCompatibility layer, referenced explicitly to stay in lockstep with Controls.
MonkeyCache.FileStore3.0.0-betaMITFileStore backend for MonkeyCache (local key/value caching).
Newtonsoft.Json13.0.4MITPopular JSON library for serialization/deserialization.
Plugin.TabbedPage.Maui1.2.8MITPlugin that enhances TabbedPage behavior in MAUI.
Polly8.8.0BSD-3-ClauseResilience library: retry, circuit-breaker, timeout, fallback…
Prism.DryIoc.Maui9.0.537Prism CommunityMVVM framework with navigation + DI (DryIoc) for MAUI.

 

Authentication

App consent â€‹

Powell apps has to be authorized over Azure Active Directory.

  • A consent link is available on Powell Manager for administrators​
  • Consent has to be done before app deployment

Authentication​

Powell Apps only requires only one successful authentication ​

  • Authentication is stored until the user logout ​
  • The app can be closed and reopened without user authentication​
  • Microsoft authentication settings supported (MFA, Microsoft Authenticator)

MSAL.NET Integration

Powell Apps uses MSAL.NET to manage authentication and token refresh securely.

  • Tokens are cached to allow silent reconnection without prompting the user.

  • MSAL.NET handles silent renewal and Microsoft identity flows for a seamless login experience.

  • It is also used to obtain the necessary tokens for Microsoft Graph API access after admin consent.

Single Sign-On (SSO)

​SSO shares centralized authentication servers that all other applications and systems use for authentication​

  • Powell Apps supports SSO providers connected to the Microsoft authentication process (eg: Okta, OneLogin…)​
  • The same user experience has standard Microsoft authentication

Graph API access

​App consent grants access to several user information from Microsoft Graph API​

  • If Powell Apps requests are forbidden, UI will be adapted to hide objects linked to forbid data

Conditional Access Policy

Our application integrates a Webview (embedded browser) to display your intranet pages, but unfortunately, this component does not support device compliance-related conditional access rules.

But you can exclude the following apps from your rule to avoid this limitation:
- "Office365" => Authentication form
- "Powell365 - Mobile App"
- "Powell-GraphAPI" or "Powell Intranet" 
 

Permissions by feature

Each app feature only activates if the corresponding Graph/SharePoint permission has been consented to at the tenant level. If a permission is denied, the UI hides the objects tied to that data.

FeatureRequired permissionJustification
Authentication / sessionopenid, 
offline_access, 
User.Read
SSO login and session persistence without reprompting
Org chartUser.Read.AllReads jobTitle, department, officeLocation, mobilePhone, businessPhones, manager
Directory / people searchPeople.Read.AllContact suggestions and relevant-people search
CalendarCalendars.ReadWriteReading and creating events
Intranet: pages and filesSites.Read.All, Files.Read.AllReading SharePoint pages and documents
Intranet: lists (create/update)AllSites.WriteCovers item-level operations (the recycle call is a POST carrying an X-HTTP-Method: DELETE header, so it's item-level, not list-level)
Intranet: list/file reads, effective permissionsAllSites.ReadRequired for EffectiveBasePermissions and item/file reads
Metadata / taxonomyTermStore.Read.AllResolving managed metadata terms
Flexdesk: Office/room locationPlace.Read.AllRoom and space data for location/booking features


Was this article helpful?
0 out of 0 found this helpful