Rydych chi’n gosod proffil, mae’r twnnel yn codi, ac mae popeth yn edrych yn barod. Yna mae’r ffôn yn ailgychwyn, mae on-demand yn deffro’r cysylltiad heb app yn y blaendir, ac mae’r twnnel yn gwrthod cychwyn. Mae’r proffil yn dal yno ac mae’r cyfrinair yn dal yn gywir, a dyna pam mae’r methiant hwn yn anfon pobl i chwilio yn y lle anghywir. Ni all Network Extension ddarllen eich cyfrinach o’r proffil: mae angen cyfeiriad cadwyn allweddi arno y gall ei ddatrys ei hun.

Mae’r daith isod yn dilyn un ymgais gysylltu drwy’r trosglwyddiad hwnnw, o’r ymholiad sy’n adeiladu’r cyfeiriad hyd at yr ailgychwyn sy’n ei brofi.

Mae’r proffil yn storio dolen, nid y gyfrinach

Mae NEVPNProtocol yn datgelu passwordReference a sharedSecretReference am reswm. Pan fydd y daemon yn cychwyn twnnel, efallai nad yw’n rhedeg o fewn eich proses, felly ni all alw eich cod a gofyn am gyfrinair. Mae’n darllen cyfeiriad parhaus o’r gadwyn allweddi, yn ei ddatrys yn ei gyd-destun ei hun, ac yn nôl yr eitem ei hun.

Rydych chi’n adeiladu’r cyfeiriad hwnnw drwy ofyn i’r gadwyn allweddi amdano, sy’n gais gwahanol i ofyn am y data:

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
]

Rhowch y gwrthrych a ddychwelwyd i’r protocol, nid data’r eitem. Yn ymarferol mae’r proffil yn cofnodi lle mae’r gyfrinach yn byw, a dyna hefyd pam nad yw copi wrth gefn o’r ffurfweddiad yn dyblygu’r cyfrinair yn dawel i mewn i blist.

Pam mae’r API yn ateb -50

Mae errSecParam yn golygu bod y cais neu’r gwerth wedi’i gamffurfio ar gyfer y llawdriniaeth, a dyma’r gwall a welir amlaf pan fydd y ceisiadau cyfeiriad a data yn mynd ar chwâl. Gofyn am ddata tra bo’r cod sy’n derbyn yn disgwyl cyfeiriad, neilltuo beitiau crai i passwordReference, neu ymholi gyda grŵp mynediad na all yr app ei ddefnyddio, maent i gyd yn ei gynhyrchu.

Mae llyfrgelloedd lapio yn gwahodd hyn. Nid yw cynorthwyydd sy’n dychwelyd beitiau yn gyfnewidiol ag un sy’n dychwelyd cyfeiriad, felly ymholiad gwahanol, nid cyfrinair gwahanol, yw’r atgyweiriad fel arfer.

Mae’r un camgymysgedd yn esbonio proffil sy’n cadw heb gŵyn ac yna’n methu cysylltu: blob sydd wedi’i storio, nid dolen, ac nid oes gan y daemon ddim i’w ddatrys.

Yn cadw’n iawn, yn methu wrth gysylltu

Mae cadw yn ymarfer cyd-destun eich app. Mae cysylltu yn ymarfer un y daemon, ac nid oes gan y ddau yr un mynediad. Felly gall proffil basio pob prawf yn y simulator a methu ar y cychwyn on-demand cyntaf.

Dyna hefyd siâp y symptom ailgychwyn: mae’n gweithio tra bo’r app ar agor ac yn marw pan fydd y system yn cychwyn y twnnel ei hun.

Profwch y llwybr cefndir yn fwriadol cyn cludo. Sbardunwch gysylltiad on-demand gyda’r app ar gau, yna darllenwch gonsol y ddyfais yn hytrach na log yr app, oherwydd y broses a geisiodd ddatrys y cyfeiriad sy’n cofnodi’r methiant. Os yw’r gonsol yn dangos bod y daemon yn gwrthod yr eitem, mae’r cyfeiriad yn iawn a hygyrchedd yr eitem yw’r broblem.

Hygyrchedd sy’n penderfynu a fydd ailgychwyn yn gweithio

Rhaid i’r eitem fod yn ddarllenadwy gan ba bynnag broses system sy’n cychwyn y twnnel, ac mae hynny’n gynulleidfa ehangach na’ch app tra bo yn y blaendir. Mae’r cyfyngiad hwnnw’n dewis y priodoledd hygyrchedd i chi. Mae eitem a warchodir tan y datgloi cyntaf ar gael i gychwyn cefndir ar ôl i’r ddyfais gael ei datgloi unwaith; nid yw eitem sy’n mynnu bod y ddyfais yn ddatgloi nawr ar gael.

Mae dewis y dosbarth mwy llym yn demtasiwn a dyna’n union sy’n torri proffil on-demand ar ffôn wedi’i gloi.

Ar ôl newid y dosbarth, ailgrewch yr eitem yn hytrach na golygu priodweddau’r un sy’n bodoli, yna ailddefnyddio’r protocol gyda chyfeiriad newydd. Nid yw newidiadau priodweddau ar eitem sy’n bodoli bob amser yn cynhyrchu’r ymddygiad y mae’r ddogfennaeth yn ei awgrymu, ac mae eitem wedi’i hailadeiladu yn dileu’r amheuaeth.

Cylchdroi yw lle mae proffiliau wedi’u cadw yn pydru

Nid yw newid y cyfrinair yn y gadwyn allweddi yn newid yn awtomatig yr hyn y mae’r proffil wedi’i gadw yn cyfeirio ato. Mae dileu’r eitem yn waeth: mae’r proffil yn cadw cyfeiriad at rywbeth nad yw’n bodoli mwyach, ac mae’r methiant yn edrych fel gwrthodiad dilysu.

Cylchdrowch mewn un drefn. Diweddarwch yr eitem, ymholwch am gyfeiriad parhaus newydd, ailgadwch y protocol, yna cysylltwch gyda’r app ar gau i brofi bod y daemon yn dal i allu ei ddatrys. Cadwch gyfrinair y defnyddiwr a’r gyfrinach a rennir mewn eitemau ar wahân fel bod pob un yn cylchdroi ar ei amserlen ei hun, a pheidiwch byth â logio geiriadur yr ymholiad na’r cyfeiriad ei hun. Nid yw’r ddolen yn gyfrinach, ond mae’n fap at un.

Erthyglau cysylltiedig