OAuth درون یک VPN: کدام بخشها هنوز به TLS نیاز دارند
VPN تغییر میدهد چه کسی به یک سرور میرسد، نه اینکه پیامهای OAuth چگونه سفر میکنند. بر اساس بخش تصمیم بگیرید: پاسخ مجوز، درخواست توکن و فراخوان حامل.
مسیریابی خصوصی تعیین میکند چه کسی به سرور میرسد؛ قواعد انتقال OAuth تعیین میکند هر پیام چگونه سفر میکند. یک مرورگر، یک سرور مجوز، یک نقطه پایانی توکن و یک سرور منابع میتوانند همه پشت یک VPN باشند و با این حال پیامها را از بخشهای متفاوت مبادله کنند. هر بخش نیاز انتقال خودش را دارد و VPN هیچکدام را آسان نمیکند. مرز VPN و مرز پروتکل دو خط متفاوت هستند.
تصمیم آسانتر میشود اگر دست از پرسیدن درباره قابلاعتماد بودن شبکه بردارید و بپرسید کدام تبادل از کدام مرز میگذرد.
بر اساس بخش تصمیم بگیرید، نه بر اساس شبکه
نقاط پایانی را جداگانه بنویسید: نقطه پایانی مجوز، نقطه پایانی توکن، URI تغییرمسیر، URL سرور منابع، نقطه پایان TLS و دروازه VPN. سپس مشخص کنید هر درخواست از کدام طرف شروع میشود و پاسخ به کجا میرود.
VPNای که در یک دروازه پایان مییابد، بخش تا آن دروازه را رمزگذاری میکند. درخواست میتواند پشت آن بهصورت HTTP ساده ادامه یابد، و آن بخش باقیمانده HTTPS نشده است چون بخش پیشین رمزگذاری شده بود. همین ادامه همان بخشی است که پروتکل به آن اهمیت میدهد. رمزگذاری گام اول گام دوم را امن نمیکند.
انتقال همچنین یک بررسی هویت سرویس را حمل میکند. مرورگر گواهی URL برنامه را اعتبارسنجی میکند؛ VPN آن اعتبارسنجی را به نمایندگی از مرورگر انجام نمیدهد و نقطه پایانی اعتبارسنجینشده را پذیرفتنی نمیکند. گواهی نام نقطه پایانی را میآورد که مشتری فکر میکند آن را صدا میزند. تونل به یک دروازه آن نقطه پایانی را تغییر نام نمیدهد و اعتبارسنجی نمیکند.
پاسخ مجوز و URI تغییرمسیر
بهترین رویه امنیتی کنونی OAuth ارسال پاسخهای مجوز روی اتصالهای رمزگذارینشده را ممنوع میکند. این شامل تغییرمسیری میشود که کد مجوز یا توکنها را به مشتری بازمیگرداند، نه فقط درخواست اولیه.
همان راهنما URIهای تغییرمسیر HTTP را ممنوع میکند، جز مورد مشخص loopback برای مشتری بومی. یک نام میزبان داخلی استثنای تازه نمیسازد، و نام DNS که فقط درون VPN حل میشود اگر طرحواره چنین بگوید هنوز URL نوع HTTP است. طرحواره را در URI ثبتشده بررسی کنید، نه فقط نام میزبان را.
URI دقیق تغییرمسیر HTTPS را در سرور مجوز ثبت کنید و اعتبارسنجی گواهی را در مشتری فعال نگه دارید. میانبر توسعهای که الزام HTTPS را سرکوب میکند جریانی میسازد که رفتارش با پیکربندی تولیدی که باید الگوبرداری کند متفاوت است.
نقطه پایانی توکن و درخواستهای توکن حامل
درخواست توکن اعتبارنامه یا کدی را حمل میکند که میتوان آن را با دسترسی مبادله کرد. فرستادن آن روی بخشی نامحافظتشده موادی را آشکار میکند که سرور منابع بعداً به آن اعتماد میکند، حتی اگر شبکه پیرامون خصوصی باشد. پراکسیای که میتواند درخواست را بخواند، اعتبارنامهای را که حمل میکند نیز میتواند بخواند.
برای درخواستهای منابع با توکن حامل، RFC 6750 پیادهسازی و استفاده از TLS را برای آن مشخصه الزامی میداند. قابلاعتماد خواندن زیرشبکه دفتر همان استثنای عمومی پروتکل نیست که یک استقرار حامل با متن ساده نیاز دارد.
برای هر دو بخش از URLهای امن مستند نقاط پایانی استفاده کنید. اگر کتابخانهای از فراخواندن نقطه پایانی توکن HTTP امتناع کند، آن امتناع خودِ مشخصه است که کار میکند، نه اشکال پیکربندی برای دور زدن. آن URL را در پیکربندی مشتری ثبت کنید بهجای اینکه در زمان اجرا استخراج کنید.
TLS کجا پایان مییابد و چه چیزی باقی میگذارد
اگر TLS در یک فرانتاند مجاز پایان یابد، آن فرانتاند را نام ببرید و مسیر آن تا برنامه را بازبینی کنید. فرانتاند مسئول ارسال، اعتماد و محرمانگی در بخش باقیمانده میشود و معماری پشتیبانیشده سرویس باید آن ترتیب را توصیف کند.
VPN در جای دیگری از مسیر آن مسئولیتها را حل نمیکند. همچنین نمیگوید آیا URL برنامهای که مرورگر میبیند با گواهیای که فرانتاند ارائه میدهد مطابقت دارد یا نه.
برای استقرار داخلی، نقطه پایان و هویتی که ارائه میدهد را ثبت کنید. فرانتاندی که TLS را با گواهی نامی دیگر پایان میدهد هشدار مرورگری میسازد که اپراتورها اغلب بهجای رفع آن سرکوبش میکنند.
استثنای loopback بومی باریک است
استثنای تغییرمسیر loopback به فراخوان بازگشتی روی دستگاه خود کاربر مربوط است، جایی که مشتری و مرورگر آن دستگاه را شریکاند. آن ترتیب به فراخوان بازگشتی روی یک دستگاه تعلق دارد و مجوز سرو کردن یک سرور مجوز عادی یا API توکندار روی HTTP به زیرشبکه دفتر را نمیدهد.
استثنا را محدود به نوع مشتری و فراخوان بازگشتی که توصیف میکند نگه دارید. اعمال آن بر یک برنامه وب، یک سرویس داخلی مشترک یا URI تغییرمسیر روی میزبان دیگر استقرار را تغییر میدهد، نه استثنا را.
جریان واقعی را در هر مرز بیازمایید و با نوع مشتری مقایسه کنید. تغییرمسیر کارکننده چیزی درباره این نمیگوید که آیا هر بخشی که توکن حمل کرده از حفاظت لازم استفاده کرده است، و نماد سبز VPN چیزی درباره طرحواره درخواست بعدی نمیگوید.