You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Unity开发的iOS应用中使用MSAL实现SSO单点登录的问题咨询

Unity iOS端集成MSAL实现单点登录解决方案

核心思路

不需要自行实现适配webview,MSAL官方iOS原生实现默认调用系统级安全认证会话ASWebAuthenticationSession,完全符合微软的安全校验要求,也能自动处理登录后的回调和token回传。你之前编译的.NET版MSAL dll可以保留用来处理token缓存、静默登录、接口鉴权等逻辑,仅交互登录环节走原生侧对接即可。

具体实现步骤

  • 第一步:调整C#层的平台分支逻辑,iOS端不再直接调用.NET MSAL的AcquireTokenInteractive方法,改为调用封装的原生MSAL登录接口
  • 第二步:导出Xcode工程后做基础配置
    • 在Info.plist的URL Types中添加重定向URI对应的Scheme,比如你的重定向URI为msal{你的clientID}://auth,就把msal{你的clientID}填入URL Schemes字段
    • 开启项目的Keychain Sharing能力,添加com.microsoft.adalcache、com.microsoft.msalcache两个keychain组,保证MSAL可以正常读写凭证缓存
    • 通过CocoaPods引入原生MSAL库,pod配置为pod 'MSAL'即可
  • 第三步:编写iOS原生桥接代码,暴露登录方法给Unity调用
    原生侧接收C#层传入的client id、重定向URI、租户地址、权限域等参数,初始化MSAL客户端后触发交互登录,登录完成后将access token、过期时间、用户信息等参数回调给C#层
  • 第四步:C#层接收原生返回的凭证后,可直接存入.NET MSAL的缓存中,后续静默登录、刷新token、接口调用都可以复用你原有.NET MSAL的逻辑

现有代码适配示例

IPublicClientApplication PublicClientApp = PublicClientApplicationBuilder
        .Create(kClientID)
        .WithRedirectUri(kRedirectUri)
        .WithAuthority(new Uri(kAuthority))
        .Build();
IEnumerable<string> scopes = new List<string> { "https://graph.microsoft.com/.default" };
AuthenticationResult result;

#if UNITY_IOS && !UNITY_EDITOR
// iOS平台走原生MSAL登录逻辑
string accessToken = await iOSMSALBridge.Instance.RequestTokenAsync(kClientID, kRedirectUri, kAuthority, scopes);
// 可根据原生返回的完整凭证信息构造AuthenticationResult对象,方便后续逻辑统一处理
result = new AuthenticationResult(accessToken, false, null, DateTimeOffset.UtcNow.AddHours(1), DateTimeOffset.UtcNow.AddHours(1), null, null, null, Guid.NewGuid());
#else
// 其他平台保留原有交互登录逻辑
result = await PublicClientApp.AcquireTokenInteractive(scopes)
                   .ExecuteAsync();
#endif

Debug.Log(result.AccessToken);

注意事项

  • 不要自定义webview加载微软登录页,微软的身份校验逻辑会拦截非系统会话的自定义webview请求,触发风控导致登录失败
  • 重定向URI必须和Azure后台配置的完全一致,否则系统登录完成后无法回调回你的应用
  • 必须开启Keychain Sharing权限,否则MSAL无法正常缓存凭证,每次重启应用都需要重新登录

内容的提问来源于stack exchange,提问作者TRS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 04:06:03