Architecture Decision Record

Active theme: Light

← నిర్ణయ రికార్డు ఉదాహరణలు

ఆర్కిటెక్చర్ నిర్ణయ రికార్డు: ప్రమాణీకరణ, అధికారీకరణ ఎంపికలు

వెబ్ అప్లికేషన్ ప్రమాణీకరణ (authentication), అధికారీకరణ (authorization) అనేవి అప్లికేషన్లకు, సేవలకు ప్రాప్యతను భద్రపరచడంలో రెండు కీలక భావనలు. రెండూ వినియోగదారుల గుర్తింపుతో, అనుమతులు ఎలా ఇస్తారనే దానితో వ్యవహరిస్తాయి, కానీ అవి వేర్వేరు అంశాలపై దృష్టి పెడతాయి:

  • ప్రమాణీకరణ అనేది ఒక వినియోగదారు లేదా వ్యవస్థ గుర్తింపును ధృవీకరించే ప్రక్రియ.
  • అధికారీకరణ అనేది ప్రమాణీకరించబడిన వినియోగదారు లేదా వ్యవస్థ ఏ వనరులను లేదా చర్యలను ప్రాప్యత చేయగలదో నిర్ణయించే ప్రక్రియ.

ఇప్పుడు, ప్రమాణీకరణ, అధికారీకరణను నిర్వహించడానికి ఆధునిక వెబ్ అప్లికేషన్లలో సాధారణంగా వాడే, మీరు ప్రస్తావించిన నిర్దిష్ట ప్రోటోకాల్లు, సాంకేతికతల్లోకి వెళ్దాం.

1. OAuth (Open Authorization)

OAuth అనేది అధికారీకరణ కోసం ఒక బహిరంగ ప్రమాణం. ఇది ఒక వినియోగదారు తమ ఆధారాలను పంచుకోకుండా, తమ వనరులకు పరిమిత ప్రాప్యతను మూడవ పక్ష అప్లికేషన్కు ఇవ్వడానికి అనుమతిస్తుంది. ముఖ్య ఆలోచన ప్రతినిధ్య ప్రాప్యత. వినియోగదారులు తమ యూజర్నేమ్, పాస్వర్డ్ను నేరుగా మూడవ పక్షానికి ఇవ్వకుండా మూడవ పక్ష సేవలోకి లాగిన్ అవ్వగల పరిస్థితులలో (ఉదా., Googleతో సైన్ ఇన్ చేయడం) OAuth తరచుగా వాడతారు.

  • ప్రవాహం: OAuth సాధారణంగా టోకెన్-ఆధారిత ప్రవాహాన్ని అనుసరిస్తుంది, ఇక్కడ అధికారీకరణ సర్వర్ మూడవ పక్ష అప్లికేషన్కు ఒక యాక్సెస్ టోకెన్ను జారీ చేస్తుంది. ఈ టోకెన్ వినియోగదారు అనుమతులను సూచిస్తుంది, అప్లికేషన్ API నుండి వినియోగదారు డేటాను లేదా వనరులను ప్రాప్యత చేయడానికి దాన్ని వాడుతుంది.
  • ఉదాహరణ: ఒక వినియోగదారు తమ Google ఖాతాను వాడి మూడవ పక్ష యాప్లోకి సైన్ ఇన్ అవుతారు. Google వినియోగదారు గుర్తింపును ధృవీకరించి, మూడవ పక్ష యాప్ కొంత Google డేటాను (ఉదా., Google Calendar) ప్రాప్యత చేయడానికి అనుమతించే టోకెన్ను ఇస్తుంది.

OAuth ప్రమాణీకరణను నేరుగా నిర్వహించదు; అది ప్రాప్యతను ఇవ్వడం గురించి. ప్రమాణీకరణ కోసం, OAuth తరచుగా OpenID Connect వంటి ఇతర ప్రోటోకాల్లతో జతచేయబడుతుంది.

2. OpenID Connect (OIDC)

