কেন অ্যাপাচি বেসিক প্রমাণীকরণ কাজ করছে না?


14

আমি মাত্র 2003-এর বিল্ড থেকে অ্যাপাচি একটি চটজলদি পরিষ্কার, একেবারে নতুন 2.4.1 বিল্ডে আপগ্রেড করেছি। একটি চমকপ্রদ বিষয় বাদে সমস্ত কিছু বেশ সুন্দর দেখাচ্ছে:

আমার httpd.conf ফাইলটিতে আমার কাছে নিম্নলিখিতগুলি রয়েছে:

<Directory />
    AllowOverride none
    Options FollowSymLinks
    AuthType      Basic
    AuthName      "Enter Password"
    AuthUserFile  /var/www/.htpasswd
    Require     valid-user
</Directory>

এটি অ্যাপাচি-র পুরানো সংস্করণের অধীনে যেমন নির্দিষ্ট আথ ফাইলের ব্যবহারকারীদের সার্ভার অ্যাক্সেস করার অনুমতি দেয় should (রাইট?)

তবে এটি কাজ করছে না। অনুরোধগুলি কোনও প্রমাণীকরণ সরবরাহ করে না। অ্যাক্সেসের জন্য যখন আমি লগইভেল ডিবাগ-এ লগিং স্যুইচ করি তখন তা বলে:

[Sat Mar 24 21:32:00.585139 2012] [authz_core:debug] [pid 10733:tid 32771] mod_authz_core.c(783): [client 192.168.1.181:57677] AH01626: authorization result of Require all granted: granted
[Sat Mar 24 21:32:00.585446 2012] [authz_core:debug] [pid 10733:tid 32771] mod_authz_core.c(783): [client 192.168.1.181:57677] AH01626: authorization result of <RequireAny>: granted

আমি এর অর্থ কী তা সত্যই আমি জানি না - এবং আমার (আমার জ্ঞানের সেরা দিকের) কাছে আমার কোনও ফাইলে কোনও "রিকভারার অল মঞ্জুর" বা "" বিবৃতি নেই।

এটি কেন কাজ করছে না এমন কোনও ধারণা, বা কোথায় ডিবাগ করবেন ??

হালনাগাদ:

আমার এসএসএল বন্দরে ভার্চুয়ালহোস্ট রয়েছে যা প্রক্সি করার অনুমতি দেয়। আমি যখন একই প্রবেশিকাটি ভিতরে রাখি

<proxy *> 

ভার্চুয়ালহোস্ট কনফিগারেশনে ক্লজ, এটি কাজ করে । এটা মনে হয় না

 <Directory> 

দফা। আমি তখন অন্য ডিরেক্টরি অনুচ্ছেদের অধীনে চেষ্টা করেছি (অন্যান্য ডিরেক্টরিগুলির জন্য নির্দিষ্ট) এবং এটিও কার্যকর হয়নি

করাও

নীচে শেনের প্রশ্নগুলি থেকে - আমি মূল "/" ব্লকটিকে একটি "/ টিএমপি" ডিরেক্টরিতে নকল করার চেষ্টা করেছি। / টিএমপি ডিরেক্টরিটি সঠিকভাবে কাজ করে !! সুতরাং - এই সমস্যাটি কেবলমাত্র মূল ডিরেক্টরিতে নির্দিষ্ট?


1
<Directory>যে অনুরোধগুলি কাজ করছে না তার জন্য আপনার আর কোন ব্লক প্রয়োগ রয়েছে?
শেন ম্যাডেন

আমি কেবল রুট "/" ডিরেক্টরিতে একটি রেখেছি, যা পুরো সার্ভারে প্রয়োগ করা উচিত। আমি ব্যবহারকারীর হোম ডিরেক্টরিতে (Mod_userdir প্রতি) একটি যুক্ত করার চেষ্টা করেছি এবং তার সাথে একই ফলাফল পেয়েছি।
ব্র্যাড

@ শানেম্যাডেন - আপনার প্রশ্নে - আমি "/" টিএমপি "ডিরেক্টরিতে মূল" / "ব্লকটি নকল করার চেষ্টা করেছি। / টিএমপি ডিরেক্টরিটি সঠিকভাবে কাজ করে !! সুতরাং - এই সমস্যাটি কেবলমাত্র মূল ডিরেক্টরিতে নির্দিষ্ট?
ব্র্যাড ২

আমার সন্দেহ হয় যে <Directory>আপনার অ্যাপাচি কনফিগারেশনে অন্য যে কোনও জায়গায় সুনির্দিষ্ট ব্লক রয়েছে যা আপনি যেটি সেট করেছেন তার চেয়ে বেশি প্রাধান্য পাচ্ছে /
শেন ম্যাডেন

