একটি জাভা অ্যাপ্লেট সহ ASP.NET সেশন কুকিজ শেয়ার করা

আমার একটি জাভা অ্যাপলেট আছে যা একটি ফর্ম-প্রত্যয়িত ASPX পৃষ্ঠায় চালায়। আমার সাইটের .NET 1.1 সংস্করণে, অ্যাপলেটটি সেশনে কুকির অ্যাক্সেস পায় এবং সার্ভার থেকে একটি ফাইল পুনরুদ্ধার করতে সক্ষম হয়, তবে এটি .NET 2.0 সংস্করণে এটি প্রমাণ করতে ব্যর্থ হয়।

আমি ফোরাম পোস্টগুলি অন্যত্র দেখেছি যে ২.0 সেটাপ করে ডিফল্টভাবে Http- তে কুকি সেট করেছে, তবে দেওয়া সমাধানগুলি আমার জন্য এতদূর কাজ করেনি। আমি কোথাও পড়ি যে 2.0 ব্যবহারকারী-এজেন্টের উপর ভিত্তি করে বৈষম্যমূলক হতে পারে।

কেউ কি এই বিষয়ে কোন অভিজ্ঞতা বা অন্তর্দৃষ্টি আছে?

3

4 উত্তর

এই প্রশ্নটি পুরনো, কিন্তু আমি মনে করি এটি সঠিক উত্তরটি আছে বলে মূল্যবান ছিল।

ফিলিপটি ক্লায়েন্ট-সাইড জাভা দিয়ে বিভ্রান্তিকর সার্ভার-সাইড জাভা। তিনি সঠিক যে আপনি একটি সার্ভার-পার্শ্ব প্ল্যাটফর্ম যেমন জাভা (J2EE) এবং ASP.Net এর মত একটি কাস্টম পদ্ধতি ব্যবহার না করে সেশন ভাগ করতে পারবেন না।

যাইহোক, অ্যাপলেটগুলি ক্লায়েন্ট-সাইড এবং তাই হোস্ট পৃষ্ঠাটির সেশনের তথ্য অ্যাক্সেস করতে সক্ষম হওয়া উচিত। সমস্যাটি হল যে ASP.Net 2.0 সেশনে কুকিজে HttpOnly পতাকা যুক্ত করেছে। এই ফ্ল্যাগগুলি এই কুকিগুলি অ্যাক্সেস করার থেকে জাভাস্ক্রিপ্ট এবং জাভা অ্যাপলেটকে প্রতিরোধ করে।

কার্যকরী হল অধিবেশন কুকি উপর HttpOnly পতাকা বন্ধ করা। যদিও আপনি এএসপি.Net এর নতুন সংস্করণের কনফিগারেশনে এটি করতে সক্ষম হবেন, পূর্ববর্তী সংস্করণগুলিতে সমাধানটি আপনার Global.asax ফাইলে নিম্নোক্ত কোডটি যুক্ত করতে হবে:

protected void Application_EndRequest(object sender, EventArgs e)
{
    /**
    * @note Remove the HttpOnly attribute from session cookies, otherwise the 
    *      Java applet won't have access to the session. This solution taken
    *      from
    *      http://blogs.msdn.com/jorman/archive/2006/03/05/session-loss-after-migrating-to-asp-net-2-0.aspx
    *
    *      For more information on the HttpOnly attribute see:
    *
    *      http://msdn.microsoft.com/netframework/programming/breakingchanges/runtime/aspnet.aspx
    *      http://msdn2.microsoft.com/en-us/library/system.web.httpcookie.httponly.aspx
    */
    if (Response.Cookies.Count > 0)
    {
        foreach (string lName in Response.Cookies.AllKeys)
        {
            if (lName == FormsAuthentication.FormsCookieName || 
                lName.ToLower() == "asp.net_sessionid")
            {
                Response.Cookies[lName].HttpOnly = false;
            }
        }
    }
}

মনে রাখবেন যে এই ফিক্সসহ, সমস্ত ব্রাউজার/OS/Java সমন্বয় কুকিজ অ্যাক্সেস করতে পারবেন না। আমি উইন্ডোজ এক্সপিতে জাভা 1.6.0_13 সহ ফায়ারফক্স 4.0.1 এ অধিগ্রহণের সময় কুকিগুলির সাথে একটি সমস্যা নিয়ে গবেষণা করছি।

ড্যাডাবাস পদ্ধতিতে ব্যবহার করার পদ্ধতিটি ব্যবহার করা হয়, যেখানে সেশন আইডিটি প্যারামিটার হিসেবে অ্যাপলেটে প্রেরণ করা হয় এবং তারপর এরপরে অনুরোধের URL এ এমবেড করা হয় (সার্ভার-সাইড কনফিগারেশনতে URL সেশন চালু করা প্রয়োজন) অথবা একটি ম্যানুয়াল-সেট কুকি হিসাবে পাঠানো

5
যোগ

ফিলিপটি সঠিক এবং ভুল উভয়টি, কমপক্ষে জাভা এবং এএসপি.NET এ wrt। একটি অ্যাপলেট প্রতারণার দ্বারা ASP.NET সেশানে প্রবেশ করতে পারে। আমার ক্ষেত্রে, আমরা অ্যাডলেটে প্যারামিটার হিসাবে সেশন আইডি যুক্ত করেছি, যা আপেলটি তার অনুরোধের মধ্যে কুকি হিসাবে যোগ করে। ঠিক আছে কাজ করতে মনে হচ্ছে (আমরা সেড আইডি এনক্রিপ্ট করেছি যারা কদর্য হ্যাকার লোককে ফাঁকিয়েছে!)

1
যোগ

আমি সচেতন যে এটি একটি খুব দেরী উত্তর হতে পারে, কিন্তু আমি আপনাকে একটি সহজ সমাধান দিতে পারেন: - সাধারণত, সবসময় না, অ্যাপলেট তাদের ইন্টারফেস এবং মিথস্ক্রিয়া জন্য এইচটিএমএল এবং জাভাস্ক্রিপ্ট ভারী ব্যবহার করতে। - জাভাস্ক্রিপ্ট ব্রাউজারে চালানো হয়। - অ্যাজাক্স কল ব্রাউজার দ্বারা তৈরি করা হয়। - অজাক্স কলগুলি অ্যাসিঙ্ক্রোনাস এবং একটি অ্যাপলেট লজিকের সাথে সহজেই সংযুক্ত হতে পারে।

একটি অ্যাপারলেট এর যুক্তিবিজ্ঞান একটি মার্জিত সমাধান অজানা আহ্বান জানাতে পারেন, ব্রাউজার নিরাপত্তা যাও delegating, নিরাপত্তা

0
যোগ

ফিলিপের উত্তর সম্পূর্ণ সঠিক নয়। আমি আমার ওয়ার্কস্টেশন HTTP হেডার স্নিগ্ধ একটি প্রোগ্রাম দৌড়ে, এবং জাভা আপেলটি আসলে কিছু পরিস্থিতিতে এএসপি.NET প্রমাণীকরণ টিকেট উপস্থাপন - শুধু আমার প্রয়োজনের জন্য নির্ভরযোগ্যভাবে যথেষ্ট না

Eventually I did find a solution to this, but it didn't entirely solve my problem. You can add an entry to the web.config in .NET 2.0: ; but this didn't work for all my users.

দীর্ঘমেয়াদী সমাধানটি জাভা অ্যাপলেটকে সংশোধন করার জন্য পরিণত হয়েছে যাতে এটি ওয়েব সার্ভার থেকে কিছু পাওয়ার প্রয়োজন হয় না।

0
যোগ