OpenID Connect (OIDC) అనేది OAuth 2.0 పైన నిర్మించిన గుర్తింపు పొర, ఇది OAuth అధికారీకరణ సామర్థ్యాలకు ప్రమాణీకరణను జోడిస్తుంది. సారాంశంలో, OpenID Connect వినియోగదారు ప్రమాణీకరణను నిర్వహించడానికి OAuthను విస్తరిస్తుంది, వినియోగదారు గుర్తింపును ధృవీకరించడానికి అప్లికేషన్లకు ప్రామాణిక మార్గాన్ని అందిస్తుంది.

  • ప్రవాహం: ఒక వినియోగదారు OpenID Connect వాడి లాగిన్ అయినప్పుడు, మూడవ పక్ష అప్లికేషన్ (OAuth యాక్సెస్ టోకెన్తో పాటు) ఒక ID టోకెన్ను అభ్యర్థిస్తుంది. ID టోకెన్లో వినియోగదారు గురించిన సమాచారం (వారి యూజర్నేమ్, ఇమెయిల్, ఇతర క్లెయిమ్లు వంటివి) ఉంటుంది. ఇది వినియోగదారు ఎవరో, వారు ప్రమాణీకరించబడ్డారా లేదా అప్లికేషన్ తెలుసుకునేలా చేస్తుంది.
  • ఉదాహరణ: మీ Google ఖాతాను వాడి Slack వంటి సేవలోకి లాగిన్ అవ్వడంలో (Google OpenID Connect ప్రొవైడర్గా) OpenID Connect ద్వారా ప్రమాణీకరణ ఉంటుంది, అయితే OAuth మీ Google వనరులకు ప్రాప్యతను నిర్వహిస్తుంది.

ఆ యాప్లు ఏ వనరులను ప్రాప్యత చేయగలవో సూక్ష్మ నియంత్రణను అనుమతిస్తూనే, మూడవ పక్ష యాప్లు వినియోగదారులను ప్రమాణీకరించడాన్ని OIDC సులభతరం చేస్తుంది.

3. SAML (Security Assertion Markup Language)

SAML అనేది ముఖ్యంగా సింగిల్ సైన్-ఆన్ (SSO) సందర్భాలలో పక్షాల మధ్య ప్రమాణీకరణ, అధికారీకరణ డేటాను మార్పిడి చేయడానికి వాడే పాత, XML-ఆధారిత ప్రమాణం. వినియోగదారులు ఒకసారి ప్రమాణీకరించుకుని, ఆధారాలను మళ్లీ ఇవ్వకుండా అనేక అప్లికేషన్లను ప్రాప్యత చేయడానికి వీలు కల్పించేలా ఇది ప్రధానంగా ఎంటర్ప్రైజ్ వాతావరణాలలో వాడతారు.

  • ప్రవాహం: వినియోగదారు మొదట ఐడెంటిటీ ప్రొవైడర్ (IdP) వద్ద ప్రమాణీకరించుకుంటారు. IdP వినియోగదారు గుర్తింపును, సంబంధిత లక్షణాలను కలిగిన సంతకం చేసిన SAML అసర్షన్ను ఉత్పత్తి చేస్తుంది. ఆ అసర్షన్ను సర్వీస్ ప్రొవైడర్ (SP)కు పంపుతారు, అది అప్లికేషన్ ప్రాప్యతను అధికారీకరించడానికి దాన్ని వాడుతుంది.
  • ఉదాహరణ: ఒక ఉద్యోగి తమ కార్పొరేట్ పోర్టల్లోకి (IdP) లాగిన్ అవుతారు, ఆధారాలను మళ్లీ ఇవ్వకుండా ఇమెయిల్, CRM వంటి ఇతర వ్యవస్థల్లోకి ఆటోమేటిక్గా లాగిన్ అవుతారు. ప్రమాణీకరణ ప్రక్రియ IdP పంపిన SAML అసర్షన్ ఆధారంగా ఉంటుంది.

SAML సాధారణంగా ఎంటర్ప్రైజ్ SSO పరిష్కారాలలో వాడతారు, కార్పొరేట్ వాతావరణాలలోని వెబ్ అప్లికేషన్లకు బాగా పనిచేస్తుంది, కానీ OAuth/OIDCతో పోలిస్తే ఇది మొబైల్‌కు తక్కువ అనుకూలం.

4. WS-Federation (Web Services Federation)

