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.FontAwesome4.0.0MITFontAwesome icon pack for .NET MAUI.
AutoMapper13.0.1MITObject-to-object mapper (DTOs, models…).
CommunityToolkit.Maui9.1.1MITUI components, helpers, and extensions for .NET MAUI.
CommunityToolkit.Mvvm8.4.0MITOfficial MVVM Toolkit (INotifyPropertyChanged, RelayCommand…).
Flurl.Http4.0.2MITFluent HTTP client with URL chaining.
Flurl.Http.Newtonsoft0.9.1MITFlurl integration with Newtonsoft.Json.
Microsoft.Extensions.Logging.Debug9.0.10MITLogging provider that outputs to Debug.
Microsoft.Maui.Controls9.0.90MITMain UI framework for .NET MAUI Controls.
MonkeyCache3.0.0-betaMITSimple local key/value caching library.
MonkeyCache.FileStore3.0.0-betaMITFileStore backend for MonkeyCache.
Newtonsoft.Json13.0.4MITPopular JSON library for serialization/deserialization.
Plugin.TabbedPage.Maui1.2.8MITPlugin that enhances TabbedPage behavior in MAUI.
Polly8.6.4BSD-3-ClauseResilience library : retry, circuit-breaker, timeout, fallback…
Powell.Model2.74.0ProprietaryInternal Powell Software model library.
Powell.Service2.74.0ProprietaryInternal Powell Software service layer.
Prism.DryIoc.Maui9.0.537MITMVVM framework with navigation + DI (DryIoc) for MAUI.
RGPopup.Maui1.2.2MITPopup component for .NET MAUI.
System.IdentityModel.Tokens.Jwt8.13.0MITJWT token creation, parsing, and validation.
Xamarin.AndroidX.Activity.Ktx1.10.1.2Apache 2.0Kotlin extensions for AndroidX Activity APIs.
Xamarin.AndroidX.Fragment.Ktx1.8.8Apache 2.0Kotlin extensions for AndroidX Fragment APIs.
Xamarin.AndroidX.SavedState1.3.0.1Apache 2.0AndroidX SavedState API for state persistence.
Xamarin.Firebase.Messaging124.1.2Apache 2.0Firebase Cloud Messaging integration for Android.
Xamarin.GooglePlayServices.Base118.7.2Apache 2.0Core Google Play Services dependency.
Xamarin.ShortcutBadger1.1.22.80Apache 2.0Badge counter management for Android app icons.

 

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 (egOktaOneLogin…)​
  • 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" 

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