Single Sign-on සහ OpenID

අන්තර්ජාල පරිශීලකයින් විදිහට අපි නොයෙකුත් සේවා භාවිතා කරනවා. Gmail වැනි වෙබ් ආශ්‍රිත ඊමේල් ‍සේවා, Blogger හෝ WordPress වැනි සේවා ආදී වශයෙන් මේවා බොහෝම පුළුල් පරාසයක විහිදෙන්න පුලුවන්. ඒ විදිහට විහිදෙන අතරේ එම සේවා සපයන සේවාදායකයින් ප්‍රමාණයත් ඉතාමත් වැඩි වෙන්න පුලුවන්. එතකොට අපි මෙම සේවා එකින් එක භාවිතා කරන්න කලින් සාමාන්‍යයෙන් username හා password ද්විත්වය භාවිතා කරලා අපිව authenticate කර ගන්නවා. නමුත් ‍සේවාදායකයින් ප්‍රමාණය වැඩි වෙන්න වැඩි වෙන්න අපි භාවිතා කරන username/password ප්‍රමාණය වැඩි වෙන්න පුලුවන් (එකම username එක දිගටම භාවිත කරන්න ටිකක් අමාරුයි. එකම password එක භාවිත කිරීම ඉතාමත් අනාරක්ෂිතයි). අනිත් කාරණය මේ වෙන වෙනස් සේවාදායකයින්ගේ සේවා පරිශීලනය කරන්න අපි වෙන වෙනම authenticate කරන්න සිදුවීම.  තවත් දෙයක් තමයි සෑම සේවාදායකයෙකුම එක් එක් පරිශීලකයගේ විස්තර වෙන වෙනම ගබඩා කර තබා ගැනීමට සිදුවීම. මේවා බොහෝවිට එකම දත්ත වෙන් වෙන් තැන්වල තිබෙන ලෙසට තිබුනේ. මේක ඉතාමත් අපහසුකාරී තත්වයක් වුනා.

ඊට පස්සේ ඉතාමත් දක්ෂ අදහසක් මතු වුනා. මේ සියළු වෙනස් සේවා පරිශීලනය කරන්න එකම එක authentication එකක් තිබුනොත් කොහොමද? ඒ කියන්නේ blogger වලට ඇතුලු වෙන්නත් yahoo වලට ඇතුලු වෙන්නත් වෙනත් ප්‍රසිද්ධ නැති සේවාදායකයෙකුගේ සේවයකට ඇතුලු වෙන්නත් එක username/password ද්විත්වයක් තිබුනොත් සහ ඒ සියළු දේට ඇතුලු වෙන්න එක පාරක් විතරක් authenticate කර ගෙන පුලුවන් වුනොත් කොහොමද?

මේ විදියට තමයි single sign-on කියන සංකල්පය අන්තර්ජාලයට ඇතුලු වෙන්නේ. මෙතනදි එක මධ්‍යගත සේවාදායකයෙක් ඉන්නවා. ඔහු තමයි authentication කර්තව්‍යය සිදු කරන්නේ. පහළ තියෙන්නේ මේ සිදුවීම් ජාලාවේ අවුල් ලිහලා ගත්ත version එකක්.

  1. මුලින්ම ඒ මධ්‍යගත සේවාදායකයා (A) ලඟ අපි ලියාපදිංචි වෙන්න ඕනේ. එතකොට එතනින් අපිට URL එකක් දෙනවා අපිව අඳුන ගන්න.
  2. අපිට සේවය අවශ්‍ය කරන සේවාදායකයගේ (B) වෙබ් අඩවියට ගියාට පස්සේ එතනින් අපිට අපේ URL ඇතුල් කරන්න තැනක් ලබා දෙනවා (තාම password එකක් ඇතුලු කලේ නෑ).
  3. දැන් B විසින් අපිව අර මධ්‍යගත සේවාදායකයගේ වෙබ් පිටුවට (A) redirect කරනවා. එවිට අපි එතන username එක සහ password එක ලබා දී authenticate කර ගන්න ඕනේ.
  4. දැන් A විසින් අපෙන් අහනවා B වෙතට අපේ තොරතුරු (credentials) යවන්න ද කියලා. අපිට අවශ්‍යනම් අපි අනුමැතිය ලබා දෙනවා. එතකොට කරුණු දෙකක් වෙනවා.
    1. B වෙතට අපේ තොරතුරු (credentials) යැවෙනවා
    2. අපේ browser එකට token එකක් ලැබෙනවා (cookie එකක් ලෙසට). මෙය තමයි අපි එම cookie/token එකට අදාල කාලය සඳහා A වෙතින් authenticate කර ගත් බවට ලැබෙන සහතිකය
  5. දැන් B වෙතට ලැබෙන විස්තර වලින් B අපිව authenticate කර ගන්නවා. එතැනට අවශ්‍යනම් (A වෙතින් ලැබෙන) අපගේ identifier එකක් ගබඩා කර තබා ගත හැකියි. පරිශීලක ‍දත්ත වෙනුවට B හට A වෙතින් ලැබෙන තොරතුරු (credentials) භාවිතා කල හැකියි.
  6. දැන් අපි තවත් single sign-on enable කර ඇති සේවා දායකයෙකුගේ (C) වෙබ් අඩවියකට පැමිණියහොත් A වෙතට නොගොස් අපට කලින් A වෙතින් ලැබුණු token එක ඉදිරිපත් කල හැකියි. එය expire වී නැතිනම් අපව C විසින් authenticate කර ගන්නවා. එවිට C හටත් එම token එක භාවිතා කර අ‍පගේ විස්තර ලබා ගත හැකියි.
  7. අදාල token එක expire වූ පසු නැවත භාවිතා කිරීමට අවශ්‍යනම් අපි නැවත A වෙත ගොස් authenticate කර ගත යුතුයි.

