Wednesday, March 10, 2010

Open-ID






අන්තර්ජාල පරිශීලකයින් විදිහට අපි නොයෙකුත් සේවා භාවිතා කරනවා. Gmail වැනි වෙබ් ආශ්‍රිත ඊමේල් ‍සේවා, Blogger හෝ Wordpress වැනි සේවා ආදී වශයෙන් මේවා බොහෝම පුළුල් පරාසයක විහිදෙන්න පුලුවන්. ඒ විදිහට විහිදෙන අතරේ එම සේවා සපයන සේවාදායකයින් ප්‍රමාණයත් ඉතාමත් වැඩි වෙන්න පුලුවන්. එතකොට අපි මෙම සේවා එකින් එක භාවිතා කරන්න කලින් සාමාන්‍යයෙන් username හා password ද්විත්වය භාවිතා කරලා අපිව authenticate කර ගන්නවා. නමුත් ‍සේවාදායකයින් ප්‍රමාණය වැඩි වෙන්න වැඩි වෙන්න අපි භාවිතා කරන username/password ප්‍රමාණය වැඩි වෙන්න පුලුවන් (එකම username එක දිගටම භාවිත කරන්න ටිකක් අමාරුයි. එකම password එක භාවිත කිරීම ඉතාමත් අනාරක්ෂිතයි). අනිත් කාරණය මේ වෙන වෙනස් සේවාදායකයින්ගේ සේවා පරිශීලනය කරන්න අපි වෙන වෙනම authenticate කරන්න සිදුවීම. තවත් දෙයක් තමයි සෑම සේවාදායකයෙකුම එක් එක් පරිශීලකයගේ විස්තර වෙන වෙනම ගබඩා කර තබා ගැනීමට සිදුවීම. මේවා බොහෝවිට එකම දත්ත වෙන් වෙන් තැන්වල තිබෙන ලෙසට තිබුනේ. මේක ඉතාමත් අපහසුකාරී තත්වයක් වුනා.
ඊට පස්සේ ඉතාමත් දක්ෂ අදහසක් මතු වුනා. මේ සියළු වෙනස් සේවා පරිශීලනය කරන්න එකම එක authentication එකක් තිබුනොත් කොහොමද? ඒ කියන්නේ blogger වලට ඇතුලු වෙන්නත් yahoo වලට ඇතුලු වෙන්නත් වෙනත් ප්‍රසිද්ධ නැති සේවාදායකයෙකුගේ සේවයකට ඇතුලු වෙන්නත් එක username/password ද්විත්වයක් තිබුනොත් සහ ඒ සියළු දේට ඇතුලු වෙන්න එක පාරක් විතරක් authenticate කර ගෙන පුලුවන් වුනොත් කොහොමද?
මේ විදියට තමයි single sign-on කියන සංකල්පය අන්තර්ජාලයට ඇතුලු වෙන්නේ. මෙතනදි එක මධ්‍යගත සේවාදායකයෙක් ඉන්නවා. ඔහු තමයි authentication කර්තව්‍යය සිදු කරන්නේ. පහළ තියෙන්නේ මේ සිදුවීම් ජාලාවේ අවුල් ලිහලා ගත්ත version එකක්.
මුලින්ම ඒ මධ්‍යගත සේවාදායකයා (A) ලඟ අපි ලියාපදිංචි වෙන්න ඕනේ. එතකොට එතනින් අපිට URL එකක් දෙනවා අපිව අඳුන ගන්න.
අපිට සේවය අවශ්‍ය කරන සේවාදායකයගේ (B) වෙබ් අඩවියට ගියාට පස්සේ එතනින් අපිට අපේ URL ඇතුල් කරන්න තැනක් ලබා දෙනවා (තාම password එකක් ඇතුලු කලේ නෑ).
දැන් B විසින් අපිව අර මධ්‍යගත සේවාදායකයගේ වෙබ් පිටුවට (A) redirect කරනවා. එවිට අපි එතන username එක සහ password එක ලබා දී authenticate කර ගන්න ඕනේ.
දැන් A විසින් අපෙන් අහනවා B වෙතට අපේ තොරතුරු (credentials) යවන්න ද කියලා. අපිට අවශ්‍යනම් අපි අනුමැතිය ලබා දෙනවා. එතකොට කරුණු දෙකක් වෙනවා.
B වෙතට අපේ තොරතුරු (credentials) යැවෙනවා
අපේ browser එකට token එකක් ලැබෙනවා (cookie එකක් ලෙසට). මෙය තමයි අපි එම cookie/token එකට අදාල කාලය සඳහා A වෙතින් authenticate කර ගත් බවට ලැබෙන සහතිකය
දැන් B වෙතට ලැබෙන විස්තර වලින් B අපිව authenticate කර ගන්නවා. එතැනට අවශ්‍යනම් (A වෙතින් ලැබෙන) අපගේ identifier එකක් ගබඩා කර තබා ගත හැකියි. පරිශීලක ‍දත්ත වෙනුවට B හට A වෙතින් ලැබෙන තොරතුරු (credentials) භාවිතා කල හැකියි.
දැන් අපි තවත් single sign-on enable කර ඇති සේවා දායකයෙකුගේ (C) වෙබ් අඩවියකට පැමිණියහොත් A වෙතට නොගොස් අපට කලින් A වෙතින් ලැබුණු token එක ඉදිරිපත් කල හැකියි. එය expire වී නැතිනම් අපව C විසින් authenticate කර ගන්නවා. එවිට C හටත් එම token එක භාවිතා කර අ‍පගේ විස්තර ලබා ගත හැකියි.
අදාල token එක expire වූ පසු නැවත භාවිතා කිරීමට අවශ්‍යනම් අපි නැවත A වෙත ගොස් authenticate කර ගත යුතුයි.
OpenID මෙම කරළියට එන අලුත්ම මෙන්ම වැඩියෙන්ම ජනප්‍රිය වෙච්ච implementation එක. එය implementation එකකටත් වඩා සම්මතයක් කීවොත් නිවැරදියි. අපි කලින් flow එකේදි එක් මධ්‍යගත ස්වාදායකයෙකු (A) ගැන කතා කලා. OpenID වලදි මේක ටිකක් වෙනස් වෙනවා. එහි මධ්‍යගත (centralized) වෙනුවට විමධ්‍යගත (decentralized) සේවාදායකයින් කිහිප දෙනෙක් සිටිනවා. අපට වුනත් අලුත් OpenID සේවාදායකයෙකු ලෙස එකතු විය හැකියි. ඉතුරු කාර්යයන් ටික බොහෝ දුරට සමානයි. OpenID වල වැඩි පුර වාසියක් වෙන්නේ එය එක් authentication ආකාරයක් බල කරන්නේ නැති බව. ඒ නිසා අපට username/password වෙනුවට ඇඟිළි සළකුණු, SmartCards වැනි දේත් authentication සඳහා යොදා ගන්න පුලුවන්. ඉතාමත් ගුණාත්මක ආකාරයේ authentication ආකාරයක් භාවිතා කරමින් OpenID වඩා ආරක්ෂාව වැදගත් කටයුතු (උදා: බැංකු කටයුතු) වලටත් යොදා ගන්න පුලුවන්.
අපට OpenID එකක් ලබා ගත හැකි ක්‍රම දෙකක් තිබෙනවා.
දැනටම මෙම සේවාව ලබා දෙන තැනකින් අපට URL එකක් ලබා ගැනීම
අපගේ domain එකක් භාවිතා ‍කර එය OpenID එකක් ලෙස යොදා ගැනීම
දැනට OpenID සේවාව ලබා ගත හැකි බොහෝ ස්ථාන තිබෙනවා. ClaimID, MyOpenID වැනි සේවාදායකයින්ගෙන් අපට OpenID එකක් ලබා ගත හැකියි. ඒ වගේම Google, Yahoo, Blogger, Wordpress වැනි සංවිධාන වලින් ඔවුන්ගේ පරිශීලකයින්ට OpenID සේවාව ලබා දෙනවා. ඔබට දැනටමත් මෙම සේවාදායකයින්ගේ ගිණුමක් තිබෙනවනම් එම අදාල URL (උදා: blogger වල නම් blogspot අඩවි ලිපිනය) එක OpenID එකක් ලෙස භාවිතා කල හැකියි. මෙම සේවාදායකයින් පිළිබඳ වැඩි විස්තර සඳහා http://openid.net/get-an-openid/ වෙතට යන්න.

http://www.techbuzz.chamiladealwis.com/2009/12/single-sign-on-openid/

2 comments:

  1. You have copied my article from my tech blog and have put no references. As stated in the license, it is a clear violation. Either put references or remove this article.

    Original article is at
    http://www.techbuzz.chamiladealwis.com/2009/12/single-sign-on-openid

    ඔබ මාගේ තාක්ෂණික බ්ලොග් අඩවියෙන් මෙම සටහන පිටපත් කර ඇති අතර එය දක්වා ඇති එකඟතාවය අනුව පැහැදිලි ලෙස නීති විරෝධීය. කරුණාකර සබැඳියක් දමන්න. නැතිනම් මෙම සටහන ඉවත් කර ගන්න.

    ReplyDelete
  2. @chamila_dealwis

    වරද නිවැරදි කරා. සමාවෙන්න

    ReplyDelete