Acegi Security בשעה אחת

Acegi Security הניבה באזז חיובי רציני בקרב מפתחי ארגוני ג'אווה, אז אולי תהיתם איך זה עובד. במאמר זה, ShriKant Vishishtha מדריך אותך בכל השלבים של יישום Acegi Security בפועל. ראשית תגדיר שירותי אימות והרשאה מבוססי טופס עבור יישום אינטרנט מבוסס Java, ואז תתאים אישית את Acegi Security לאישור דינמי, כמו גם שילוב עם יישומי אימות קנייניים כגון LDAP.

Acegi Security הוא פתרון אבטחה רב עוצמה וגמיש ליישומי ארגוני ג'אווה שנבנו באמצעות מסגרת האביב. הזרקת תלות מבוססת אביב הופכת את Acegi לקלה לתצורה ולהטמעה בצורה לא פולשנית לחלוטין. זוהי ברכה לארגונים שאולי לא ירצו ליישם את מסגרת האביב בכללותה, אך עדיין זקוקים לאבטחה יעילה לשימוש חוזר ליישומים מדור קודם.

מאמר זה נותן לך התחלה מהירה של יישום Acegi Security ליישום בסיסי לעיבוד הזמנות. תגדיר שירותי אימות ואישור ליישום, ותיישם את מאפייני האבטחה הללו בדפי אינטרנט מבוססי טופס. לאחר שעברת את הדוגמה, אתה אמור להיות מסוגל להגדיר אבטחה בסיסית מבוססת טופס לכל יישום אינטרנט תוך כשעה.

לאחר היכרות מהירה עם דוגמת היישום, תוכלו ללמוד על כמה מהדרכים בהן תוכלו להתאים אישית את אבטחת היישומים באמצעות Acegi. תראה כיצד להגדיר הרשאה מבוססת תפקידים דינמית המבוססת על מסד נתונים הממפה תפקידי משתמשים לכתובות אתרים. לבסוף, תגלה כיצד ליצור יישום אימות אבטחה מותאם אישית של Acegi שיכול להשתלב עם יישומי אימות קנייניים קיימים.

הגדרת סביבה

רציתי להדגים את תחולתו של Acegi למגוון רחב של יישומים, ולא רק ליישומים מבוססי אביב. בניתי את יישום הדוגמה באמצעות JEE 5, עם דפי JavaServer לשכבת המצגת ו- SiteMesh לפריסת אינטרנט. באותה מידה ניתן היה לבנות את היישום באמצעות Struts 2, ותשתית Struts 2 כבר קיימת בקוד המקור, אם כי לא מיושמת. השתמשתי בהזרקת תלות באביב כדי ליישם את אבטחת Acegi ליישום. עיין בסעיף משאבים להורדת קוד מקור היישום. בצע את השלבים הבאים להגדרת סביבת היישום:

שלב 1. הורד את Acegi, Spring 2 ו- SiteMesh (ראה משאבים לקישורי הורדה).

שלב 2. צור את מבנה התיקיות הבא בפרויקט Java:

src - מכיל קוד מקור Java

test - מכיל מקרי בדיקה

config - כל קובץ תצורה של מאפיין / XML שצריך להיות בתוך מסלול הכיתה

web - מכיל את יישום האינטרנט

|

decorators - מכיל מעצבי SiteMesh

images - מכיל תמונות, אם יש

scripts - קבצי JavaScript

styles - גליונות סגנון מדורגים (CSS)

WEB-INF

|

jsp - מכיל קבצי JavaServer Pages (JSP)

lib - מכיל צנצנות

שלב 3. העתק את קבצי ה- JAR הבאים לספריית WEB-INF / lib:

  • acegi-security-1.0.5.jar - שיעורים עיקריים של מערכת האבטחה Acegi
  • cglib-2.1.3.jar - ספריית יצירת קוד המשמשת את אביב
  • commons-codec-1.3.jar - מקודדים ומפענחים כגון Base64, Hex, Phonetic ו- URL
  • commons-lang-2.1.jar- כלי עזר עבור java.langממשקי API
  • ehcache-1.2.3.jar - משמש למטרות בסיסיות במטמון
  • freemarker-2.3.8.jar - משמש את יישום Struts
  • jstl.jar, standard.jar - ספריית תגים של JavaServer Pages ספריית תגים רגילה (JSTL)
  • log4j-1.2.13.jar - עבור רישום
  • ognl-2.6.11.jar - ספריית OGNL המשמשת את יישום Struts
  • sitemesh-2.3.jar - SiteMesh JAR
  • spring.jar - מסגרת האביב JAR
  • struts2-core-2.0.8.jar - JAR תומך 2 ליבות
  • xwork-2.0.3.jar - בשימוש על ידי תמוכות

שינויים ב- web.xml

מכיוון Acegi האבטחה מבוססת על הרעיון של מסנני servlet ואת מיירטים , אתה צריך להוסיף ערכים עבור FilterToBeanProxyהמסנן של היישום שלך web.xmlמתאר פריסה, כפי שמוצג מודעת 1.

רישום 1. הוספת מסנני servlet ל- web.xml

  AcegiTraining  contextConfigLocation /WEB-INF/applicationContext*.xml   Acegi Filter Chain Proxy  org.acegisecurity.util.FilterToBeanProxy   targetClass  org.acegisecurity.util.FilterChainProxy    ... ...  Acegi Filter Chain Proxy /j_acegi_security_check   Acegi Filter Chain Proxy /j_acegi_logout   Acegi Filter Chain Proxy *.action   Acegi Filter Chain Proxy *.jsp  ... 

FilterToBeanProxyדורש פרמטר אתחול targetClass,. targetClassהפרמטר מאתר את האובייקט הראשון של המעמד המצוין בהקשר ליישום. בתצורה ברשימה 1, מחלקה זו היא org.acegisecurity.util.FilterChainProxy. אובייקט השעועית הקשור בהקשר היישום filterChainProxyמוצג ברשימה 2.

רישום 2. filterChainProxy


    
     class="org.acegisecurity.util.FilterChainProxy"> ... 
    

שים לב שרשימה 1 מגדירה מיפויי מסננים מרובים עבור מסנן Acegi. במקום זאת תוכלו להסתלק משימוש במיפוי מסננים כללי יותר, כפי שמוצג ברשימה 3.

רישום 3. מיפוי מסננים כללי

 Acegi Filter Chain Proxy /* 

עם זאת, אם אתה משתמש במיפוי המסננים ברשימה 3, כל כתובת אתר ויירטה על ידי מסנן Acegi. והמסנן מבקש כעת גם פרטי הרשאה למשאבים סטטיים (JavaScript, CSS, HTML ותמונות), שייתכן שלא תרצה לאבטח. אתה יכול להימנע ממלכודת זו באמצעות דפוסי URL ספציפיים.

סדר חיוני בעת הצבת מסנני סרוולט. מכיוון שיישום הדוגמה משתמש במסננים עבור Acegi, JSP ו- SiteMesh, עליך להציב תחילה את מסנן Acegi, ואחריו את המסננים JSP ו- SiteMesh, בהתאמה.