none
SSRS 2014 Authentication RRS feed

  • שאלה

  • שלום,

    יש לנו מערכת וובית מבוססת 2005 NET  & SQL Server.  ניתן להפיק דוחות מהמערכת באמצעות Reporting Services

    בשבוע האחרון שידרגנו את הSQL לגרסת 2014, הכל עובד חלק חוץ מעניין הדוחות.

    כלומר משתמש שעובד על המערכת (מחוץ לארגון) לא מצליח להפיק דוחות -הוא מקבל מסך לוגין לשרת הדוחות.

    לכאורה הדברים מוגדרים תקין, היוזר שמריץ את הסרויס של SSRS מוגדר בדומיין ויש לו הרשאות גם ברמת הReportServer

    גם מתן הרשאות כללי לא פותר את הבעיה ובכל סיטואציה מתקבל מסך לוגין.

    אשמח לרעיונות

    תודה, דניאל


    • נערך על-ידי DanoDev יום ראשון 11 ינואר 2015 21:17
    יום ראשון 11 ינואר 2015 21:16

תשובות

  • שלום,

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

    כמו כן שווה להסתכל בלוגים של SQL Server   יתכן ותראה שם שגיאות מסוג
    Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'
    שמרמזות על בעיה בהגדרות Authentication מול AD
    אם אכן יש בעיה בהזדהות מול AD  ניתן לבדוק מצב SPNs  
    תריץ את הפקודה Setspn -l username   (תחליף את username  בשם המשתמש שמריץ את ה Service של SSRS )

    מקווה שעזרתי,
    נועם

    • הוצע כתשובה על-ידי Eran Sharvit יום שני 12 ינואר 2015 09:17
    • סומן כתשובה על-ידי Eran Sharvit יום רביעי 21 ינואר 2015 13:35
    יום שני 12 ינואר 2015 08:45
  • בוקר טוב דנו,

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

    על כל אלו ועוד אין לנו שום מידע :-(
    יותר מכך אי אפשר ללמוד את כל התחומים בכמה דקות בפורום.

    >> הוספה של impersonation ב web.config של האפליקציה נותנת לי מסך שגיאה ולא מאפשר חיבור לאפליקציה.

    העובדה שיש לך הודעת שגיאה היא מבחינתנו רק סיפורים בלי לראות ולקבל ממך את ההודעה המדוייקת עצמה!
    אני לא יודע מה עשית ומה לא עשית כמובן. בדוק את הקישורים הבאים:
    http://msdn.microsoft.com/en-us/library/aa292118(v=vs.71).aspx
    http://www.codeproject.com/Tips/520341/Implement-Impersonation-in-ASP-NET

    >> ההגדרה בדפדפן אינה עוזרת, מה גם שמדובר באלפי משתמשים בכל העולם שעובדים עם דפדפנים שונים.

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

    >> אסביר בקצרה על תהליך ההתחברות, מדובר על אפליקציות ASP.Net  שיושבות על שרת שלנו בIIS (על שרת זה יושב הReport Server  ) בweb. Config  של כל אפליקציה ישנו חיבור לDB  שיושב בשרת SQL.

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

    >> המשתמש פונה לURL  (בשרת שלנו) ומכניס שם משתמש וסיסמא, המערכת מתחברת לבסיס הנתונים מבצעת בדיקה אם המשתמש נמצא בטבלת המשתמשים בבסיס הנתונים הספציפי וכך מתחברים.

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

    >> כאשר אני גולש לאפליקציה מתוך הדומיין, אני מצליח לבצע קריאה ל report Server ולהפיק דוחות ללא מסך לוגין. הבעיה היא כאשר גולשים באפליקציה מחוץ לדומיין (כמו כל לקוחות שלנו)  שם בעת פניה ל RportServer  אני מקבל מסך לוגין.

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

    https://support.microsoft.com/kb/324274?wa=wsignin1.0

    >> לא ברור לי איזה יוזר מבצע את הקריאה לreport serverהאם היוזר של של הIIS app pool או היוזר שמאפשר לי את הגישה לבסיס הנתונים (זה שמוגדר בweb.config  שלי) לא מצליח למצוא לוגים במערכת

    למה לא תבדוק?
    תפתח את הפרויילר של השרת SQL ותבדוק מי מבצע את הפנייה

    כמו כן אתה יכול לבצע בדיקה ברמת האפליקציה מי המשתמש במפעיל את ה THREAD

    String username = 
        System.Security.Principal.WindowsIdentity.GetCurrent().Name;



    signature   Ronen Ariely
     [Personal Site]    [Blog]    [Facebook]




    • נערך על-ידי pituachMVP, Editor שבת 17 ינואר 2015 04:47
    • הוצע כתשובה על-ידי Eran Sharvit יום ראשון 18 ינואר 2015 10:59
    • סומן כתשובה על-ידי Eran Sharvit יום רביעי 21 ינואר 2015 13:35
    שבת 17 ינואר 2015 04:39
    מנחה דיון

כל התגובות

  • שלום,

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

    כמו כן שווה להסתכל בלוגים של SQL Server   יתכן ותראה שם שגיאות מסוג
    Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'
    שמרמזות על בעיה בהגדרות Authentication מול AD
    אם אכן יש בעיה בהזדהות מול AD  ניתן לבדוק מצב SPNs  
    תריץ את הפקודה Setspn -l username   (תחליף את username  בשם המשתמש שמריץ את ה Service של SSRS )

    מקווה שעזרתי,
    נועם

    • הוצע כתשובה על-ידי Eran Sharvit יום שני 12 ינואר 2015 09:17
    • סומן כתשובה על-ידי Eran Sharvit יום רביעי 21 ינואר 2015 13:35
    יום שני 12 ינואר 2015 08:45
  • היי נועם, תודה על התגובה.

    בעקרון ה Authentication  ב rsreportserver.config  מוגדר כ NTLM ולא כ Kerberos 

    כאשר אני מזין יוזר וסיסמא  (יוזר שמוגדר כאדמין ברמת ה "Site setting" וגם ב "Home" ב Report Server)

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

    האם הדרך היחידה היא להגדיר  anonymous authentication?

    אן שיש דרך מסויימת להגדיר הרשאות ספציפית ליוזר שדרכו האפליקציה ניגשת ל Report Server

     

    תודה רבה,

    דניאל

    יום שני 12 ינואר 2015 11:12
  • הי דניאל,

    יכול להיות שזה יעזור לך

    תבדוק בבקשה את ההגדרה הבאה בדפדפן: 
     Internet Options > Security >Custom Level
    User Authentication
    תוודא שזה מוגדר על: Automatic logon with current user name and password  עבור ה Zone שהאתר נמצא בו.

    זה קורה בד"כ כי הדפדפן מזהה את האתר כאתר אינטרנט ולא אינטראנט לפי הכתובת (אם היא FQDN זה אוטומטי נכנס לZone אינטרנט )

    אגב, אם מדובר במערכת שאנשים מתחברים מחוץ לארגון,  כיצד מתבצעת ההזדהות?

    מקווה שעזרתי,
    נועם

    יום שלישי 13 ינואר 2015 08:17
  • בוקר טוב דניאל,

    אני מקווה שאני מבין אותך נכון ואם כן הנה כמה נקודות שאמורות לעזור:

    1. אם אתה רוצה כניסה של משתמשים לאתר אינטרנט בלי הכנסת שם משתמש וססמה אז כן אתה צודק, עלייך להגדיר אפשרות לעבודה anonymous authentication. זה בדיוק הממשעות של הדבר. זה פעולה מאוד לא מומלצת לדוח פנימי של חברה, אלא אם ארגנת אבטחה מלאה מסביב כמו עבודה עם מערכת משתמשים ברמת האפליקציה (ז"א כל מה שקשור לניהול משתמשים באפליקציה כמו טבלת משתמשים במסד הנתונים, טופס רישום, טופס כניסה וכן הלאה כפי שיש בכל מערכת בה המשתמש צריך להירשם כדי להיכנס). במקרים כאלה אתה יכול לשמור אצל המשתמש קובץ עוגייה עם פרטים נוספים ולחסוך ממנו חלק מפעולות הרישום.

    2. הדפדפן יודע לשמור הרשאות וססמאות לכניסות הבאות לכן המשתמש יכול לבחור לשמור את הססמה ולא להכניס אותה בכל פעם מחדש (לא מומלץ אלא בטוחים שהמחשב רק בשימוש אישי)

    3. ניתן לגשת לקוח עם הרשאות WINDOWS גם אם האתר עצמו מאפשר גישה אנונימית. ניתן לבצע פעולה שנקראת impersonation.

    אני צריך יותר מדיע להבין כיצד הדוח מתארח כדי לכוון יותר ספציפית. אם הדוח נמצא כחלק מאתר אינטרנט במסגרת עמוד asp.net למשל אז ניתן לראות כאן את הרעיון בגדול: http://msdn.microsoft.com/en-us/library/xh507fc5(v=vs.140).aspx

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

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


    signature   Ronen Ariely
     [Personal Site]    [Blog]    [Facebook]

    יום רביעי 14 ינואר 2015 09:07
    מנחה דיון
  • הי נועם,

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

    אסביר בקצרה על תהליך ההתחברות, מדובר על אפליקציות ASP.Net  שיושבות על שרת שלנו בIIS (על שרת זה יושב הReport Server  )  בweb. Config  של כל אפליקציה ישנו חיבור לDB  שיושב בשרת SQLהמשתמש פונה לURL  (בשרת שלנו) ומכניס שם משתמש וסיסמא, המערכת מתחברת לבסיס הנתונים מבצעת בדיקה אם המשתמש נמצא בטבלת המשתמשים בבסיס הנתונים הספציפי וכך מתחברים.

    כאשר אני גולש לאפליקציה מתוך הדומיין, אני מצליח לבצע קריאה ל report Server ולהפיק דוחות ללא מסך לוגין. הבעיה היא כאשר גולשים באפליקציה מחוץ לדומיין (כמו כל לקוחות שלנו)  שם בעת פניה ל RportServer  אני מקבל מסך לוגין.

    לא ברור לי איזה יוזר מבצע את הקריאה לreport server. האם היוזר של של הIIS app pool או היוזר שמאפשר לי את הגישה לבסיס הנתונים (זה שמוגדר בweb.config  שלי) לא מצליח למצוא לוגים במערכת

    תודה, דניאל

    יום רביעי 14 ינואר 2015 09:17
  • היי רונן, תודה על התגובה

    אכן נראה שאתה די מבין אותי נכון,

    הreport viewer  מתארח כדף ASP בתוך האפליקציה, מעבר לזה את שאר הארכיטקטורה הסברתי בתגובה הקודמת לנועם.

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

    הוספה של impersonation ב web.config של האפליקציה נותנת לי מסך שגיאה ולא מאפשר חיבור לאפליקציה.

    תודה,  דניאל

    יום רביעי 14 ינואר 2015 10:09
  • בוקר טוב דנו,

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

    על כל אלו ועוד אין לנו שום מידע :-(
    יותר מכך אי אפשר ללמוד את כל התחומים בכמה דקות בפורום.

    >> הוספה של impersonation ב web.config של האפליקציה נותנת לי מסך שגיאה ולא מאפשר חיבור לאפליקציה.

    העובדה שיש לך הודעת שגיאה היא מבחינתנו רק סיפורים בלי לראות ולקבל ממך את ההודעה המדוייקת עצמה!
    אני לא יודע מה עשית ומה לא עשית כמובן. בדוק את הקישורים הבאים:
    http://msdn.microsoft.com/en-us/library/aa292118(v=vs.71).aspx
    http://www.codeproject.com/Tips/520341/Implement-Impersonation-in-ASP-NET

    >> ההגדרה בדפדפן אינה עוזרת, מה גם שמדובר באלפי משתמשים בכל העולם שעובדים עם דפדפנים שונים.

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

    >> אסביר בקצרה על תהליך ההתחברות, מדובר על אפליקציות ASP.Net  שיושבות על שרת שלנו בIIS (על שרת זה יושב הReport Server  ) בweb. Config  של כל אפליקציה ישנו חיבור לDB  שיושב בשרת SQL.

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

    >> המשתמש פונה לURL  (בשרת שלנו) ומכניס שם משתמש וסיסמא, המערכת מתחברת לבסיס הנתונים מבצעת בדיקה אם המשתמש נמצא בטבלת המשתמשים בבסיס הנתונים הספציפי וכך מתחברים.

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

    >> כאשר אני גולש לאפליקציה מתוך הדומיין, אני מצליח לבצע קריאה ל report Server ולהפיק דוחות ללא מסך לוגין. הבעיה היא כאשר גולשים באפליקציה מחוץ לדומיין (כמו כל לקוחות שלנו)  שם בעת פניה ל RportServer  אני מקבל מסך לוגין.

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

    https://support.microsoft.com/kb/324274?wa=wsignin1.0

    >> לא ברור לי איזה יוזר מבצע את הקריאה לreport serverהאם היוזר של של הIIS app pool או היוזר שמאפשר לי את הגישה לבסיס הנתונים (זה שמוגדר בweb.config  שלי) לא מצליח למצוא לוגים במערכת

    למה לא תבדוק?
    תפתח את הפרויילר של השרת SQL ותבדוק מי מבצע את הפנייה

    כמו כן אתה יכול לבצע בדיקה ברמת האפליקציה מי המשתמש במפעיל את ה THREAD

    String username = 
        System.Security.Principal.WindowsIdentity.GetCurrent().Name;



    signature   Ronen Ariely
     [Personal Site]    [Blog]    [Facebook]




    • נערך על-ידי pituachMVP, Editor שבת 17 ינואר 2015 04:47
    • הוצע כתשובה על-ידי Eran Sharvit יום ראשון 18 ינואר 2015 10:59
    • סומן כתשובה על-ידי Eran Sharvit יום רביעי 21 ינואר 2015 13:35
    שבת 17 ינואר 2015 04:39
    מנחה דיון
  • היי רונן , שוב תודה על התגובה המפורטת והארוכה.

    שיטת העבודה שלנו היא באמצעות URL Access

    http://msdn.microsoft.com/en-us/library/ms153586(v=sql.105).aspx

    כלומר אנחנו בעצם מג'נרטים את הURL  ושמים עליו את כל הפרמטרים ואז מבצעים קריאה לשרת הReport Server

    משהו כמו:

    GET /ReportServer?/APPNAMEDerectory /Allergens&rs:Command=Render&rs:Format=HTML4.0&rc:Parameters=false&rc:ToolBar=true&sessionKey={04d9f445-60c5-43bb-bd05-62ee18538343}&key=1421655459531 HTTP/1.1

    כמובן שהקריאה נעשית מתוך האפליקציה ומוצגת בתוך האפליקציה בפורמט  של  Report Viewer

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

    ממה שאני מבין אין פה קשר ליוזרים של האפליקציה בכלל כיוון שמדובר בקריאה בפני עצמה,

    1. האם זה נכון? או שיש קשר ליוזרים כיון שאני פונה מתוך האפליקציה

    2. האם יש דרך להעביר את ה  credentials ע"י שרשור בURL  או בצורה אחרת על מנת להמנע ממסך הלוגין או שהדרך היחידה היא להגדירanonymous   בreportServer




    • נערך על-ידי DanoDev יום שני 19 ינואר 2015 10:52
    יום שני 19 ינואר 2015 10:24
  • >> היי רונן , שוב תודה על התגובה המפורטת והארוכה.

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

    >> 

    השם URL Access הוא שם כל כך לא מקצועי ועלוב בעיני, וכל הפרק הזה באתר נראה כאילו פונה לקהל DBA שאינו מבין כלום על מה שוקרה מאחורי הקלעים וחבל! המדריכים שם רק יוצרים יותר בילבול וחוסר הבנה לדעתי. המושג שמיקרוסופט משתמשים בו בשם URL Access הוא בסך הכל שימוש בשיטת GET, בדיוק כמו אתה מעביר נתונים לכל אתר אינטרנט שעובד בשיטת GET כמו למשל כניסה לפורום הנוכחי בעזרת הקישור:
    https://social.msdn.microsoft.com/Forums/he-IL/home?forum=sqlhe
    שים לב שהקישור מכיל פרמטר בשם forum ואת הערך של הפרמטר sqlhe (בכל פורום הערך יהיה שונה כמובן)

    מדובר בסך הכל בשיטות התקשרות בפרוטוקול HTTP! שיטות אחרות להעברת פרמטרים לאפליקציות WEB יכולות להיות שימוש בשיטת POST או DELETE או PUT למשל. זה מה כאשר אנחנו שולחים את ההודעה שכתבו אל השרת, כאן בפורום, דרך אגב, אז נעשה שימוש בשיטת POST. בשיטת POST הנתונים מועברים בצורה נסתרת מעט יותר מאשר בשיטת GET כאשר הם מופיעים כחלק מהכתובת URL. אתה יכול לקרוא יותר על פרוטוקול HTTP ושיטת התקשורות באתר הרשמי של ה World Wide Web Consortium בקישור הבא: http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html

    >> משהו כמו:...

    בקישור ששמת כאן יש רווחים. שים לב שרווחים מומרים לקוד אחד בזמן שימוש בשיטת GET. למעשה לא רק רווחים מומרים, אלא נעשה המרה כללית לכל הקישור על ידי קידוד בשם קידוד URL Encoding.

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

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

    >> ממה שאני מבין אין פה קשר ליוזרים של האפליקציה בכלל כיוון שמדובר בקריאה בפני עצמה,

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

    >> 1. האם זה נכון? או שיש קשר ליוזרים כיון שאני פונה מתוך האפליקציה

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

    >> 2. האם יש דרך להעביר את ה credentials ע"י שרשור בURL או בצורה אחרת על מנת להמנע ממסך הלוגין או שהדרך היחידה היא להגדירanonymous בreportServer

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


    signature   Ronen Ariely
     [Personal Site]    [Blog]    [Facebook]

    יום ראשון 25 ינואר 2015 18:04
    מנחה דיון