Question from Tapuz .Net forum: Deploying a Full-Trust .Net Application over LocalInternet
שאלה:
פיתחנו אפליקציה שנפרסת דרך אינטרנט מקומי במשרד.
אך כאשר אנו מריצים אותה אנחנו מקבלים SecurityException.
לפי MSDN צריך לתת לאסמבלי Full-Trust וזה איכשהו קשור ל-ClickOnce. מישהו יכול להרחיב בנושא?
תשובה:
אתה צריך לעבוד עם Code based security של דוט נט.
אני ממליץ בחום שתקרא את ההסבר המפורט יותר על Code Baes Security בדוט נט וכיצד לתת לאסמבלי Full-Trust.
תקרא את המאמר הנ"ל בבקשה ורק אז תקרא את המשך התגובה.
השיטה שהצגתי בהסבר הזה, היא השיטה הידנית לתת Full Trust לאסמבלי על מחשב כלשהו בו מותקנת הפריימוורק. אם אתה רוצה לפרוס אפליקציה ב-FullTrust ולא להיגרר לקנפוג ידני בכל פעם אז ישנן כמה אפשרויות. (ואגב, קשה לי להמאין ש-PrefCalc של הפריימוורק באמת החזיר תוצאה של FullTrust כי זה אומר שאתה מבצע גם גישה לאינטרנט, גם למערכת הקבצים וגם למערכת ההפעלה).
האפשרות ראשונה והמומלצת ביותר, היא להשתמש ב-ClickOnce שהוא מנגנון פריסה הכולל בתוכו אפשרות מובנית שהלקוח ישיג עדכוני לאפליקציה. אפשר לדבר הרבה על ClickOnce, אבל נקודתית כאן אם תיכנס למאפיינים של הפרוייקט שלך (לחיצה ימנית על הפרוייקט ו-Properties) יש את תגית Security ושם ניתן לקבוע את ההרשאות שתקבל האפליקציה לאחר שתיפרס עם ClickOnce. כברירת מחדל, אפליקציות שנפרסות עם ClickOnce מקבלות FullTrust. כדי לבצע את הפריסה יש עוד כמה צעדים שצריך לעשות שקשורים ל-clickonce (בתקווה לעשות Strong Name לאסמבליס, לפרט את מדיניות העדכונים, לפרט מאיפה מגיעים העדכונים) אבל הרוב מתרכז סביב תגיות Signing, Security ו-Publish.
ClickOnce Deployment and Security
האפשרות השנייה היא יצירת פרוייקט התקנה, שזה אומר ליצור פרוייקט מסוג Setup Project ולהוסיף לו את הקבצים (Primary output) של אפליקציות מסויימות והוא יצור קובץ MSI שיתקין אותם על המחשב של הלקוח. היות ואתה רוצה גם לתת Full-trust לאותם DLLים\EXEים שאתה פורס, האפשרות הכי פשוטה היא ליצור Custom Action שמריצה בסיום ההתקנה את כלי ה-caspol.exe של הפריימוורק ולתת את הנתיב של אותם DLLים\EXEים עם הבקשה להרשאת Full-trust. כלי ה-caspol הוא הכלי שמאפשר ברמת ה-Command Line לנהל הרשאות אבטחה של הפריימוורק ובהתאם קיימת לו פקודה שמאפשרת לתת הרשאת Full trust לאסמבלי (ואף אפילו לפרט הרשאות יותר ספציפיות).
Walkthrough: Creating a Custom Action
How to: Add Assemblies to Security Policy Using Caspol.exe (מכיל דוגמה לשימוש ב-caspol.exe כדי לתת FullTrust לאסמבלי)
קישור: http://www.tapuz.co.il/tapuzforum/main/Viewmsg.asp?forum=831&msgid=89241995