Kullanıcı adı ve parola. Web hayatımızın şüphesiz en çok tekrar eden ikilisi. Binlerce site ve kendi kendimize geliştirdiğimiz şifre algoritmaları ve ortak kullanıcı adları. Biraz ustalaşınca gelen "kategorizasyon"; sahte kullanıcı adları, çöp olarak kullanılan e-posta adresleri... Unutulan şifreler, cevaplanamayan gizli sorular... Güvenlik denen mevsim salatası.
Olmazsa olmaz olan kullanıcı kimliklendirme işi ne mutlu ki düğümlenmiş durumda.
Çaba
Şikâyetlerin bizde bile çok erken başladığı bu düğümü çözmek için her kesimden bir girişim geldi zaman içinde. .NET Framework nesli hatırlar ki Passport diye bir Microsoft hizmeti sunulmuştu. Yok şimdilerde. Yerine "Windows Live ID" geldi. Alın size bir tek "Live" hesabı ile tüm "Live" hizmetlere bağlanabilme özgürlüğü!
Evet, Microsoft kendi hizmetlerine tek bir hesapla girmeyi sağladı. Google da yaptı bunu, Google Account diyerek. Yahoo ise senelerdir yapıyor, hakkını yememek lâzım.
Yalnız bu büyük sağlayıcıların bir problemi var: verdikleri kimliklendirme sadece kendi hizmetlerinde işe yarıyor. Dünyanın Yahoo, Google veya Microsoft olmayan kısmına erişmek istediğimizde, yeni kayıt formları ve yeni kimlikler bizi bekliyor.
Çözüm arayan Microsoft, Passport'u dış dünyanın da kullanabileceğini yıllar evvel ilân etmişti. Lâkin tabî olarak kimse buna yanaşmadı. Çünkü insanoğlu kimliğini Microsoft'ta tutmak zorunluluğunu sevmezdi, sevmeyecekti.
Açık Kimlik