WS-Federation అనేది ముఖ్యంగా Microsoft-ఆధారిత ఎంటర్ప్రైజ్ వాతావరణాలలో సింగిల్ సైన్-ఆన్ (SSO) కోసం వాడే మరొక ప్రోటోకాల్. ఇది WS- (Web Services)* స్పెసిఫికేషన్ల కుటుంబంలో భాగం, వేర్వేరు భద్రతా డొమైన్ల మధ్య (వేర్వేరు సంస్థల మధ్య లేదా వేర్వేరు సేవల మధ్య వంటివి) గుర్తింపు సమాఖ్యకు అనుమతిస్తుంది.

  • ప్రవాహం: WS-Federation ఒక **నమ్మకమైన ఐడెంటిటీ ప్రొవైడర్ (IdP)**ను వినియోగదారులను ప్రమాణీకరించడానికి, సర్వీస్ ప్రొవైడర్ అధికారీకరణ కోసం వాడగల టోకెన్లను జారీ చేయడానికి అనుమతిస్తుంది. ఇది SAMLకు సమానం కానీ Microsoft సాంకేతికతలపై ఎక్కువగా ఆధారపడే సందర్భాలలో తరచుగా వాడతారు.
  • ఉదాహరణ: ఒక వినియోగదారు Microsoft Azure Active Directory (AD) హోస్ట్ చేసిన ఎంటర్ప్రైజ్ అప్లికేషన్లోకి లాగిన్ అవుతారు, మూడవ పక్ష విక్రేతలు హోస్ట్ చేసిన అప్లికేషన్లతో సహా ఇతర సమాఖ్య సేవలను ప్రాప్యత చేయడానికి వారి గుర్తింపును వాడవచ్చు.

అనేక ఆధునిక వెబ్ వాతావరణాలలో WS-Federationను ఎక్కువగా OAuth2.0, OpenID Connect వంటి కొత్త ప్రోటోకాల్లు భర్తీ చేసినప్పటికీ, ముఖ్యంగా Microsoft-కేంద్రిత ఎంటర్ప్రైజ్లలో, పాత వ్యవస్థలలో ఇది ఇప్పటికీ వాడతారు.

5. LDAP (Lightweight Directory Access Protocol)

LDAP అనేది డైరెక్టరీ సేవలను ప్రాప్యత చేయడానికి, నిర్వహించడానికి వాడే ప్రోటోకాల్, సాధారణంగా కేంద్రీకృత డైరెక్టరీలో (తరచుగా డైరెక్టరీ సర్వీస్ అంటారు) వినియోగదారు ఆధారాలను నిల్వ చేయడానికి, ప్రాప్యత నియంత్రణను నిర్వహించడానికి వాడతారు. LDAP ప్రత్యేకంగా ప్రమాణీకరణ లేదా అధికారీకరణ గురించి కాదు, కానీ గుర్తింపు డేటాను నిల్వ చేయడానికి, తిరిగి పొందడానికి వాడతారు, ఆ డేటాను ఆ ప్రక్రియలలో వాడతారు.

  • ప్రమాణీకరణ: ఆధారాల (పాస్వర్డ్ల వంటివి) కోసం డైరెక్టరీ సేవను ప్రశ్నించడం ద్వారా వినియోగదారులను ప్రమాణీకరించడానికి LDAP అప్లికేషన్ను అనుమతిస్తుంది.
  • అధికారీకరణ: ఇది వినియోగదారు పాత్రలను, అనుమతులను కూడా నిర్వహిస్తుంది, ఒక వినియోగదారుకు కొన్ని వనరులకు ప్రాప్యత ఉందా అని నిర్ణయించడంలో సహాయపడుతుంది.
  • ఉదాహరణ: అనేక ఎంటర్ప్రైజ్లు ప్రమాణీకరణ, అధికారీకరణ కోసం, ముఖ్యంగా Windows వాతావరణాలలో, LDAP-ఆధారిత డైరెక్టరీలను (ఉదా., Active Directory) వాడతాయి.

అంతర్గత వ్యవస్థల అంతటా వినియోగదారు ప్రాప్యతను నిర్వహించడానికి LDAP ఎంటర్ప్రైజ్లకు కీలకం, కానీ ఆధునిక వెబ్ సందర్భంలో, మరింత సంపూర్ణ గుర్తింపు నిర్వహణ కోసం LDAPను తరచుగా SAML లేదా OAuth వంటి ఇతర ప్రోటోకాల్లతో అనుసంధానిస్తారు.

