آپ پروفائل انسٹال کرتے ہیں، ٹنل اوپر آتا ہے، اور سب کچھ مکمل لگتا ہے۔ پھر فون ری بوٹ ہوتا ہے، on-demand سامنے کوئی ایپ کے بغیر کنکشن جگاتا ہے، اور ٹنل شروع ہونے سے انکار کرتا ہے۔ پروفائل اب بھی موجود ہے اور پاس ورڈ اب بھی درست ہے، اسی لیے یہ ناکامی لوگوں کو غلط جگہ تلاش کرنے بھیجتی ہے۔ Network Extension آپ کا راز پروفائل سے نہیں پڑھ سکتا: اسے کی چین کا ایسا حوالہ چاہیے جو وہ خود حل کر سکے۔

نیچے دی گئی رہنمائی اسی حوالے کو بنانے والی کوئری سے لے کر اسے جانچنے والے ری بوٹ تک، اسی حوالے سپاری کے ذریعے ایک کنکشن کی کوشش کا پیچھا کرتی ہے۔

پروفائل ہینڈل رکھتا ہے، راز نہیں

NEVPNProtocol کسی وجہ سے passwordReference اور sharedSecretReference ظاہر کرتا ہے۔ جب ڈیمن ٹنل شروع کرتا ہے تو وہ آپ کے عمل کے اندر نہ چل رہا ہو، اس لیے وہ آپ کا کوڈ بلا کر پاس ورڈ نہیں مانگ سکتا۔ وہ کی چین کا مستقل حوالہ پڑھتا ہے، اسے اپنے سیاق میں حل کرتا ہے، اور آئٹم خود لے آتا ہے۔

آپ وہ حوالہ کی چین سے مانگ کر بناتے ہیں، جو ڈیٹا مانگنے سے مختلف درخواست ہے:

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
]

واپس ملی شے پروٹوکول کو دیں، آئٹم کا ڈیٹا نہیں۔ عملی طور پر پروفائل درج کرتا ہے کہ راز کہاں رہتا ہے، اسی لیے کنفیگریشن کا بیک اپ پاس ورڈ خاموشی سے plist میں نقل نہیں کرتا۔

API -50 کیوں جواب دیتا ہے

errSecParam کا مطلب ہے کہ درخواست یا قدر اس عمل کے لیے بگڑی ہوئی تھی، اور حوالے اور ڈیٹا کی درخواستیں گڈمڈ ہونے پر یہی خرابی سب سے زیادہ نظر آتی ہے۔ جب وصول کرنے والا کوڈ حوالے کا انتظار کر رہا ہو تو ڈیٹا مانگنا، passwordReference میں خام بائٹس رکھنا، یا ایسے رسائی گروپ کے ساتھ کوئری کرنا جو ایپ استعمال نہیں کر سکتی، یہ سب اسے پیدا کرتے ہیں۔

ریپر لائبریریاں اس کی دعوت دیتی ہیں۔ بائٹس واپس کرنے والا مددگار حوالہ واپس کرنے والے کے ساتھ بدلا نہیں جا سکتا، اس لیے درستی عام طور پر دوسرا پاس ورڈ نہیں، دوسری کوئری ہوتی ہے۔

یہی عدم مطابقت ایسی پروفائل کی وضاحت کرتی ہے جو بغیر شکایت محفوظ ہوتی ہے اور پھر کنیکٹ نہیں ہوتی: محفوظ شدہ بلاب ہے، ہینڈل نہیں، اور ڈیمن کے پاس حل کرنے کو کچھ نہیں۔

اچھی طرح محفوظ ہوتی ہے، کنیکٹ ہوتے وقت ناکام

محفوظ کرنا آپ کی ایپ کا سیاق استعمال کرتا ہے۔ کنیکٹ ہونا ڈیمن کا، اور دونوں کی رسائی ایک جیسی نہیں۔ اس لیے پروفائل سمیولیٹر میں کیے گئے ہر امتحان میں کامیاب ہو کر پہلی on-demand شروعات پر ناکام ہو سکتی ہے۔

ری بوٹ کی علامت کی شکل بھی یہی ہے: ایپ کھلی رہنے تک کام کرتی ہے اور جب سسٹم خود ٹنل شروع کرتا ہے تو مر جاتی ہے۔

شپنگ سے پہلے پس منظر کے راستے کو جان بوجھ کر جانچیں۔ ایپ بند رکھ کر on-demand کنکشن پیدا کریں، پھر ایپ کا لاگ نہیں بلکہ ڈیوائس کنسول پڑھیں، کیونکہ ناکامی اسی عمل نے درج کرنی ہے جس نے حوالہ حل کرنے کی کوشش کی۔ اگر کنسول دکھائے کہ ڈیمن آئٹم کو مسترد کر رہا ہے، تو حوالہ درست ہے اور مسئلہ آئٹم کی رسائی ہے۔

ری بوٹ کام کرے گا یا نہیں، یہ رسائی طے کرتی ہے

ٹنل شروع کرنے والے کسی بھی سسٹم عمل کے لیے آئٹم پڑھنے کے قابل ہونا چاہیے، اور ایپ کے سامنے ہونے کے مقابلے یہ زیادہ وسیع سامعین ہے۔ یہی پابندی آپ کے لیے رسائی کی خصوصیت چنتی ہے۔ پہلی ان لاک تک محفوظ آئٹم ڈیوائس ایک بار ان لاک ہونے کے بعد پس منظر کی شروعات کے لیے دستیاب ہے؛ جو آئٹم مطالبہ کرے کہ ڈیوائس ابھی ان لاک ہو، وہ دستیاب نہیں۔

زیادہ سخت درجہ چننا پرکشش ہے اور وہی مقفل فون پر on-demand پروفائل توڑتا ہے۔

درجہ بدلنے کے بعد موجودہ آئٹم کی خصوصیات میں ترمیم کرنے کے بجائے آئٹم دوبارہ بنائیں، پھر نئے حوالے کے ساتھ پروٹوکول دوبارہ محفوظ کریں۔ موجودہ آئٹم پر خصوصیات کی تبدیلیاں ہمیشہ وہ رویہ نہیں دیتیں جو دستاویز اشارہ کرتی ہے، اور دوبارہ بنا آئٹم شک دور کرتا ہے۔

گردش وہ جگہ ہے جہاں محفوظ پروفائلز گلتی ہیں

کی چین میں پاس ورڈ بدلنا محفوظ پروفائل کس طرف اشارہ کرتا ہے، اسے خودکار طور پر نہیں بدلتا۔ آئٹم مٹانا زیادہ برا ہے: پروفائل ایسی چیز کا حوالہ رکھتا ہے جو اب موجود نہیں، اور ناکامی توثیق کے انکار جیسی لگتی ہے۔

ایک ہی ترتیب میں گردش کریں۔ آئٹم اپ ڈیٹ کریں، نیا مستقل حوالہ کوئری کریں، پروٹوکول دوبارہ محفوظ کریں، پھر ایپ بند رکھ کر کنیکٹ ہوں تاکہ ثابت ہو کہ ڈیمن اب بھی اسے حل کر سکتا ہے۔ صارف کا پاس ورڈ اور مشترکہ راز الگ الگ آئٹمز میں رکھیں تاکہ ہر ایک اپنے شیڈول کے مطابق گھومے، اور کوئری کی لغت یا خود حوالہ کبھی لاگ نہ کریں۔ ہینڈل راز نہیں، مگر اس کی طرف نقشہ ہے۔

متعلقہ مضامین