Do ynstallearrest in profyl, de tunnel komt omheech en alles liket klear. Dan werstartet de tillefoan, on-demand wekket de ferbining sûnder app op ’e foargrûn, en de tunnel wegert te starten. It profyl is der noch en it wachtwurd is noch korrekt, en dêrom stjoert dizze flater minsken op it ferkearde plak sykje. In Network Extension kin dyn geheim net út it profyl lêze: it hat in keyringferwizing nedich dy’t it sels oplosse kin.

De trochrin hjirûnder folget ien ferbiningseftige troch dy oerdracht, fan de fraach dy’t de ferwizing bout oant de werstart dy’t him test.

It profyl bewarret in hânfet, net it geheim

NEVPNProtocol iepenbiere passwordReference en sharedSecretReference om in reden. As de daemon in tunnel start, rint er miskien net yn dyn proses, dus kin er dyn koade net oanroppe en om in wachtwurd freegje. Hy lêst in bliuwende keyringferwizing, lost dy yn syn eigen kontekst op en hellet it item sels.

Do boust dy ferwizing troch de keyring derom te freegjen, wat in oare fraach is as freegje om de gegevens:

let query: [String: Any] = [
  kSecClass as String: kSecClassGenericPassword,
  kSecAttrService as String: "vpn-credentials",
  kSecAttrAccount as String: "user",
  kSecReturnPersistentRef as String: true,
  kSecMatchLimit as String: kSecMatchLimitOne
]

Jou it weromjûne objekt oan it protokol, net de gegevens fan it item. Yn ’e praktyk registrearret it profyl wêr’t it geheim wennet, en dêrom duplisearret in konfiguraasjeback-up it wachtwurd net stil yn in plist.

Wêrom’t de API -50 antwurdet

errSecParam betsjut dat de fraach of de wearde ferkeard foarme wie foar de operaasje, en it is de flater dy’t it meast sjoen wurdt as de fragen om ferwizing en gegevens trochinoar reitsje. Om gegevens freegje wylst de ûntfangende koade in ferwizing ferwachtet, rauwe bytes oan passwordReference tawize of freegje mei in tagongsgroep dy’t de app net brûke kin, se produsearje him allegear.

Omwikkele biblioteken nûgje hjirta. In helper dy’t bytes weromjout is net útwikselber mei ien dy’t in ferwizing weromjout, dus de reparaasje is meastentiids in oare fraach ynstee fan in oar wachtwurd.

Deselde misferhâlding ferklearret in profyl dat sûnder klacht bewarret en dan net ferbine kin: wat bewarre is, is in blob, net in hânfet, en de daemon hat neat om op te lossen.

Bewarret goed, mislearret by ferbinen

Bewarjen oefenet de kontekst fan dyn app. Ferbinen oefenet dy fan de daemon, en de beide hawwe net deselde tagong. In profyl kin dus elke test yn de simulator trochstean en by de earste on-demand start mislearje.

Dat is ek de foarm fan it werstartsymptoom: it wurket wylst de app iepen is en stjert as it systeem de tunnel sels start.

Test it eftergrûnpaad opsetlik foar it útbringen. Trigger in on-demand ferbining mei de app ticht, lês dan de konsole fan it apparaat ynstee fan it log fan de app, want de flater wurdt registrearret troch it proses dat besocht de ferwizing op te lossen. As de konsole sjen lit dat de daemon it item ôfwiist, is de ferwizing goed en is de tagonklikens fan it item it probleem.

Tagonklikens beslút oft in werstart wurket

It item moat lêsber wêze foar hokker systeemproses dan ek dat de tunnel start, en dat is in breder publyk as dyn app wylst dy op ’e foargrûn sit. Dy beheining kiest de tagonklikensattribút foar dy. In item dat beskerme is oant de earste ûntsluting is beskikber foar in eftergrûnstart neidat it apparaat ien kear ûntsletten is; in item dat easket dat it apparaat no ûntsletten is, is dat net.

De strangere klasse kieze is ferliedlik en dat is krekt wat in on-demand profyl op in skoft tillefoan brekt.

Nei it feroarjen fan de klasse, meitsje it item opnij ynstee fan attributen op it besteande te bewurkjen, bewarje dan it protokol opnij mei in frissere ferwizing. Attribútferoarings op in besteand item jouwe net altyd it gedrach dat de dokumintaasje ymplisearret, en in opnij boud item hellet de twifel fuort.

Rotaasje is wêr’t bewarre profylen ferrotsje

It wachtwurd yn ’e keyring feroarje feroaret net automatysk wêr’t it bewarre profyl nei wiist. It item wiskje is slimmer: it profyl hâldt in ferwizing nei eat dat net mear bestiet, en de flater liket op in ôfwiizing fan autentikaasje.

Rotaasje yn ien oarder. Wurkje it item by, freegje in nije bliuwende ferwizing op, bewarje it protokol opnij, ferbyn dan mei de app ticht om te bewizen dat de daemon him noch oplosse kin. Hâld it brûkerswachtwurd en it dielde geheim yn aparte items sadat elk op syn eigen skema rotearret, en log nea it fraachwurdboek of de ferwizing sels. It hânfet is gjin geheim, mar it is in kaart dêrhinne.

Relatearre artikelen