שימוש ב- Maven Behind a Proxy

1. הקדמה

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

בדוגמה שלנו, ה- proxy שלנו פועל במכונה 'proxy.baeldung.com' והוא מקשיב לבקשות פרוקסי דרך HTTP ביציאה '80'. אנו נשתמש גם בכמה אתרים פנימיים ב- internal.baeldung.com שבהם איננו צריכים לעבור פרוקסי.

2. תצורת פרוקסי

ראשון, בואו נקבע תצורת פרוקסי בסיסית ללא אישורים.

בואי נערוך את Maven שלנו settings.xml בדרך כלל נמצא '/.m2 ′ מַדרִיך. אם עדיין אין שם אחד, נוכל להעתיק אותו מההגדרות הגלובליות בכתובת '/ conf ' מַדרִיך.

ועכשיו בואו ניצור a כניסה בתוך סָעִיף:

  80. פרוקסי.באלדונג.קום 80 

מכיוון שאנו משתמשים גם באתר מקומי שאינו צריך לעבור דרך ה- proxy, בואו נציין אותו ב באמצעות '|' רשימה מופרדת עם localhost שלנו:

internal.baeldung.com | localhost | 127. * | [:: 1] 

3. הוספת אישורים

אם ה- proxy שלנו לא היה מאובטח, זה כל מה שאנחנו צריכים; עם זאת, שלנו הוא כך בואו נוסיף את האישורים להגדרת ה- proxy:

baeldung changeme 

אנו לא מוסיפים רשומות שם משתמש / סיסמה אם איננו זקוקים להן - אפילו ריקים - מכיוון שהנוכחים בהם כאשר ה- proxy אינו מעוניין בהם עלול לגרום לדחיית בקשותינו.

התצורה המאומתת המינימלית שלנו אמורה להיראות כך כך:

  proxy.baeldung.com 80 baeldung changeme internal.baeldung.com | localhost | 127. * | [:: 1] 

עכשיו, כשאנחנו מנהלים את mvn פקודה נעבור דרך ה- proxy כדי להתחבר לאתרים שאנו רודפים אחריהם.

3.1. רשומות אופציונליות

בואו ניתן לו את האופציונלי תְעוּדַת זֶהוּת של 'BaeldungProxy_Authenticated' כדי להקל על ההתייחסות, למקרה שנצטרך להחליף פרוקסי:

BaeldungProxy_Authenticated

כעת, אם יש לנו פרוקסי נוסף אנו יכולים להוסיף הגדרת פרוקסי נוספת, אך רק אחד יכול להיות פעיל. כברירת מחדל, Maven ישתמש בהגדרת ה- proxy הפעילה הראשונה שהיא מוצאת.

הגדרות פרוקסי הן פעיל כברירת מחדל ומקבלות את ההגדרה המשתמעת:

נָכוֹן

אם היינו רוצים להפוך שרת proxy נוסף לזה הפעיל, היינו מבטלים את הפעלת הערך המקורי על ידי הגדרה לשקר:

שֶׁקֶר

ערך ברירת המחדל של Maven לפרוטוקול ה- proxy הוא HTTP, המתאים לרוב המקרים. אם ה- proxy שלנו משתמש בפרוטוקול אחר, נכריז עליו כאן ונחליף אותו http עם הפרוטוקול שהפרוקסי שלנו זקוק לו:

http

שימו לב שזה הפרוטוקול בו משתמש ה- proxy - פרוטוקול הבקשות שלנו (ftp: //, //, //) אינו תלוי בכך.

וגם הנה איך נראית הגדרת ה- proxy המורחבת שלנו, כולל האלמנטים האופציונליים:

  BaeldungProxy_Authenticated נכון http proxy.baeldung.com 80 baeldung changeme internal.baeldung.com | localhost | 127. * | [:: 1] 

אז זהו שזה עבור ערך ה- proxy הבסיסי שלנו, אך האם הוא מאובטח מספיק עבורנו?

4. אבטחת התצורה שלנו

נניח שאחד מעמיתינו רוצה שנשלח להם את תצורת ה- proxy שלנו.

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

4.1. יצירת סיסמת מאסטר

ראשית, בואו לבחור סיסמת מאסטר, נגיד "te! St! Ma $ ter".

עַכשָׁיו בואו להצפין את סיסמת המאסטר שלנו, על ידי הזנתו בהנחיה כשאנחנו מריצים:

mvn - encrypt-master-password סיסמת מאסטר: 

לאחר לחיצה על Enter, אנו רואים את הסיסמה המוצפנת שלנו סגורה בין סוגריים מתולתלים:

{QFMlh / 6WjF8H9po9UDo0Nv18e527jqWb6mUgIB798n4 =}

4.2. פתרון בעיות ביצירת סיסמאות

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

בואו נעטוף את הסיסמה במרכאות כדי לוודא שתווים מיוחדים כמו '!' אין השפעות לא רצויות.

אז בואו נשתמש במרכאות בודדות אם אנו משתמשים ב- bash:

mvn - encrypt-master-password 'te! st! ma $ ter'

או השתמש במרכאות כפולות אם אתה משתמש בשורת הפקודה של Windows:

mvn - encrypt-master-password "te! st! ma $ ter"

עַכשָׁיו, לפעמים סיסמת המאסטר שנוצרה שלנו מכילה סוגריים מתולתלים, כמו דוגמה זו עם סוגר מתולתל סוגר, '}', אחרי 'UD':

{QFMlh / 6WjF8H9po9UD} 0Nv18e527jqWb6mUgIB798n4 =}

