प्रमाणीकरण और प्राधिकरण
अपनी Erlang सेवाओं तक पहुँचने वाली प्रक्रियाओं और उपयोगकर्ताओं के लिए मजबूत प्रमाणीकरण और प्राधिकरण तंत्र लागू करें।
प्रमाणीकरण और प्राधिकरण, CoddyKit पर वितरित और विफलता-सहिष्णु प्रणालियों की Erlang OTP प्रोग्रामिंग का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह वितरित और विफलता-सहिष्णु प्रणालियों की Erlang OTP प्रोग्रामिंग सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। वितरित और विफलता-सहिष्णु प्रणालियों की Erlang OTP प्रोग्रामिंग पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
AuthN और AuthZ की व्याख्या
वितरित प्रणालियों में, आपकी सेवाओं तक कौन पहुँच रहा है और उसे क्या करने की अनुमति है, यह जानना सुरक्षा के लिए अत्यंत महत्वपूर्ण है। यहीं प्रमाणीकरण और प्राधिकरण की आवश्यकता होती है।
- प्रमाणीकरण (AuthN): किसी उपयोगकर्ता या प्रक्रिया की पहचान सत्यापित करता है। यह प्रश्न का उत्तर देता है, "आप कौन हैं?"
- प्राधिकरण (AuthZ): यह निर्धारित करता है कि प्रमाणित उपयोगकर्ता या प्रक्रिया को कोई विशिष्ट कार्रवाई करने या किसी संसाधन तक पहुँचने की अनुमति है या नहीं। यह पूछता है, "आपको क्या करने की अनुमति है?"
ये दोनों मिलकर आपके Erlang अनुप्रयोगों को सुरक्षित बनाते हैं।
उपयोगकर्ताओं की पहचान करना
उपयोगकर्ता प्रमाणीकरण के लिए हम आम तौर पर उपयोगकर्ता नाम और पासवर्ड जैसी साख का सत्यापन करते हैं। Erlang में, आपके पास उपयोगकर्ता खातों को प्रबंधित करने और लॉगिन प्रयासों को मान्य करने के लिए एक समर्पित सेवा (अक्सर GenServer) हो सकती है।
यह सेवा लॉगिन अनुरोध प्राप्त करेगी, दी गई साख की संग्रहित डेटा से जाँच करेगी और सफलता या विफलता के साथ उत्तर देगी। सफल होने पर, यह सत्र ID या टोकन जारी कर सकती है।
Auth GenServer बनाना
आइए GenServer का उपयोग करके एक बहुत ही बुनियादी auth_service बनाते हैं। सरलता के लिए, यह पहले से निर्धारित उपयोगकर्ता और पासवर्ड संग्रहित करेगा। वास्तविक प्रणाली में, आप डेटाबेस से जुड़ेंगे और पासवर्ड को सुरक्षित रूप से हैश करेंगे।
हमारे auth_service में login/2 फ़ंक्शन होगा, जिसे क्लाइंट प्रमाणीकरण के लिए कॉल कर सकते हैं।
चलने योग्य Auth सेवा
इस सरल प्रमाणीकरण सेवा को चलाकर देखें। अलग-अलग प्रतिक्रियाएँ देखने के लिए आप auth_service:login("user", "pass") और auth_service:login("wrong", "pass") को कॉल कर सकते हैं।
-module(auth_service).
-behaviour(gen_server).
-export([start_link/0, login/2]).
-export([init/1, handle_call/3, handle_cast/2, handle_info/2,
terminate/2, code_change/3]).
% Client API
start_link() ->
gen_server:start_link({local, ?MODULE}, ?MODULE, [], []).
login(Username, Password) ->
gen_server:call(?MODULE, {login, Username, Password}).
% GenServer Callbacks
init([]) ->
% Store a simple user/pass for demonstration
Users = #{<<"user">> => <<"pass">>},
{ok, Users}.
handle_call({login, Username, Password}, _From, State) ->
case maps:get(Username, State, undefined) of
Password ->
{reply, {ok, <<"authenticated">>}, State};
_ ->
{reply, {error, <<"invalid_credentials">>}, State}
end;
handle_call(_Request, _From, State) ->
{reply, {error, unknown_request}, State}.
handle_cast(_Msg, State) ->
{noreply, State}.
handle_info(_Info, State) ->
{noreply, State}.
terminate(_Reason, _State) ->
ok.
code_change(_OldVsn, State, _Extra) ->
{ok, State}.आप क्या कर सकते हैं?
जब कोई उपयोगकर्ता प्रमाणित हो जाता है, तो अगला चरण प्राधिकरण होता है। इसका अर्थ है यह तय करना कि उसे कौन-सी कार्रवाइयाँ करने की अनुमति है। इसे प्रबंधित करने का एक सामान्य तरीका भूमिका-आधारित अभिगम नियंत्रण (RBAC) है।
- भूमिकाएँ: अनुमतियों के समूह (जैसे,
admin,editor,viewer)। - अनुमतियाँ: विशिष्ट कार्रवाइयाँ (जैसे,
create_post,edit_post,delete_post)।
उपयोगकर्ताओं को भूमिकाएँ दी जाती हैं और भूमिकाओं को अनुमतियाँ दी जाती हैं।
भूमिका-आधारित अभिगम नियंत्रण
हम भूमिकाओं और अनुमतियों को प्रबंधित करने के लिए अपने auth_service (या किसी अलग सेवा) का विस्तार कर सकते हैं। इसे यह जानना आवश्यक होगा:
- किस उपयोगकर्ता के पास कौन-सी भूमिकाएँ हैं।
- प्रत्येक भूमिका कौन-सी अनुमतियाँ देती है।
फिर, जब किसी सेवा को यह जाँचना हो कि कोई उपयोगकर्ता कोई कार्रवाई कर सकता है या नहीं, तो वह प्राधिकरण सेवा से पूछती है।
RBAC वाली Auth सेवा
यहाँ एक अद्यतन auth_service दिया गया है, जिसमें बुनियादी RBAC व्यवस्था शामिल है। यह भूमिकाएँ और अनुमतियाँ परिभाषित करता है और यह जाँचने की सुविधा देता है कि किसी उपयोगकर्ता के पास कोई विशिष्ट अनुमति है या नहीं।
लॉगिन करने के बाद auth_service:check_permission("user", "read_data") और auth_service:check_permission("user", "delete_data") को कॉल करके देखें।
-module(auth_service).
-behaviour(gen_server).
-export([start_link/0, login/2, check_permission/2]).
-export([init/1, handle_call/3, handle_cast/2, handle_info/2,
terminate/2, code_change/3]).
% Client API
start_link() ->
gen_server:start_link({local, ?MODULE}, ?MODULE, [], []).
login(Username, Password) ->
gen_server:call(?MODULE, {login, Username, Password}).
check_permission(Username, Permission) ->
gen_server:call(?MODULE, {check_permission, Username, Permission}).
% GenServer Callbacks
init([]) ->
Users = #{
<<"user">> => #{
password => <<"pass">>,
roles => [<<"viewer">>, <<"editor">>]
},
<<"admin">> => #{
password => <<"admin_pass">>,
roles => [<<"admin">>, <<"viewer">>]
}
},
Roles = #{
<<"viewer">> => [<<"read_data">>],
<<"editor">> => [<<"read_data">>, <<"write_data">>],
<<"admin">> => [<<"read_data">>, <<"write_data">>, <<"delete_data">>]
},
{ok, #{users => Users, roles => Roles}}.
handle_call({login, Username, Password}, _From, State) ->
Users = maps:get(users, State),
case maps:get(Username, Users, undefined) of
#{password := Password} ->
{reply, {ok, <<"authenticated">>}, State};
_ ->
{reply, {error, <<"invalid_credentials">>}, State}
end;
handle_call({check_permission, Username, Permission}, _From, State) ->
Users = maps:get(users, State),
Roles = maps:get(roles, State),
case maps:get(Username, Users, undefined) of
#{roles := UserRoles} ->
HasPermission = lists:any(
fun(Role) ->
case maps:get(Role, Roles, []) of
RolePermissions when is_list(RolePermissions) ->
lists:member(Permission, RolePermissions);
_ -> false
end
end,
UserRoles
),
{reply, HasPermission, State};
_ ->
{reply, false, State} % User not found or not authenticated
end;
handle_call(_Request, _From, State) ->
{reply, {error, unknown_request}, State}.
handle_cast(_Msg, State) ->
{noreply, State}.
handle_info(_Info, State) ->
{noreply, State}.
terminate(_Reason, _State) ->
ok.
code_change(_OldVsn, State, _Extra) ->
{ok, State}.अपनी सेवाओं को सुरक्षित बनाना
जब आपके पास प्रमाणीकरण और प्राधिकरण सेवा होती है, तो आपके सिस्टम की अन्य सेवाएँ उसका उपयोग कर सकती हैं। सामान्य प्रक्रिया इस प्रकार होती है:
- क्लाइंट प्रमाणीकरण करता है:
auth_service:login/2को कॉल करता है। - सत्र/टोकन प्राप्त करता है: सफल होने पर, क्लाइंट को सत्र ID या टोकन मिलता है (जैसे, प्रक्रिया ID या अधिक जटिल JWT)।
- क्लाइंट अधिकृत अनुरोध करता है: किसी अन्य सेवा (जैसे,
data_service) को कॉल करते समय, क्लाइंट अपना सत्र/टोकन और की जाने वाली कार्रवाई शामिल करता है। - सेवा प्राधिकरण की जाँच करती है:
data_service, क्लाइंट की पहचान और अनुरोधित कार्रवाई का उपयोग करकेauth_service:check_permission/2को कॉल करती है। - सेवा उत्तर देती है: यदि अनुमति है, तो कार्रवाई आगे बढ़ती है; अन्यथा, एक त्रुटि लौटाई जाती है।
बुनियादी Auth से आगे
हालाँकि हमारे उदाहरण सरल हैं, वास्तविक प्रणालियों को और भी बहुत कुछ चाहिए:
- पासवर्ड हैशिंग: पासवर्ड को कभी भी सादे पाठ के रूप में संग्रहित न करें।
bcryptयाpbkdf2जैसे मजबूत हैशिंग एल्गोरिदम का उपयोग करें। - सत्र प्रबंधन: सत्र टोकन को सुरक्षित रूप से बनाएँ, संग्रहित करें और मान्य करें। सुनिश्चित करें कि वे समय-सीमा समाप्त होने पर अमान्य हो जाएँ और रद्द किए जा सकें।
- ऑडिटिंग: सुरक्षा निगरानी और फॉरेंसिक जाँच के लिए सभी प्रमाणीकरण प्रयासों और प्राधिकरण जाँचों का लॉग दर्ज करें।
- बाहरी पहचान प्रदाता: एकल साइन-ऑन के लिए OAuth2/OpenID Connect से एकीकृत करें।
Erlang की समवर्ती क्षमता इसे मजबूत Auth सेवाएँ बनाने के लिए उपयोगी बनाती है।
AuthN बनाम AuthZ जाँच
मान लीजिए कि कोई उपयोगकर्ता Erlang अनुप्रयोग में किसी सुरक्षित दस्तावेज़ तक पहुँचने का प्रयास कर रहा है।
पुनरावलोकन: सेवाओं को सुरक्षित बनाना
हमने Erlang में प्रमाणीकरण और प्राधिकरण की मूल बातें सीखीं:
- प्रमाणीकरण (AuthN) पहचान की पुष्टि करता है ("आप कौन हैं?")।
- प्राधिकरण (AuthZ) अनुमतियाँ निर्धारित करता है ("आप क्या कर सकते हैं?")।
- हमने उपयोगकर्ता लॉगिन और भूमिका-आधारित अभिगम नियंत्रण (RBAC) दोनों के लिए GenServer का उपयोग करके एक सरल
auth_serviceबनाई। - सुरक्षित और मजबूत वितरित Erlang अनुप्रयोग बनाने के लिए यह समझना आवश्यक है कि इन सेवाओं को एकीकृत कैसे किया जाए।
अब जानें कि अपने Erlang अनुप्रयोगों में संवेदनशील डेटा की स्वयं सुरक्षा कैसे करें।
एआई शिक्षक के साथ Erlang सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 12
- पाठ
- 48
अक्सर पूछे जाने वाले प्रश्न
क्या “प्रमाणीकरण और प्राधिकरण” पाठ निःशुल्क है?
हाँ — वितरित और विफलता-सहिष्णु प्रणालियों की Erlang OTP प्रोग्रामिंग अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “प्रमाणीकरण और प्राधिकरण” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। वितरित और विफलता-सहिष्णु प्रणालियों की Erlang OTP प्रोग्रामिंग पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“प्रमाणीकरण और प्राधिकरण” में मैं क्या सीखूँगा?
अपनी Erlang सेवाओं तक पहुँचने वाली प्रक्रियाओं और उपयोगकर्ताओं के लिए मजबूत प्रमाणीकरण और प्राधिकरण तंत्र लागू करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ वितरित और विफलता-सहिष्णु प्रणालियों की Erlang OTP प्रोग्रामिंग का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या वितरित और विफलता-सहिष्णु प्रणालियों की Erlang OTP प्रोग्रामिंग शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर वितरित और विफलता-सहिष्णु प्रणालियों की Erlang OTP प्रोग्रामिंग शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।
“प्रमाणीकरण और प्राधिकरण” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस वितरित और विफलता-सहिष्णु प्रणालियों की Erlang OTP प्रोग्रामिंग पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर वितरित और विफलता-सहिष्णु प्रणालियों की Erlang OTP प्रोग्रामिंग पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- सुरक्षित नोड संचार (TLS)
- प्रमाणीकरण और प्राधिकरण
- संवेदनशील डेटा की सुरक्षा
- वितरण कुकी और नोड पहुँच को सुरक्षित करना