【发布时间】:2026-01-19 23:50:01
【问题描述】:
我们已将最新的 MSAL 库添加到 Xamarin 项目中,并将钥匙串共享功能添加到权利 plist:
该应用在开发人员计算机上构建正常,并且该应用针对 Azure AD B2C 进行了正确的身份验证。
当我们通过 ADO 构建并在 App Center 中发布(Ad-Hoc 预配)时,应用构建,并且似乎针对 Azure AD B2C 进行身份验证,但不与我们的其他 Azure 资源(API、存储等)进行通信。 ) 似乎未找到 Keychain 访问组,并且虽然身份验证正常进行,但 MSAL 未能将访问令牌保存在 Key Chain 中。
iOSTokenCacheAccessor.Save (System.String account, System.String service, System.String generic, System.Int32 type, System.String value)
Microsoft.Identity.Client.MsalClientException: The application does not have keychain access groups enabled in the Entitlements.plist. As a result, there was a failure to save to the iOS keychain.
我们认为这是因为在 Ad-Hoc 配置期间,在设备 ID 包含在配置文件中后,应用会重新签名,但 Ad-Hoc 配置文件权利部分仅包含 [app id]。* 而不是 com .microsoft.adalcache 值。
- entitlements.plist 是否在构建过程中合并到配置文件中,即,钥匙串组添加到 plist 的权利部分?
- 如果是这样,在构建管道中会发生什么以及何时发生?
- Ad-Hoc 预配如何在这种情况下工作?
非常感谢任何帮助,因为这目前正在阻止我们的发布。
【问题讨论】:
-
你能在MSAL repo 中打开一个问题并链接到这篇文章吗?谢谢。
-
MSAL .NET 强制您提供一个 teamId,它将在 dogfood 和开发之间发生变化。在 MSAL 中打开问题将使我们能够跟踪问题并让您及时了解修复。 MSAL 需要自行解析 teamId。
-
为了使用用不同苹果开发者账号签名的同一个应用,你需要使用$(AppIdentifierPrefix)com.microsoft.adalcache
-
珍妮,感谢 cmets。看起来这是 App Center 在使用 ad-hoc 配置时更改权利的问题(即要求 App Center 自动管理设备 ID)。目前我们被阻止并诉诸于删除 MSAL 库,除非我们能找到解决方法或修复。
-
已按要求向 GitHub 添加了错误:github.com/AzureAD/microsoft-authentication-library-for-dotnet/…
标签: ios azure-active-directory keychain adal msal