আমিও একমত যে স্প্রিং সিকিউরিটি খুব জটিল (আমার কাছে) বোধ করে। অবশ্যই, তারা জটিলতা হ্রাস করার জন্য জিনিসগুলি করেছে, যেমন এক্সএমএল কনফিগারেশনের পরিমাণ হ্রাস করার জন্য কাস্টম এক্সএমএল নেমস্পেস তৈরি করা, তবে আমার কাছে, এগুলি স্প্রিং সিকিউরিটির সাথে আমার ব্যক্তিগত মৌলিক সমস্যাটিকে সম্বোধন করে না: এর নাম এবং ধারণাগুলি প্রায়শই সাধারণভাবে বিভ্রান্ত হয় আমাকে. কেবল 'এটি পেতে "এটি কঠিন।
দ্বিতীয়টি আপনি শিরো ব্যবহার করা শুরু করলেও, আপনি কেবল এটি পাবেন '। সুরক্ষার জগতে যা বোঝা মুশকিল তা বোঝা এত সহজ। জেডিকে (যেমন সিফারস) ব্যবহার করা অসহনীয়ভাবে কঠিন সেগুলি এমন স্তরে সরলীকৃত যা কেবল বহনযোগ্য নয়, তবে ব্যবহার করার জন্য প্রায়শই আনন্দ।
উদাহরণস্বরূপ, আপনি কীভাবে হ্যাশ + নুন একটি পাসওয়ার্ড এবং বেস 64 এটিকে জাভা বা স্প্রিং সিকিউরিটিতে এনকোড করে থাকেন? দুটিই শিরোর সমাধান হিসাবে সহজ এবং স্বজ্ঞাত নয়:
ByteSource salt = new SecureRandomNumberGenerator().nextBytes();
new Sha512Hash(password, salt).toBase64();
কমন্স-কোডেক বা অন্য কোনও কিছুর প্রয়োজন নেই। শুধু শিরো বয়াম।
এখন স্প্রিং পরিবেশের সাথে সম্পর্কিত, বেশিরভাগ শিরো ডেভেলপাররা বসন্তকে তাদের প্রাথমিক অ্যাপ্লিকেশন পরিবেশ হিসাবে ব্যবহার করেন। তার মানে শিরোর স্প্রিং ইন্টিগ্রেশন চমত্কার এবং এটি সমস্ত ব্যতিক্রমীভাবে ভালভাবে কাজ করে। আপনি আশ্বাস দিতে পারেন যে আপনি যদি একটি স্প্রিং অ্যাপ লিখছেন তবে আপনার কাছে সুরক্ষিত সুরক্ষা অভিজ্ঞতা থাকবে।
উদাহরণস্বরূপ, এই থ্রেডের অন্য পোস্টে স্প্রিং এক্সএমএল কনফিগারেশন উদাহরণটি বিবেচনা করুন। শিরোতে আপনি একই জিনিসটি (মূলত) কীভাবে করবেন তা এখানে রয়েছে:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd>
<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
<property name="securityManager" ref="securityManager"/>
<property name="loginUrl" value="/login.jsp"/>
<property name="successUrl" value="/home.jsp"/>
<property name="unauthorizedUrl" value="/unauthorized.jsp"/>
<property name="filterChainDefinitions">
<value>
/secure/** = authc
/** = anon
</value>
</property>
</bean>
<bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
<property name="realm" ref="myRealm"/>
</bean>
<bean id="myRealm" class="...">
...
</bean>
যদিও অন্যান্য বসন্তের উদাহরণের তুলনায় কিছুটা ভার্বোজ, আইএমও পড়া সহজ to
আপনি শিরো ফিল্টার চেইন সংজ্ঞা ব্যবহার করে দেখতে পাবেন সম্ভবত সাধারণ ফিল্টার চেইন এবং ওয়েব-ভিত্তিক সুরক্ষা বিধিগুলির সংজ্ঞা দেওয়ার সবচেয়ে সহজ উপায়! ওয়েব.এক্সএমএলে এগুলি সংজ্ঞায়িত করার চেয়ে আরও সুন্দর।
অবশেষে শিরো পাশাপাশি চরম 'প্লাগব্যাবিলিটি' সরবরাহ করে। আপনি দেখতে পাবেন যে শিরোর পোজো / ইনজেকশন-বান্ধব আর্কিটেকচারের কারণে আপনি প্রায় কোনও কিছু কনফিগার এবং / বা প্রতিস্থাপন করতে পারেন। শেরো প্রায়শই ডিফল্টকে ডিফল্ট করে দেয় এবং আপনার যা প্রয়োজন তা আপনি ওভাররাইড বা কনফিগার করতে পারেন।
দিনের শেষে, আমি মনে করি যে এই দুজনের কোনওটিই বেছে নেওয়া আপনার মানসিক মডেল সম্পর্কে আরও বেশি - দু'জনের মধ্যে কোনটি আরও বেশি বোঝায় এবং আপনার পক্ষে আরও স্বজ্ঞাত? কারওর জন্য এটি শিরো হবে, অন্যদের জন্য এটি স্প্রিং সিকিউরিটি হবে। শিরো বসন্তের পরিবেশে দুর্দান্ত কাজ করে, তাই আমি বলতে চাই যে আপনি দুজনের মধ্যে কোনটি বেশি উপভোগ করেন এবং আপনার পক্ষে সবচেয়ে বেশি অর্থবোধ করেন তার উপর ভিত্তি করে চয়ন করুন।
শিরোর স্প্রিং ইন্টিগ্রেশন সম্পর্কে আরও তথ্যের জন্য: http://shiro.apache.org/spring.html