আমি সব কিছু গ্রেপ্ত করেছিলাম - কিছুই না। এই কনফিগারেশন ফাইলগুলি অ্যাপাচি-র নতুন ইনস্টলড ডিফল্টগুলিতে খুব ন্যূনতম পরিবর্তন ছিল ।
ব্র্যাড

উত্তর:


12

একটি নতুন ২.৪ ইনস্টলটিতে ডাইজেস্ট প্রমাণীকরণের ক্ষেত্রে আমার একই সমস্যা ছিল। অ্যাপাচের সাইটে ডকুমেন্টেশনটি খুব কাছ থেকে দেখে মনে হচ্ছে প্রমাণীকরণের নির্দেশাবলীর একটি <Location>ট্যাগের পরিবর্তে কোনও <Directory>ট্যাগে থাকা দরকার। অ্যাথব্যাসিকপ্রভাইডার নির্দেশিকার জন্য ডকুমেন্টেশন দেখুন ।


2
এটি সঠিক নয়। মোড_আউথ_বাসিক এবং মোড_আউথ_ডিজাস্ট <ডিরেক্টরি>> এবং <লোকেশন> পাশাপাশি <ফাইল> <If> এবং <প্রক্সি> ব্যবহার করা যেতে পারে। অ্যাপাচি ২.৪ এর জন্য ডকুমেন্টেশন -> httpd.apache.org/docs/current/mod/… "প্রসঙ্গ" এর অধীনে "ডিরেক্টরি" তালিকাভুক্ত করা হয়েছে যা উপরোক্ত বৈধ পাত্রে সমস্ত নির্দেশ করে। -> httpd.apache.org/docs/current/mod/directive-dict.html# কনটেক্সট
জেডেডোর