6. సోషల్ SSO ప్రొవైడర్లు

Facebook, Google, Twitter, GitHub వంటి సోషల్ సింగిల్ సైన్-ఆన్ (SSO) ప్రొవైడర్లు, వినియోగదారులు తమ సోషల్ మీడియా ఆధారాలను వాడి మూడవ పక్ష అప్లికేషన్లలోకి ప్రమాణీకరించుకోవడానికి అనుమతిస్తాయి. ఇది మూడవ పక్ష సేవ (ఉదా., Google) ఐడెంటిటీ ప్రొవైడర్గా ఉండే ఒక రకమైన OAuth-ఆధారిత ప్రమాణీకరణ.

  • ప్రవాహం: వినియోగదారు (ఉదాహరణకు) "Googleతో లాగిన్ అవ్వండి" క్లిక్ చేస్తారు. యాప్ Googleకు రీడైరెక్ట్ చేస్తుంది, అక్కడ వినియోగదారు (ఇప్పటికే లాగిన్ కాకపోతే) లాగిన్ అవుతారు. అప్పుడు Google మూడవ పక్ష యాప్కు యాక్సెస్ టోకెన్ లేదా ID టోకెన్ను అందిస్తుంది, దాన్ని వినియోగదారును ప్రమాణీకరించడానికి, బహుశా వారి డేటాను ప్రాప్యత చేయడానికి వాడవచ్చు.
  • ఉదాహరణ: అనేక అప్లికేషన్లు మీ Google లేదా Facebook ఆధారాలను వాడి లాగిన్ అవ్వడానికి అనుమతిస్తాయి. యాప్ తెర వెనుక మీ గుర్తింపును ధృవీకరించడానికి, కొన్ని సందర్భాల్లో కొన్ని సోషల్ మీడియా డేటాను ప్రాప్యత చేయడానికి OAuth లేదా OpenID Connectను వాడుతుంది.

మరొక యూజర్నేమ్, పాస్వర్డ్ సృష్టించడానికి ఇష్టపడని వినియోగదారులకు అడ్డంకిని తగ్గిస్తుంది కాబట్టి, సోషల్ SSO ప్రమాణీకరణకు సౌకర్యవంతమైన, విస్తృతంగా స్వీకరించిన పద్ధతి.


తేడాల సారాంశం:

  • OAuth: అధికారీకరణ కోసం వాడతారు, ఆధారాలను బహిర్గతం చేయకుండా మూడవ పక్ష యాప్లు వినియోగదారు డేటాను ప్రాప్యత చేయడానికి అనుమతిస్తుంది.
  • OpenID Connect: ప్రమాణీకరణను అందించడానికి OAuthను విస్తరిస్తుంది, వినియోగదారు గుర్తింపును ధృవీకరించడానికి యాప్లను వీలు కల్పిస్తుంది.
  • SAML: SSO కోసం వాడే XML-ఆధారిత ప్రోటోకాల్, తరచుగా ఎంటర్ప్రైజ్ వాతావరణాలలో.
  • WS-Federation: గుర్తింపు సమాఖ్య కోసం Microsoft-నిర్దిష్ట ప్రోటోకాల్, పాత వ్యవస్థలలో వాడతారు.
  • LDAP: వినియోగదారులను ప్రమాణీకరించడానికి, అధికారీకరణను నిర్వహించడానికి డైరెక్టరీ సేవలను ప్రశ్నించే ప్రోటోకాల్.
  • సోషల్ SSO ప్రొవైడర్లు: మూడవ పక్ష యాప్లు తమ సోషల్ మీడియా ఆధారాలను వాడి వినియోగదారులను ప్రమాణీకరించడానికి అనుమతించే OAuth-ఆధారిత వ్యవస్థలు (Google, Facebook వంటివి).

ఈ సాంకేతికతల్లో ప్రతిదానికీ దాని స్వంత బలాలు, వినియోగ సందర్భాలు ఉన్నాయి, ఆధునిక అప్లికేషన్లలో భద్రతకు సంబంధించిన వివిధ అంశాలకు వాటి కలయికను వాడటం మీరు చూడవచ్చు (ఉదా., API ప్రాప్యతకు OAuth/OIDC, ఎంటర్ప్రైజ్ SSOకు SAML).