Dav*_*het 4 xamarin.ios ios xamarin.forms azure-ad-msal
我们有一个 Xamarin.Forms 应用程序,并尝试使用 MSAL 身份验证,并面临 iOS 项目的问题。它可以在模拟器中运行,但是当由Azure管道构建并安装在真实的iPhone上时,会发生异常:
MSAL.Xamarin.iOS.4.14.0.MsalClient 异常:ErrorCode:missing_entitlements Microsoft.Identity.Client.MsalClientException:应用程序未在 Entitlements.plist 中启用钥匙串访问组。结果,无法保存到 iOS 钥匙串。Entitlements.plist 中未启用钥匙串访问组“OURID.com.microsoft.adalcache”...
OURID 当然是真实值的替代品。
这是 entitlements.plist 中的内容:
<key>keychain-access-groups</key>
<array>
<string>$(AppIdentifierPrefix)com.microsoft.adalcache</string>
</array>
Run Code Online (Sandbox Code Playgroud)
在 B2CAuthenticationService 构造函数中:
var builder = PublicClientApplicationBuilder.Create(B2CConstants.ClientID)
.WithB2CAuthority(B2CConstants.AuthoritySignInSignUp)
.WithIosKeychainSecurityGroup(B2CConstants.IOSKeyChainGroup)
.WithRedirectUri($"msal{B2CConstants.ClientID}://auth");
Run Code Online (Sandbox Code Playgroud)
我可能缺少什么导致异常?
添加:如果我向管道添加变量替换任务,即使这样,它们也只能替换 xml 和 json 配置文件中的值;不是 plist 文件。
我通过在文本编辑器中编辑项目并在中指定 entitlements.plist 解决了该问题
<CodesignEntitlements>Entitlements.plist</CodesignEntitlements>
Run Code Online (Sandbox Code Playgroud)
物业组内
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhone' ">
Run Code Online (Sandbox Code Playgroud)
当我之前通过项目 GUI 执行此操作时,它仅影响属性组
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhoneSimulator' ">
Run Code Online (Sandbox Code Playgroud)
这就是为什么它在模拟器中对我有用,但在真实设备上却不起作用。
| 归档时间: |
|
| 查看次数: |
1658 次 |
| 最近记录: |