במקרה זה נוכל:

  • הפעל את mvn – encrypt-master-password פקודה שוב ליצור עוד אחת (אני מקווה בלי סוגר מתולתל)
  • להימלט מהפלטה המתולתלת בסיסמה שלנו על ידי הוספת קו נטוי אחורי מול '{' או }'

4.3. ליצור settings-security.xml קוֹבֶץ

עכשיו בואו נכניס את הסיסמה המוצפנת שלנו, עם '\}' נמלט קובץ שנקרא settings-security.xml קובץ שלנו .m2 מַדרִיך:

 {QFMlh / 6WjF8H9po9UD \} 0Nv18e527jqWb6mUgIB798n4 =} 

לבסוף, Maven מאפשר לנו להוסיף הערה בתוך אלמנט המאסטר.

בואו נוסיף טקסט לפני הסיסמה '{' תוחם, ונזהר לא להשתמש ב- {או} בתגובה שלנו כאשר Maven משתמש בה כדי למצוא את הסיסמה שלנו:

נמלטנו מהסד המתולתל עם '\' {QFMlh / 6WjF8H9po9UD \} 0Nv18e527jqWb6mUgIB798n4 =}

4.4. באמצעות כונן נשלף

נניח שאנחנו צריכים להיות בטוחים במיוחד רוצה לאחסן את סיסמת המאסטר שלנו במכשיר נפרד.

ראשית, נניח את שלנו settings-security.xml קובץ בספריית תצורה בכונן נשלף, "R:":

R: \ config \ settings-security.xml

ועכשיו נעדכן את settings-security.xml קובץ שלנו .m2 מדריך להפנות את Maven לאמיתי שלנו settings-security.xml בכונן הנשלף שלנו:

   R: \ config \ settings-security.xml 

כעת Maven יקרא את סיסמת האב המוצפנת שלנו מהקובץ שציינו ב- רילוקיישן אֵלֵמֶנט, בכונן הנשלף שלנו.

5. הצפנת סיסמאות פרוקסי

עכשיו יש לנו סיסמת מאסטר מוצפנת, אנחנו יכולים להצפין את סיסמת ה- proxy שלנו.

בוא נפעיל את הפקודה הבאה ונזין את הסיסמה שלנו, “שנה אותי", בהנחיה:

mvn - סיסמת הצפנת סיסמה:

הסיסמה המוצפנת שלנו מוצגת:

{U2iMf + 7aJXQHRquuQq6MX + n7GOeh97zB9 / 4e7kkEQYs =}

הצעד האחרון שלנו הוא ערוך את קטע ה- proxy בקובץ settings.xml והכניס את הסיסמה המוצפנת שלנו:

  BaeldungProxy_Encrypted proxy.baeldung.com 80 baeldung {U2iMf + 7aJXQHRquuQq6MX + n7GOeh97zB9 / 4e7kkEQYs =} 

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

6. שימוש במאפייני מערכת

למרות ש הגדרת תצורה של Maven באמצעות קובץ ההגדרות היא הגישה המומלצתנוכל להכריז על תצורת ה- proxy שלנו באמצעות מאפייני מערכת Java.

אם למערכת ההפעלה שלנו כבר מוגדר proxy, נוכל להגדיר:

-Djava.net.useSystemProxies = נכון

לחלופין, כך שהוא תמיד מופעל, אם יש לנו זכויות מנהל אנו יכולים להגדיר זאת ב /lib/net.properties קוֹבֶץ.

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

גם כאשר הוא מופעל, אנו יכולים לעקוף אותו על ידי הגדרת פרטי ה- proxy של HTTP שלנו ב- http.proxyHost נכס מערכת:

-Dhttp.proxyHost = proxy.baeldung.com

ה- proxy שלנו מקשיב ליציאת ברירת המחדל 80, אבל אם הוא האזין ביציאה 8080, היינו להגדיר את http.proxyPort תכונה:

-Dhttp.proxyPort = 8080

וגם עבור האתרים שלנו שאינם זקוקים לפרוקסי:

-Dhttp.nonLocalHosts = "internal.baeldung.com | localhost | 127. * | [:: 1]"

לכן, אם ה- proxy שלנו נמצא ב -10.10.0.100, נוכל להשתמש ב:

לקמפל mvn -Dhttp.proxyHost = 10.10.0.100 -Dhttp.proxyPort = 8080 -Dhttp.nonProxyHosts = localhost | 127.0.0.1

כמובן, אם ה- proxy שלנו דורש אימות, נוסיף גם:

-Dhttp.proxyUser = baeldung -Dhttp.proxyPassword = changeme

ואם היינו רוצים שחלק מההגדרות האלה יחולו על כל ההפעלות שלנו ב- Maven, נוכל להגדיר אותן במשתנה הסביבה MAVEN_OPTS:

הגדר MAVEN_OPTS = -Dhttp.proxyHost = 10.10.0.100 -Dhttp.proxyPort = 8080

עכשיו, בכל פעם שאנחנו רצים 'mvn'הגדרות אלה יוחלו באופן אוטומטי - עד שנצא.

7. מסקנה

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

עכשיו אנחנו יכולים לחלוק את שלנו settings.xml הקובץ עם עמיתינו מבלי לתת להם את הסיסמאות שלנו בטקסט רגיל ולהראות להם כיצד להצפין את הסיסמאות שלנו!

כרגיל, הדוגמאות במאמר זה זמינות באתר GitHub.


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