我们已将最新的 MSAL 库添加到我们的 Xamarin 项目中,并将钥匙串(keychain)共享功能添加到权利 plist 中:
该应用程序在开发人员机器上构建正常,并且该应用程序针对 Azure AD B2C 进行了正确的身份验证。
当我们通过 ADO 构建并在 App Center 中发布(临时配置)时,应用程序构建,并且似乎针对 Azure AD B2C 进行身份验证,但不与我们的其他 Azure 资源(API、存储等)通信。 ) 似乎找不到钥匙串(keychain)访问组,虽然身份验证正常进行,但 MSAL 无法将访问 token 保存在钥匙串(keychain)中。
iOSTokenCacheAccessor.Save (System.String account, System.String service, System.String generic, System.Int32 type, System.String value)
Microsoft.Identity.Client.MsalClientException:应用程序没有在 Entitlements.plist 中启用钥匙串(keychain)访问组。结果,保存到 iOS keychain 失败
。
我们认为这是因为在 Ad-Hoc 配置期间,在设备 ID 包含在配置配置文件中后应用程序被重新签名,但 Ad-Hoc 配置文件权利部分仅包含 [app id].* 而不是 com .microsoft.adalcache 值。
- entitlements.plist 是否在构建过程中合并到配置文件中,即,Keychain Groups 添加到 plist 的 entitlements 部分?
- 如果是这样,这是什么以及它何时在构建管道中发生?
- Ad-Hoc 供应如何适用于这种情况?
非常感谢任何帮助,因为这目前正在阻止我们的发布。
最佳答案
来自 MSAL 2.7.0 , MSAL 现在在运行时解析 TeamId。应该使用新属性 iOSKeychainSecurityGroup
而不是 KeychainSecurityGroup
。可以找到更多信息here . AppCenter 中也存在一个错误,他们在重新签署应用程序时在授权中使用了通配符。这已于 1 月 21 日修复。
关于ios - 带有 MSAL 的 Xamarin 无法保存访问 token ,因为在临时配置期间更改了钥匙串(keychain)访问组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53829119/