පැහැදිලි මදි වගේද? අපි උදාහරණයකට යමු OpenID ගැන කතා කලාට පසුව.

මෙම single sign-on ක්‍රමය ක්‍රියාත්මක කරන්න මුලින්ම කර ගැහුවේ Microsoft .net Certificate යනුවෙන්. එය ටික ‍කාලෙකට පස්සේ නොයෙකුත් හේතු උඩ අසාර්ථක වුනා. මම දන්න ආකාරයට Kerberos යනුවෙන් තිබුණු පද්ධතියත් එවැනි කාර්යයක් සිදු කලා. නමුත් එයත් වඩාත් ජනප්‍රිය වුනේ නෑ.

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/ වෙතට යන්න.

OpenID පිළිබඳ වැඩි දුරටත් මීළඟ ලිපියෙන් බලාපොරොත්තු වෙන්න.

Bibliography

  1. http://en.wikipedia.org/wiki/OpenID
  2. http://openid.net/get-an-openid/

7 thoughts on “Single Sign-on සහ OpenID

  1. නොදන්නා ගොඩක් දේවල් ඉගෙන ගත්තා. බොහොම ස්තුතියි!
    හැකිනම් openId භාවිතා කළ හැකි සේවා ගැනත් පොඩි හැඳින්වීමක් ඊළඟ ලිපියෙන් දෙන්න.

  2. OpenID වලත් අවුල් තියෙනව නේද?
    මම OpenID එක විදියට පාවිච්චි කරන්නෙ WordPress, OpenID Plug-in එක. ඒත් ඒක වැඩකරන්නෙ WordPress උඩ විතරයි. අඩුම ගානෙ Blogspot බිලොග් එකකදි වත් අර OpenID එක පාවිච්චි කරන්න බෑ.
    OpenID ගැන ඊලග ලිපියත් ඉක්මනටම දාන්න.. ;)

    • ඒ අවුල OpenID වල නෙවෙයි.

      අවුල WordPress වල OpenID ප්ලගින් එකෙත් නෙවෙයි. Blogger හැර වෙනත් ඕනෑම සේවාවක WordPress OpenID ප්ලගින් එක හරහා ලබාගත් OpenID අනන්‍යතාවය වැඩ කරනවා.

  3. OpenID කියන්නෙ මොකක්ද කියල හරියටම දැනගෙනවත් හිටියෙ නැහැ මම. බොහොම ස්තුතියි දැනුවත් කිරීම ගැන. බොහොම සරළව, පහැදිලිව අපි වගේ මොට්ටයින්ටත් තේරෙන විදිහට ලියල තියනවා. ඉතුරු ටිකත් කියවන්න බලාගෙන ඉන්නවා. ජයෙන් ජය…!

  4. මගෙත් openID එකක් තියේ opnid සයිට් එකෙන් ගත්තු. නමුත් මම භාවිතා කරන්නෙ, මගෙ සිංහල බ්ලොග් එකේ address එක තමා මගෙ openid එක විදිහට.

  5. වැදගත් ලිපියක්.

    හැකි සෑම අවස්ථාවකම තමන්ගේ බ්ලොග් අඩවි වල OpenID භාවිතයෙන් තම අනන්‍යතාවය තහවුරු කිරීමට ප්‍රතිචාරකයන්ට අවස්ථාව ලබාදීමේ වැදගත් කම මීළඟ ලිපියකින් පැහැදිළි කරන්න.

  6. Pingback: OpenID සේවාදායකයින් ගැන කෙටි හැඳින්වීමක් « Tech Buzz