এটি সঠিক হওয়া উচিত নয়, তবে এটি আমার পক্ষে কাজ করেছিল। এটি সম্ভবত কারণ ডিরেক্টরি অংশে অন্যান্য সেটিংস ছিল (যেমন।
পুনরায় লেখক

6

আমি একই সমস্যার মুখোমুখি হয়েছিলাম, এবং এই পোস্টের কিছুই আমাকে সহায়তা করেনি, তাই আমি আমার 2 সেন্ট যোগ করব। আমার ক্ষেত্রে (Apache 2.4) সমস্যা অনুক্রমিক ছিল দরকার নির্দেশনা।

ডিফল্টরূপে, আপনি একাধিক আছে যদি দরকার নির্দেশনা তারা হিসেবে বিবেচিত হয়<RequireAny>

আমার মধ্যে <Directory>ছিল

Require ip 192.168.100.0/24 10.9.8.0/24
Require valid-user

সুতরাং আইপি সঠিক হলে প্রমাণীকরণের অনুরোধ উপস্থিত হয়নি। আমি স্যুইচ করতে ছিল করেছি দরকার থেকে যুক্তিবিজ্ঞান <RequireAny>করতে <RequireAll>এবং এটি যে এখন সবকিছু সঠিক কাজ করে বলে মনে হয়।

   <Directory /var/www>

      DirectoryIndex index.html
      Options -Indexes

      AuthType Basic
      AuthName "hidden data"
      AuthBasicProvider    file
      AuthUserFile /opt/httpaswd
      <RequireAll>
        Require ip 192.168.100.0/24 10.9.8.0/24
        Require valid-user
      </RequireAll>
    </Directory>

5

jscott এর উত্তর ভুল। এ্যাপাচি 2.4 অবশ্যই আছে প্রমাণীকরণ নির্দেশনা অনুমতি <Directory>পাত্রে। তদুপরি, প্রমাণীকরণ বাস্তবায়নের একমাত্র সুরক্ষিত উপায়, কারণ <Location>সাবধানতা অবলম্বন না করে আপনার প্রমাণীকরণকে নষ্ট করার অনুমতি দিয়ে বিভিন্ন পাত্রে বিভিন্ন উপায়ে অ্যাক্সেস করা যায়। রেফারেন্সের খাতিরে, আমি এখানে একটি নমুনা ধারকটি ব্যবহার করছি যা আমি একটি প্রোডাকশন সিস্টেমে ব্যবহার করছি:

<Directory "/srv/http/my_domain.org/html/secret-stuff"> Options Indexes Multiviews FollowSymLinks AuthType Digest AuthName "staff" AuthUserFile /etc/httpd/private/secret-stuff.htaccess Require valid-user </Directory>


1

আপনি অথবাসিকের জন্য কোনও সরবরাহকারীর অনুপস্থিত মনে হচ্ছে appear একটি লাইন যুক্ত করার চেষ্টা করুন:

AuthBasicProvider    file

আপনার এই কাজটি চালানোর পরে আপনি Satisfyনির্দেশটি দেখতে চাইতে পারেন । ইন্টারনেট অ্যাক্সেসের জন্য পাসওয়ার্ডের প্রয়োজন থাকলে এটি কোনও পাসওয়ার্ড ছাড়াই স্থানীয় অ্যাক্সেসের অনুমতি দেওয়ার জন্য ব্যবহার করা যেতে পারে।

সম্পাদনা: ইন্টারনেট থেকে সাধারণত উপলভ্য নয় এমন সামগ্রীতে পাসওয়ার্ড ভিত্তিক দূরবর্তী অ্যাক্সেস সক্ষম করতে আমি বেসিকঅথের জন্য একটি ফাইল অন্তর্ভুক্ত করি। আপনি Satisfyনির্দেশটি নাও চাইতে পারেন । এটি আমার /etc/apache2/basicauth.confফাইল:

# Basic authorization configuration include file 
# Enable basic auth access for remote users
AuthName             "Authentication Required"
AuthType             Basic
AuthBasicProvider    file
AuthUserFile         /etc/apache2/httpd.passwd
Require              valid-user
Satisfy              any

/etc/apache2/allow_local.confআইপি ভিত্তিক প্রমাণীকরণের জন্য আমার কাছে একটি অন্তর্ভুক্ত ফাইল রয়েছে।

# Common local access block - Allow all local addresses
Order deny,allow
Deny  from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
Allow from 192.168.1.0/24

তাদের সক্ষম করতে আমি এগুলি ব্যবহার করি use

Include /etc/apache2/allow_local.conf
Include /etc/apache2/basicauth.conf

আপনি অনুমোদনের নির্দিষ্টকরণে যুক্ত করার চেষ্টা করতে পারেন। এটি আমার পরীক্ষার কনফিগারেশন নিয়ে কাজ করে।

Order deny,allow
Allow from all

চেষ্টা করে দেখুন - এখনও কাজ করে না: -ও
ব্র্যাড

আমি যদি কেবল আপনার ফাইলগুলি ঠিক তেমনভাবে অন্তর্ভুক্ত করি তবে আমি একটি ত্রুটি পেয়েছি: "AuthName এখানে অনুমোদিত নয়" - কারণ আপনি এই নির্দেশিকা যে কোনও জায়গায় নির্দিষ্ট করতে পারবেন না (যেমন কোনও "অবস্থান", "ডিরেক্টরি" বা "প্রক্সি" ধারাটির বাইরে Or বা আমি কি কিছু মিস করছি? যদি আমি এটিকে "ডিরেক্টরি" বিভাগের মধ্যে অন্তর্ভুক্ত করি - তবে - আমাকে কোনও শংসাপত্র ছাড়াই ছেড়ে দেওয়া হবে
ব্র্যাড

যদি আমি কেবল "ডিরেক্টরি" বিভাগে "সকলের কাছ থেকে অস্বীকার করি" তবে আমি অ্যাক্সেস থেকে বঞ্চিত হব (যেমনটি আপনি আশা করেছিলেন)। এরপরে যদি ডিরেক্টরি FIR এ আপনার FIRST স্ক্রিপ্ট অন্তর্ভুক্ত করা হয় তবে আমি নিঃশর্ত অ্যাক্সেসের অনুমতি পাচ্ছি। আমি যদি আপনার স্ক্রিপ্টের "সন্তুষ্ট" অপসারণ করি তবে আমি নিঃশর্ত অস্বীকৃত।
ব্র্যাড

0

আমারও একই সমস্যা ছিল এবং এটি সম্ভবত অ্যাপাচি বাগ হতে পারে; আমার ক্ষেত্রে, সমস্যাটি একটি আপডেটের পরে দেখা গেছে এবং পরবর্তী আপডেটের পরে অদৃশ্য হয়ে গেছে, তবে আমাকে এটি নীচে যুক্ত করতে হয়েছিল:

Deny from all

এটি ভীতিজনক যে অ্যাপাচি এই জাতীয় সুরক্ষা গর্তগুলি খুলতে পারে :(


Deny from allএকটি অ্যাপাচি ২.২ সেটিংস। httpd.apache.org/docs/2.4/upgrading.html#run-টাইম
বিপদ 89

হ্যাঁ একটি পূর্ববর্তী-বেমানান ভাবে পরিবর্তন নিরাপত্তা সংক্রান্ত নির্দেশনা baaaaaad হয়
গ্রেগ

0

চেষ্টা করুন:
<Directory "/"> ... </Directory>

পরিবর্তে:
<Directory /> ... </Directory>

অর্থ: মূল চিহ্নটি ডাবল উদ্ধৃতি সহ encapsulate করুন। অন্যথায়, আপনি সম্ভবত এই স্ল্যাশ দিয়ে ট্যাগটি বন্ধ করে দিচ্ছেন।


0

দুর্ঘটনাক্রমে অন্য কোনও না আছে কিনা তাও পরীক্ষা করে দেখুন

    Require all granted

একই ডিরেক্টরি কনফিগারেশনের অন্য কোথাও। এটা আপনার ওভাররাইডিং হতে পারে

    Require     valid-user
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.