עבור ממשק ניהול שאני בונה ללקוחות. (עד כה השתמשתי בפריימוורק PHP בשם YII2, וכעת אני רוצה משהו מתחילה עד הסוף לבד, בצורה של html+js סטטי קבוע, וכל הפעולות מבוצעות על ידי API שהוא בשרת ב nodejs).
לכל משתמש יש שם משתמש וסיסמא.
מנהל יכול לנהל מספר מוסדות שרשומים בחשבונו.
משתמש רגיל יוכל לנהל רק את המוסד עליו הוא אחראי.
ישנם רמת הרשאות לכל משתמש מה הוא יכול לעשות.
אשמח לכיון מה הדרך הנכונה לפתח זאת.
דהיינו:
א. איך לבצע את האימות?
אני חושב שהכיון אמור להיות, פונקציית הזדהות המקבל משתמש וסיסמא, וRememberMe, ויוצר עוגיה או כל היכר אחר המועבר ללקוח, ובכל שאר הקריאות הזיהוי מבוצע על ידי העוגיה.
יותר מזאת, חשבתי לעשות טבלת סשנים עם עמודות: מזהה A_I, מזהה משתמש, טוקן הנוצר בצורה רנדומאלית וייחודית (חשבתי על זה), תאריך תפוגה, תאריך יצירה, תאריך שימוש אחרון. משהו כזה, ובכל התחברות מחדש אני יוצר טוקן, מוסיף לטבלה, ומחזיר ללקוח את הID של הטוקן + הטוקן, שיישמר בעוגיה.
בכל שאר הפונקציות קריאה ועריכה וכו' אני בודק האם קיים עוגייה, האם הID והטוקן קיימים (בשורה אחת) וברי תוקף, ולפי זה מבצע את הפעולה.
ופונקציית LogOut מוחקת או מאפסת את התוקף של הטוקן.
רק שבזה אני מתלבט האם עלי לעשות איזה הצפנה כל שהיא לקריאה ויצירת העוגיה, האם ניתן לשלוח ללקוח ישירות את הטוקן והID כמות שהם, כי הם לא משקפים כלום, או שיש לחשוש שניתן לפענח את הרצף של הID והטוקן וכו', וא"כ יש להצפין כמה שיותר..
לאחר שאימתתי כבר את המשתמש
ב. איך לנהל את ההרשאות?
- יש לבדוק שיש לו הרשאת גישה למוסד זה.
- לבדוק שיש לו הרשאת גישה לטבלה/פונקציה זו (קריאה או עריכה).
פחות או יותר רמות ההרשאה תהיינה שוות, משתמש רגיל יש לו הרשאות קריאה ל(מוסד בודד) כמה טבלאות לקריאה ועריכה, ולאחרים רק קריאה, ולאחרים ללא גישה כלל.
משתמש מנהל יוכל לגשת לעריכה של יותר נתונים
משתמש ראשי (אני או עובד שלי) יוכל לגשת לעוד יותר נתונים
א"כ איך והיכן עלי לשמור את רמות ההרשאות?
ליצור טבלת הרשאות שאני יכניס שם שמות של פונקציות/איזורים/שמות של טבלאות (??), ולכל משתמש לשמור בעמודה את רמת ההרשאה?
ג. איך לשמור את הסיסמא אצלי? לכאורה היא צריכה להיות מוצפנת, אלא א"כ אני יצרתי אותה ושלחתי למשתמש סיסמא מוכנה (כך זה בדר"כ), וא"כ האם יש בעיה לשמור את הסיסמא גלוי? (כמובן שזה יותר קל לתחזק ולשחזר ולאמת) אחרת, באיזה סוג הצפנה להצפין בעת היצירה, ואיך בודקים להשוות בעת התחברות של לקוח?
יישר כח