Biz yine o siteye "abc", bu siteye "def" diye şifrelerimizi girerken yetenekli adamlardan Brad Fitzpatrick OpenId diye bir şey icat etti. "Open" geldi mi başına bir şeyin, zaten doğrudan cezbedici oluyor bu âlemde bilirsiniz. OpenId de kalabalıkları cezbetti.
OpenId'nin getirdiği radikal değişiklik, aslında adındaki "Open"da saklı. OpenId, genel tanımıyla bir sayısal kimlik hizmeti. Ama kimlik doğrulayan bir otorite değil. Bu cümle çok önemli. İşin sırrı da burada. OpenId, sayısal kimliğin nasıl kullanılacağını belirlemiş ve otorite yolunu açık bırakmış. Sıradan bir vatandaş bile bir OpenId kimlik sağlayıcısı olabilir. Bu bizim her genel / yerel seçimde hissettiğimiz "Seçme Özgürlüğü" anlamına geliyor.
Kullanıcı istediği kimlik sağlayıcıdan kimliğini alıyor. OpenId destekleyen bir web sitesine bu kimliğinin anahtarını (URL'ini) yazıyor ve de doğrulanmak için kendi sağlayıcısına yönlendiriliyor. Doğrulama yapılıp asıl siteye geri dönülüyor. Şayet asıl site isterse kullanıcıya fazladan sualler sorabilir, kendi problemi.
Bu anlattıklarımızı şu şemada daha açık görebilirsiniz: (kaynak)

Anlaşıldı; bir takım kısaltmaları açıklamak gerekecek. RP, "Relying Party" bizden üye girişi isteyen OpenId ve destekleyen taraf. IP, "Identity Provider" ise herhangi bir kimlik sağlayıcı. Beraber adımlayalım. RP'yi burada www.evcil.net olarak farzettik.
- www.evcil.net'in "login" sayfasındasınız. Form'a OpenId URL'inizi yazıyorsunuz.
- www.evcil.net, bu URL'in hangi sağlayıcıda doğrulanacağını belirleyip tarayıcınıza "şuraya git" diyor.
- Tarayıcınız oraya gidiyor. Orada bir login formu daha varmış. Bildiğiniz bir yer burası.
- Şifreyi giriyorsunuz ve beni doğrula diyorsunuz. Eğer her şey yolunda giderse burası, sizin geldiğiniz yeri bildiği için akıllıca bir soru soruyor: "geldiğin yere yani www.evcil.net'e göndereyim mi?". "Evet" deyin madem.
- Sağlayıcı, oluşturduğu jetonu sizin tarayıcınıza gönderiyor. Bu jetonla Evcil.NET'e git, sana kapılar açılır diyor.
- Sizin tarayıcı www.evcil.net'e jetonuyla dönüyor ve kapalı kapılar ardındaki yerlere sizi ulaştırıyor.
Aslında şu an bizim OpenId ile yaptırdığımız bir iş yok ama ileride neden olmasın?
Gerçekleştirim
OpenId spesifikasyonu gerçekten karışık. Okuyup kendi kendinize uygulamanıza adapte etmeniz fazlaca vakit alabilir. Bunun yerine, her türlü geliştirme platformuna yönelik yazılmış hazır kütüphaneleri denemeniz daha akıllıca. .NET için de birçok kütüphane ortaya çıkmış.
http://code.google.com/p/dotnetopenid/ adresinde konuşlanmış gayet basit bir adla yayımlanan "dotnetopenid", OpenId 2.0'ı da destekleyen lokum gibi bir kütüphane. İçerisinde ASP.NET ile kullanım örnekleri mevcut. ASP.NET MVC üzerinde bile örneklemiş adamlar.
http://extremeswank.com/aspnet_openid.html adresinde de bir başka gerçekleştirim gözüküyor. Yalnız bu bir öncekinden eksik olarak "sağlayıcı" olmayı desteklemiyor. Sadece "tüketici" takılıyor.
Diğer platformlara ait kütüphaneleri ihtiva eden tam liste, burada.
Güvenilir OpenId Sağlayıcıları
Hemen şimdi gidin ve bir OpenId sahibi olun. Günün birinde mutlaka lâzım olacak. Akbil'ler bile OpenId destekleyebilir, olmaz demeyin. Şu listeden birine gidip, sağlam bir OpenId alabilirsiniz. Aldığınız yerin itibarlı bir yer olduğundan ve bir gün TMSF'ye devrolmayacağından emin olun.
İlerisi
Umut vadeden bir gelişme: Microsoft, yeni isimlendirdiği sayısal kimlik sistemi CardSpace'te OpenId desteği sunacağını açıkladı. IBM, Sun, Google ve Yahoo da OpenId'ye sonsuz hürmetleriyle anılıyorlar.
Yalnız yine de kurumsal tarafta biraz çekince var. Çünkü OpenId'nin güvenlik zayıflıkları gülün dikeni misâli göze batıyor. Kötü niyetli oluşumların hem RP tarafını hem de sağlayıcı tarafını gerçekleyip zavallı kullanıcıların şifrelerini ele geçirmesi pek mümkün. Microsoft, bu probleme çözümün CardSpace ile sağlanacağını söylüyor.
Biz ne yapalım? Son-kullanıcı olarak, dikkatli ve şuurlu bir biçimde kullanabildiğimiz kadar OpenId kullanalım. Yazılım geliştirici olarak, yaptığımız işlerde OpenId'yi nasıl kullanabiliriz, ölçelim, tartalım. Teknoloji takipçisi olarak ise OpenId nereye koşuyor, nereden su içiyor, sağdan soldan takip edelim. Ve vatandaşlık numaramız da OpenId olsun diye bakanlığa baskı yapalım.
Güvenli ve güneşli günler sizlerle olsun.
OpenId ile.