Приложение не может получить доступ к цепочке ключей iOS в Xamarin.Forms, но работает в Android - PullRequest
0 голосов
/ 05 августа 2020

Здравствуйте, я изучаю 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, я действительно не уверен, что мне может не хватать. Любая помощь будет принята с благодарностью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...