אביב ביטחון עם מייבן

1. סקירה כללית

במאמר זה נסביר כיצד להתקין אביב ביטחון עם מייבן ולעבור על מקרי שימוש ספציפיים של שימוש בתלות באבטחת אביב. תוכל למצוא את המהדורות האחרונות של אבטחת אביב ב- Maven Central.

זוהי המשך למאמר הקודם של Spring with Maven, ולכן עבור תלות אביבית לא ביטחונית, זה המקום להתחיל.

2. אבטחת אביב עם מייבן

2.1. אביב ליבת אבטחה

התמיכה באבטחת Core Spring - אביב ליבת אבטחה - מכיל פונקציות אימות ובקרת גישה. חובה לכלול תלות זו בכל הפרויקטים המשתמשים באביב אבטחה.

בנוסף, אביב ליבת אבטחה תומך ביישומים העצמאים (שאינם רשת), אבטחת רמת השיטה ו- JDBC:

 5.3.4.RELEASE 5.2.8.RELEASE org.springframework.security spring-security-core $ {spring-security.version} 

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

אם אתה עובד עם גרסאות ישנות יותר של אביב - חשוב מאוד להבין את העובדה, שלא באופן אינטואיטיבי, Spring Security 4.1.x אינם תלויים במהדורות Spring 4.1.x! לדוגמה, כאשר שחרור Spring Security 4.1.0, מסגרת הליבה של Spring כבר הייתה ב 4.2.x ולכן כוללת גרסה זו כתלות הידור שלה. התכנון הוא ליישר את התלות הללו מקרוב במהדורות עתידיות - ראה JIRA זה לפרטים נוספים - אך לעת עתה יש לכך השלכות מעשיות שנבחן בהמשך.

2.2. אביב-ביטחון-רשת

להוסיף תמיכה באינטרנט לאבטחת אביב, אנחנו צריכים את אביב-ביטחון-רשת תלות:

 org.springframework.security spring-security-web $ {spring-security.version} 

זה מכיל פילטרים ותשתית אבטחת אינטרנט קשורה המאפשרת בקרת גישה לכתובות URL בסביבת Servlet.

2.3. אבטחת אביב ובעיית תלות בליבת אביב ישנה יותר

גם התלות החדשה הזו מציגה בעיה עבור גרף התלות של Maven. כאמור לעיל, צנצנות Spring Security אינן תלויות בצנצנות הליבה האחרונות של Spring (אלא בגרסה הקודמת). זה עשוי להוביל לאלה תלות ישנה יותר עושים את דרכם בראש מסלול הכיתה במקום חפצי האביב החדשים יותר של 5.x.

כדי להבין מדוע זה קורה, עלינו לבדוק כיצד מייבן פותר סכסוכים. במקרה של סכסוך גרסה, מייבן יבחר את הצנצנת הקרובה ביותר לשורש העץ. לדוגמה, ליבת קפיץ מוגדר על ידי שניהם אביב-אורם (עם 5.0.0.לְשַׁחְרֵר גרסה) אך גם על ידי אביב ליבת אבטחה (עם ה 5.0.2.שחרור גִרְסָה). אז בשני המקרים, אביב-jdbc מוגדר בעומק 1 מהשורש של הפרויקט שלנו. מסיבה זו, זה באמת יהיה חשוב באיזה סדר אביב-אורם ו אביב ליבת אבטחה מוגדרים בפום שלנו. הראשון יקבל עדיפות כך אנו עשויים בסופו של דבר עם כל אחת מהגרסאות בדרכי הכיתה שלנו.

כדי לטפל בבעיה זו, נצטרך לעשות זאת להגדיר במפורש כמה מתלות האביב בפום שלנו ולא להסתמך על מנגנון יישום התלות של Maven המשתמע. פעולה זו תשים את התלות המסוימת הזו בעומק 0 מהפום שלנו (כפי שהוא מוגדר בפום עצמו) כך שתקבל עדיפות. כל הבאים מתחלקים לאותה קטגוריה וכולם צריכים להיות מוגדרים במפורש, באופן ישיר או, עבור פרויקטים מרובי-מודולים, תלות ניהול אלמנט של ההורה:

 org.springframework spring-core $ {spring-version} org.springframework spring-context $ {spring-version} org.springframework spring-jdbc $ {spring-version} org.springframework spring-beans $ {spring-version} org. springframework spring-aop $ {spring-version} org.springframework spring-tx $ {spring-version} org.springframework spring-expression $ {spring-version} org.springframework spring-web $ {spring-version} 

2.4. אביב-ביטחון-תצורה ואחרים

כדי להשתמש במרחב השמות ובהערות ה- XML ​​העשירים של Spring Security, נצטרך את ה- אביב-ביטחון-תצורה תלות:

 org.springframework.security spring-security-config $ {spring-security.version} 

לבסוף, לתמיכה ב- LDAP, ACL, CAS, OAuth ו- OpenID יש תלות משלהם באבטחת אביב: אביב-ביטחון-ldap, אביב-ביטחון-acl, קפיץ-ביטחון-קאס, קפיץ-ביטחון-אואה ו אביב-ביטחון-פתוח.

2.5. אביב-אתחול-התחלה-אבטחה

כשעובדים עם Spring Boot, ה- אביב-אתחול-התחלה-אבטחה המתנע יכלול באופן אוטומטי את כל התלות כגון אביב ליבת אבטחה, אביב-ביטחון-רשת ו אביב-ביטחון-תצורה בין היתר:

 org.springframework.boot spring-boot-starter-security 2.3.3.RELEASE 

מכיוון ש- Spring Boot ינהל עבורנו את כל התלות באופן אוטומטי, הדבר גם ייפטר מבעיית אבטחת האביב ותלות הליבה הישנה שהוזכרה בעבר.

3. שימוש בתמונות ואבני דרך

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

4. מסקנה

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


$config[zx-auto] not found$config[zx-overlay] not found