带有MSAL的Xamarin无法保存访问令牌,因为在临时设置期间更改了钥匙串访问组

时间:2018-12-18 08:37:20

标签: ios azure-active-directory keychain adal msal

我们已将最新的MSAL库添加到我们的Xamarin项目中,并将钥匙串共享功能添加到了权利plist中:

enter image description here

该应用程序可以在开发人员计算机上正常构建,并且可以根据Azure AD B2C正确进行身份验证。

当我们通过ADO进行构建并在App Center中发布(Ad-Hoc设置)时,该应用即会构建,并且似乎可以通过Azure AD B2C进行身份验证,但不会与我们的其他Azure资源(API,存储等)进行通信。 )似乎没有找到钥匙串访问组,并且在正常进行身份验证时,MSAL无法将访问令牌保存在钥匙串中。

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值。

  1. 在构建到个人资料期间,entitlements.plist是否会合并,即,将钥匙串组添加到plist的“ entitlements”部分?
  2. 如果是,这是什么?什么时候在构建管道中发生?
  3. Ad-Hoc设置如何在这种情况下工作?

真的很感谢任何帮助,因为这目前阻止了我们的发布。

1 个答案:

答案 0 :(得分:4)

MSAL 2.7.0开始,MSAL现在在运行时解析TeamId。应该使用新属性iOSKeychainSecurityGroup代替KeychainSecurityGroup。可以找到更多信息here。 AppCenter中还存在一个错误,即当他们重新签名应用程序时,他们在“权利”中使用通配符。自1/21起,此问题已修复。