ایجاد صفحه لاگین
دیده شدن صفحه نمایش ui برای کاربران شاید اهمیت خاصی نداشته باشه و بخواهید که هر کسی دسترسی دیدن را داشته باشد. اما قطعا دادن دسترسی تغییر به همه شاید کار عاقلانه ای نباشه. در این قسمت تلاش می کنیم تا با ایجاد یک سطح دسترسی برای کاربر تعیین شده صفحه ای را ایجاد کنیم که قبل از ورود برای تغییر جریان ها کاربر احراض هویت شده و سپس اقدام به تغییرات کند. البته نا گفته نماند که این روش می تواند به طریق های مختلف و حتی امن تر ایجاد شود اما ما همیشه ساده ترین راه ها را برای شروع ارائه می دهیم.
بخش اول تغییر تنظیمات NodeRed
یک ترمینال در رزبری خود باز کرده و به ترتیب دستورات زیر را برای ورود به دایرکتوری nodred و ایجاد تغییرات در فایل تنظیمات nodered را بزنید.
cd ~/.node-red
sudo nano settings.js
بخش دوم ساخت پسورد hash شده
برای این که پسورد شما قابل رویت نباشد تا افراد دیگر به پسورد داخل فایل شما دسترسی نداشته باشند می توان پسورد را hash کرد (و در واقع رمزنگاری). ترمینالی دیگر باز کرده و در آن تایپ کنید:
node-red-admin hash-pw
سپس بعد از وارد کردن دستور بالا از شما پسورد را می خواهد که پس از وارد کردن آن enter زده و پسورد جدید هش شده به شما نمایش داده می شود. آن را کپی کرده و نگه دارید.
بخش سوم جایگذاری
در این بخش کافیست که username برای خود انتخاب کرده و همچنین پسورد hash شده را در جایگاه مد نظر قرار دهید. در نظر داشته باشید که می بایست قسمتی از کد را از حالت comment خارج کنید. به نمونه زیر توجه نمایید.
// Securing Node-RED
// -----------------
// To password protect the Node-RED editor and admin API, the following
// property can be used. See https://nodered.org/docs/security.html for details.
adminAuth: {
type: "credentials",
users: [{
username: "USERNAME",
password: "PASS_HASH",
permissions: "*"
}]
},
این ساده ترین روش ممکن است ولی در نظر داشته باشید که هنوز به امنیت کامل دست پیدا نکرده اید.در حال حاضر کافیست که سرویس را مجدد راه اندازی کنید و در هنگام ورود به صفحه زیر رو به رو خواهید شد.
اما چطور این سرویس را امن تر کنم؟
- اضافه کردن ssl برای رمز کردن اطلاعات رفت و برگشتی امری الزامیست .
- تعویض پورت اتصالی به جای 1880 که پورت پیشفرض است.
- اضافه کردن httpNodeAuth را نیز به فایل config برای رمز کردن اطاعات ارسالی توسط 3dparty apps اضافه نمایید.
- اگر قرار است که فایل هایی را به اشتراک بگذارید که کاربر اجازه دانلود نداشته باشد می بایست HTTPstatic را نیز به فایل config اضافه نمایید.