Здравствуйте, я изучаю MSAL, но обнаружил проблему с проводным подключением. Я полностью следил за учебником и использую образец кода. Но у меня все еще есть это исключение, собирающее клиента в App.xaml.cs :
microsoft.identity.client.msalclientexception: приложение не может получить доступ к цепочке ключей ios для издатель приложения (идентификатор команды равен нулю). это необходимо для включения единого входа между приложениями одного и того же издателя. это проблема конфигурации ios. см. https://aka.ms/msal-net-enable-keychain-access для получения дополнительной информации о включении доступа к связке ключей.
AuthenticationClient = PublicClientApplicationBuilder.Create(Constants.ClientId)
.WithIosKeychainSecurityGroup(Constants.IosKeychainSecurityGroups)
.WithB2CAuthority(Constants.AuthoritySignin)
.WithRedirectUri($"msal{Constants.ClientId}://auth")
.Build();
Относительные настройки следующие:
info.plist:
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLName</key>
<string>ADB2C Auth</string>
<key>CFBundleURLSchemes</key>
<array>
<string>msal....</string>
</array>
<key>CFBundleTypeRole</key>
<string>None</string>
</dict>
<dict>
<key>CFBundleURLName</key>
<string>URL Type 1</string>
</dict>
</array>
ioskeychain в Contants.cs :
// set to a unique value for your app, such as your bundle identifier. Used on iOS to share keychain access.
static readonly string iosKeychainSecurityGroup = "com.xamarin.adb2cauthorization";
Entitlements.plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>keychain-access-groups</key>
<array>
<string>$(AppIdentifierPrefix)com.xamarin.adb2cauthorization</string>
</array>
</dict>
</plist>
AppDelegate:
public override bool OpenUrl(UIApplication app, NSUrl url, NSDictionary options)
{
AuthenticationContinuationHelper.SetAuthenticationContinuationEventArgs(url);
return base.OpenUrl(app, url, options);
}
И я попытался обновить Microsoft.Identity.Client до v4.17.1, он все еще не работает. Поскольку код общего доступа работает для части Android, я действительно не уверен, что мне может не хватать. Любая помощь будет принята с благодарностью.