在带有模拟器的 Xamarin.iOS 中使用 Azure AD B2C - 钥匙串问题(团队 ID 为空)

Jul*_* SD 5 c# xamarin.ios xamarin xamarin.forms azure-ad-b2c

我正在开发 Xamarin.Forms 应用程序,并设置 Azure AD B2C 进行身份验证。我正在遵循官方教程。对于 Andorid,一切都完美无缺,但我在 iOS 项目上遇到了问题。

我已经设置了教程中提到的所有内容,但这还不够。在这篇文章中,它描述了您应该如何配置iOS Bundle Signing以引用自定义权利Entitlements.plist。否则你会得到这个错误:

Microsoft.Identity.Client.MsalClientException:应用程序无法访问应用程序发布者的 iOS 钥匙串(TeamId 为 null)。这是在同一发布者的应用程序之间启用单点登录所必需的。这是 iOS 配置问题。有关启用钥匙串访问的更多详细信息,请参阅 https://aka.ms/msal-net-enable-keychain-access 。

好吧,如果您使用模拟器执行此操作,则它不起作用,因为显然,您无法在使用模拟器时在 iOS 捆绑签名配置中设置任何自定义权利(此处注释)。

这是否意味着我无法在 iOS 模拟器中测试 Azure AD B2C?

编辑:如果您没有 Apple 开发者计划签名身份,您似乎无法设置自定义权利。这是否意味着如果没有注册 Apple 开发计划,我就无法在 iOS 模拟器中测试 Azure AD B2C?

谢谢!

Ale*_*akh 6

您可以在 iOS Simulator 中使用自定义权利,包括钥匙串访问组。它的完成方式与您为设备构建设置自定义权利的方式相同,只是默认情况下对模拟器禁用。脚步:

  1. 修改您的自定义Entitlements.plist以包含钥匙串访问组:

    <key>keychain-access-groups</key>
    <array>
         <string>$(AppIdentifierPrefix)com.microsoft.adalcache</string>
    </array>
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将权利应用到项目设置中的 iOS 模拟器配置:

在此输入图像描述

一旦完成此操作,MSAL 库将能够访问该钥匙串组以在应用程序启动之间存储机密。