Enterprise JavaBeans (EJB) একটি শক্তিশালী এবং স্কেলেবল বিজনেস লজিক কম্পোনেন্ট সরবরাহকারী Java প্রযুক্তি যা Java EE (Enterprise Edition) প্ল্যাটফর্মের একটি অংশ। EJB এ নিরাপত্তা ব্যবস্থাপনা খুবই গুরুত্বপূর্ণ, কারণ এটি সাধারণত একটি এন্টারপ্রাইজ অ্যাপ্লিকেশন এ ব্যবহৃত হয়, যেখানে Authentication (পরিচয় যাচাই) এবং Authorization (অধিকার যাচাই) অন্যতম মৌলিক প্রয়োজন।
EJB কন্টেইনার নিজেই নিরাপত্তা ব্যবস্থাপনা পরিচালনা করে, তবে আপনি কিছু Declarative Security এবং Programmatic Security কৌশল ব্যবহার করে নিরাপত্তা নিয়ন্ত্রণ করতে পারেন। Eclipse IDE ব্যবহার করে EJB প্রকল্পে নিরাপত্তা ব্যবস্থাপনা কিভাবে পরিচালনা করবেন, তা নিচে ব্যাখ্যা করা হলো।
EJB নিরাপত্তা বৈশিষ্ট্য
EJB এর নিরাপত্তা দুটি প্রধান ক্যাটাগরিতে বিভক্ত করা যেতে পারে:
- Declarative Security:
- নিরাপত্তা বৈশিষ্ট্যগুলি XML কনফিগারেশন ফাইলের মাধ্যমে ডিক্লেয়ার করা হয়। এটি নিরাপত্তা ব্যবস্থাপনা সহজ করে, এবং আপনি সিকিউরিটি সংক্রান্ত কনফিগারেশন web.xml এবং ejb-jar.xml ফাইলে যুক্ত করতে পারেন।
- Programmatic Security:
- এতে নিরাপত্তা কনফিগারেশন কোডের মাধ্যমে পরিচালিত হয়। আপনি কোডের মাধ্যমে ক্লায়েন্টের অভ্যন্তরীণ অনুমতিগুলি যাচাই করতে পারেন। এটি সাধারণত Principal, Role, এবং Caller Identity ব্যবহার করে।
1. Declarative Security (ডিক্লারেটিভ সিকিউরিটি)
Declarative Security EJB কন্টেইনারকে বলে দেয় কোন মেথডের জন্য কোন রোল (role) বা অ্যাক্সেস অনুমতি দেওয়া উচিত। এটি সাধারণত web.xml এবং ejb-jar.xml ফাইলে নিরাপত্তা সংক্রান্ত কনফিগারেশন করে।
web.xml কনফিগারেশন (Declarative Security):
এটি Web Application এর নিরাপত্তা কনফিগারেশন জন্য ব্যবহৃত হয়। এখানে আপনি কনফিগার করতে পারেন যে, কে কোন ইউআরএল অ্যাক্সেস করতে পারবে এবং কোন রোল/অধিকার প্রয়োজন।
<security-constraint>
<web-resource-collection>
<web-resource-name>Secured Resources</web-resource-name>
<url-pattern>/secured/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>EJBRealm</realm-name>
</login-config>
ejb-jar.xml কনফিগারেশন (Declarative Security):
এটি EJB Module এর নিরাপত্তা কনফিগারেশন। এখানে আপনি মেথডের অ্যাক্সেস কন্ট্রোলের জন্য রোল ডিফাইন করেন।
<security-identity>
<run-as-role>admin</run-as-role>
</security-identity>
<method-permission>
<method-name>processOrder</method-name>
<role-name>admin</role-name>
</method-permission>
এখানে:
run-as-role: EJB মেথডটি কোন রোল দিয়ে রান হবে সেটি নির্ধারণ করে।method-permission: কোন মেথডের জন্য কোন রোলের অ্যাক্সেস অনুমোদিত সেটি নির্ধারণ করে।
2. Programmatic Security (প্রোগ্রাম্যাটিক সিকিউরিটি)
Programmatic Security EJB এ সিকিউরিটি ব্যবস্থাপনা কোডের মাধ্যমে করা হয়, এবং এটি ডেভেলপারকে আরও নমনীয়তা প্রদান করে। এর মধ্যে SecurityContext, Principal, Roles, এবং Caller Identity ব্যবহৃত হয়। এর মাধ্যমে ক্লায়েন্টের অধিকার যাচাই করা হয়।
Programmatic Security এর উদাহরণ:
EJB মেথডে Caller Identity এবং Role Checking এর মাধ্যমে প্রোগ্রাম্যাটিক সিকিউরিটি যাচাই করা হয়।
import javax.annotation.security.RolesAllowed;
import javax.ejb.Stateless;
@Stateless
public class OrderService {
@RolesAllowed({"admin"})
public void processOrder(String orderId) {
// Only "admin" role can process this order
System.out.println("Order processed: " + orderId);
}
public void checkRole() {
// Programmatically check for roles
if (SecurityContext.getCallerPrincipal().getName().equals("admin")) {
System.out.println("Admin role validated");
}
}
}
এখানে:
@RolesAllowed: এটি ডিক্লারেটিভ সিকিউরিটির জন্য ব্যবহার করা হয়, যেখানে মেথডের জন্য নির্দিষ্ট রোলের অ্যাক্সেস অনুমোদন করা হয়।- SecurityContext: এটি প্রোগ্রাম্যাটিক সিকিউরিটির জন্য ব্যবহৃত হয়, যেখানে কলারের পরিচয় যাচাই করা হয়।
EJB মেথডের জন্য Programmatic Security যাচাই:
import javax.ejb.SessionContext;
import javax.ejb.Stateless;
import javax.annotation.Resource;
@Stateless
public class SecureOrderService {
@Resource
private SessionContext context;
public void placeOrder() {
if (context.isCallerInRole("admin")) {
System.out.println("Order placed by admin");
} else {
throw new SecurityException("Not authorized to place order");
}
}
}
এখানে:
SessionContext.isCallerInRole("admin"): এটি যাচাই করে যে, কলার (ক্লায়েন্ট) নির্দিষ্ট রোল (যেমন "admin") এর অধিকারী কিনা।
3. EJB নিরাপত্তার জন্য প্রধান উপাদানসমূহ
- Caller Identity:
- EJB কন্টেইনার কলারের পরিচয় যাচাই করতে পারে। এটি সাধারণত Principal এবং SecurityContext ব্যবহার করে করা হয়।
- Roles and Permissions:
- EJB কন্টেইনার রোল ভিত্তিক নিরাপত্তা যাচাই করে। @RolesAllowed, @PermitAll, এবং @DenyAll অ্যানোটেশনগুলি ব্যবহৃত হয়। এছাড়া ejb-jar.xml এবং web.xml ফাইলে রোল এবং পারমিশন কনফিগারেশন করা হয়।
- Run-as Identity:
- RunAs ব্যবস্থাপনা ইন্টারফেসটি একাধিক রোল বা একজন অ্যাডমিনিস্ট্রেটর হিসাবে মেথডটি চালানোর সুযোগ দেয়। এটি সাধারণত ডিক্লারেটিভ সিকিউরিটির জন্য ব্যবহৃত হয়।
সারাংশ
EJB (Enterprise JavaBeans) তে নিরাপত্তা ব্যবস্থাপনা দুটি প্রধানভাবে করা যায়: Declarative Security এবং Programmatic Security। Declarative Security নিরাপত্তা কনফিগারেশন XML ফাইলের মাধ্যমে করা হয় এবং Programmatic Security কোডের মাধ্যমে নিরাপত্তা যাচাই করে। EJB নিরাপত্তা ব্যবস্থাপনা সিস্টেমের Roles, Caller Identity, এবং SecurityContext এর উপর ভিত্তি করে কাজ করে, যা নিরাপত্তা যাচাই এবং অ্যাক্সেস কন্ট্রোলের জন্য প্রয়োজনীয় ফিচার সরবরাহ করে।
Eclipse IDE ব্যবহার করে EJB প্রকল্পে নিরাপত্তা সংক্রান্ত কনফিগারেশন করার মাধ্যমে আপনি নিরাপত্তা নির্ভর অ্যাপ্লিকেশন তৈরি করতে পারেন, যা অ্যাপ্লিকেশনের সুরক্ষা এবং পরিচালনা সহজ করে।
Read more