Используя NEVPNManager, как установить SharedSecretReference

Поэтому я пытаюсь использовать NEVPNManager для программной настройки VPN. Я застрял в конфигурации и действительно запутался, что и куда.

SharedSecretReference действительно сбивает меня с толку. Я видел вещи в другом месте, в которых говорилось, что мне нужно использовать брелок, но как и почему. Я могу подключиться к этому VPN примерно с 6 вариантами, используя его вручную, так зачем мне здесь так много.

Если вы видите что-то еще, что я могу делать неправильно, пожалуйста, дайте мне знать. Это точный код, который я использую в настоящее время

    NEVPNProtocolIPSec *p = [[NEVPNProtocolIPSec alloc] init];
    p.username = [config objectForKey: @"username"];
    p.passwordReference = [config objectForKey: @"password"];
    p.serverAddress = [config objectForKey: @"ip"];
    p.localIdentifier = [config objectForKey: @"vpn"];
    p.remoteIdentifier = [config objectForKey: @"vpn"];
    p.useExtendedAuthentication = NO;
    p.authenticationMethod = NEVPNIKEAuthenticationMethodSharedSecret;   
    p.disconnectOnSleep = NO;

    p.sharedSecretReference = [config objectForKey: @"psk"];

person Bk Razor    schedule 26.10.2017    source источник


Ответы (1)


Важно понимать, что вы предоставляете NEVPNManager конфигурацию, которую он может использовать для запуска VPN-подключения, даже если ваше приложение неактивно (через приложение «Настройки»). Менеджер VPN должен иметь возможность извлекать защищенные данные (общий секрет или пароль) из цепочки для ключей, минуя ваше приложение. Для этого он использует постоянную ссылку на секрет в связке ключей, а не на сам секрет. Если вы используете такую ​​библиотеку, как KeychainAccess, эту ссылку легко получить и установить:

let keychain = Keychain()
let persistentRefSharedSecret = keychain[attributes: "my_shared_secret"].persistentRef
let persistentRefPassword = keychain[attributes: "my_password"].persistentRef

...

p.sharedSecretReference = persistentRefSharedSecret
p.passwordReference = persistentRefPassword
person Marcel    schedule 28.10.2017
comment
Чувак, я бы хотел, чтобы ты пришел раньше, лол. Это сэкономило бы мне десятки часов. Мне удалось сделать это по старинке всего за несколько часов до того, как вы опубликовали это, но я хочу проверить эту библиотеку. Это также для Objective-c? - person Bk Razor; 29.10.2017
comment
FXKeychain имеет метод dataRefForKey: github.com/nicklockwood/FXKeychain - person Marcel; 29.10.2017