MAUI怎么集成认证服务 MAUI MSAL登录教程

煙雲
发布: 2025-12-23 06:27:18
原创
119人浏览过
MAUI 集成认证服务基于 MSAL.NET 实现,利用平台原生能力(如 WebAuthenticator、ASWebAuthenticationSession、Chrome Custom Tabs)安全唤起登录页,自动处理重定向、令牌缓存与刷新;需在 Entra 管理中心注册应用并配置客户端 ID、租户 ID 及各平台重定向 URI;通过 NuGet 引入 Microsoft.Identity.Client,在 MauiProgram.cs 中注册 IPublicClientApplication;封装 AuthService 调用 AcquireTokenInteractive 登录、RemoveAsync 登出;iOS/Android 需重写 OpenUrl/OnNewIntent 传递回调;登录后可获取用户信息及令牌,推荐结合 AuthenticationStateProvider 与 AuthorizeView 实现权限控制。

maui怎么集成认证服务 maui msal登录教程

MAUI 集成认证服务,核心是用 MSAL.NET(Microsoft Authentication Library)实现基于 Microsoft 标识平台(如 Azure AD、Entra ID 或 Azure AD B2C)的登录。它不依赖 WebView 手动拼接 URL,而是通过平台原生能力(如 Windows 的 WebAuthenticator、iOS/macOS 的 ASWebAuthenticationSession、Android 的 Chrome Custom Tabs)安全唤起登录页,并自动处理重定向、令牌缓存与刷新。

准备应用注册和配置信息

在 Microsoft Entra 管理中心完成以下操作:

  • 注册新应用,选择“单页应用”或“公共客户端(移动/桌面)”类型(不要选“Web”,除非你托管后端
  • 记录关键值:应用程序(客户端)ID、目录(租户)ID
  • 为每个目标平台添加重定向 URI:
    • Windows:msal<client-id>://auth</client-id>
    • iOS/macOS:msauth.<bundle-id>://auth</bundle-id>(需在 Xcode 中配好 Bundle ID)
    • Android:msal<client-id>://auth</client-id>(并在 AndroidManifest.xml 声明 intent-filter)

安装 MSAL.NET 并初始化客户端

在 MAUI 主项目(.csproj)中添加 NuGet 包:

<PackageReference Include="Microsoft.Identity.Client" Version="4.62.2" />
登录后复制

MauiProgram.cs 中注册 MSAL 公共客户端:

醒文
醒文

文字排版美化生图工具

醒文 131
查看详情 醒文
var clientId = "your-client-id";
var tenantId = "your-tenant-id";
var redirectUri = DeviceInfo.Platform switch
{
    DevicePlatform.Windows => "msal" + clientId + "://auth",
    DevicePlatform.iOS => "msauth.your.bundle.id://auth",
    DevicePlatform.Android => "msal" + clientId + "://auth",
    _ => throw new PlatformNotSupportedException()
};
<p>var pca = PublicClientApplicationBuilder.Create(clientId)
.WithTenantId(tenantId)
.WithRedirectUri(redirectUri)
.WithLogging((level, message, containsPii) =>
Debug.WriteLine($"MSAL: {level} - {message}"))
.Build();</p><p>builder.Services.AddSingleton(pca);
登录后复制

封装登录/登出逻辑并调用 WebAuthenticator

MAUI 使用 WebAuthenticator.Default.AuthenticateAsync() 启动系统浏览器流程,MSAL 会自动构造授权 URL 并监听回调:

  • 创建一个服务类(如 AuthService),注入 IPublicClientApplication
  • 登录方法中调用 AcquireTokenInteractive(),它内部会触发 WebAuthenticator
  • 登出调用 RemoveAsync(account) 清除本地缓存账号
  • 注意:iOS 需在 AppDelegate.cs 中重写 OpenUrl;Android 需在 MainActivity.cs 中重写 OnNewIntent,把回调传给 MSAL 处理

在页面中使用并显示用户状态

登录成功后,MSAL 返回 AuthenticationResult,包含 ID Token 和访问令牌。你可以提取用户基本信息:

  • result.Account.Username(通常为邮箱)
  • result.Account.Name(显示名)
  • result.IdToken 可用于调用受保护 API(如 Microsoft Graph)
  • 建议将登录状态封装为 AuthenticationStateProvider,配合 AuthorizeView 组件做 UI 权限控制

基本上就这些。不需要手写 OAuth 流程,也不用管理 token 过期——MSAL 自动刷新。关键点在于注册正确、重定向 URI 匹配、平台回调桥接到位。

以上就是MAUI怎么集成认证服务 MAUI MSAL登录教程的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号