﻿
{"id":11552,"date":"2019-08-10T17:52:31","date_gmt":"2019-08-10T17:52:31","guid":{"rendered":"https:\/\/www.gencayyildiz.com\/blog\/?p=11552"},"modified":"2019-11-30T18:28:30","modified_gmt":"2019-11-30T18:28:30","slug":"asp-net-core-identity-nedir-ve-temel-kavramlar-i","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/asp-net-core-identity-nedir-ve-temel-kavramlar-i\/","title":{"rendered":"Asp.NET Core Identity &#8211; Nedir ve Temel Kavramlar? &#8211; I"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Merhaba,<\/p>\n<p>\u00dcretim, insano\u011flunun f\u0131trat\u0131nda t\u00fcketim, g\u00fc\u00e7 ve y\u00f6netim olamak \u00fczere \u00fc\u00e7 farkl\u0131 duyguyu tetiklemektedir. Bunlardan birisi vard\u0131r ki di\u011ferlerine nazaran daha \u00e7ok \u00f6n plana \u00e7\u0131kmakta ve a\u011f\u0131r basmaktad\u0131r. O da y\u00f6netimdir. \u0130nsano\u011flunun \u00fcretti\u011fini istedi\u011fi zaman kendi iradesince t\u00fcketebilme \u00f6zg\u00fcrl\u00fc\u011f\u00fcne sahip olmas\u0131 dolayl\u0131 yoldan ona g\u00fc\u00e7 kazand\u0131rm\u0131\u015ft\u0131r. Bu g\u00fc\u00e7 artt\u0131k\u00e7a insan kendi kabu\u011funa s\u0131\u011famam\u0131\u015f ve \u00f6nce \u00e7evresine, sonra ya\u015fad\u0131\u011f\u0131 \u00fclkeye ve sonrada t\u00fcm d\u00fcnyaya etkisini g\u00f6stermek istemi\u015f ve bu iste\u011fini tekrar \u00fcrettikleriyle besleyip bir \u015fekilde d\u00f6n\u00fcp dola\u015f\u0131p \u00fcretileni di\u011fer insanlara da eri\u015ftirmeye y\u00f6nelmi\u015f ve bu eri\u015fim neticede y\u00f6netme i\u00e7g\u00fcd\u00fcs\u00fcyle b\u00fct\u00fcnle\u015fmi\u015ftir. \u0130nsan \u00fcretti\u011fini, t\u00fcketmekten \u00e7ok y\u00f6netmek istemi\u015ftir. Ve en nihayetinde on binlerce y\u0131l bu hormonal duygular insan\u0131n f\u0131trat\u0131nda sa\u011flam yer edinmi\u015f ve g\u00fcn\u00fcm\u00fcz d\u00fcnyas\u0131na \u00fcretenler taraf\u0131ndan y\u00f6netilen bir be\u015feriyet olarak yans\u0131m\u0131\u015ft\u0131r.<\/p>\n<p>\u015euana, bu geli\u015fim s\u00fcrecinde y\u00f6netme i\u00e7g\u00fcs\u00fcne fazladan yat\u0131r\u0131m yaparak gelmi\u015f olan insano\u011flu \u00e7a\u011fa uygun olarak \u00fcretti\u011fi her ne ise do\u011fal olarak onuda y\u00f6netmek istemekte ve bu iradenin t\u00fcm \u00fcretilene detaylar\u0131yla n\u00fcfus edebilmesi i\u00e7in yeni yakla\u015f\u0131mlar ve yap\u0131lar geli\u015ftirmektedir. Bulundu\u011fumuz \u00e7a\u011f, yery\u00fcz\u00fcnde \u00e7ok az etkile\u015fimden uzak b\u00f6lge ve lokal k\u00fclt\u00fcr bar\u0131nd\u0131rmakta, b\u00fcy\u00fck k\u0131sm\u0131 globalle\u015fmenin doruk noktas\u0131nda bir d\u00fcnya ile kar\u015f\u0131 kar\u015f\u0131ya bulunmaktad\u0131r. \u0130nsanl\u0131\u011fa tarih s\u00fcresince e\u015flik eden bir\u00e7ok meslek art\u0131k yok olmu\u015f ya da yok olman\u0131n e\u015fi\u011finde iken gelecek \u00e7a\u011flara zemin olu\u015fturacak nice mesleklere gebelik s\u00f6z konusu olmakta yahut baz\u0131lar\u0131n\u0131n eri\u015fkinlik d\u00f6nemi ya\u015fad\u0131\u011f\u0131 bariz ortadad\u0131r. \u015e\u00f6yle bir d\u00fc\u015f\u00fcnsek bu mesleklerden bir\u00e7o\u011fu masaya yat\u0131r\u0131labilir ama bir tanesi vard\u0131r ki tart\u0131\u015fmas\u0131zd\u0131r. O meslekte &#8216;Yaz\u0131l\u0131m Geli\u015ftiricili\u011fi&#8217;dir.<\/p>\n<p>Bug\u00fcn\u00fcn b\u00fcy\u00fck bir k\u0131sm\u0131n\u0131 ve muhtemelen gelece\u011fin komplesini <span style=\"font-size:10px;\">ne yaz\u0131k ki<\/span> makinelere b\u0131rakan insano\u011flu, dolay\u0131s\u0131yla bu makinelerle etkile\u015fim i\u00e7erisinde olan t\u00fcm mesleklere ya\u015fam hakk\u0131 tan\u0131m\u0131\u015f bulunmakta bilakis alakas\u0131 olmayanlar\u0131 ise belki bundan milyonlarca y\u0131l sonraki arkeologlar\u0131n tesad\u00fcfen kar\u015f\u0131la\u015fabilecekleri bulgular\u0131n insaf\u0131na b\u0131rakmaktad\u0131r&#8230; Velhas\u0131l fazla uza\u011fa gidip karanl\u0131k olan gelece\u011fi hak etti\u011fi karamsar pencereyle de\u011ferlendirerek i\u00e7eri\u011fimizi bunalt\u0131c\u0131 hale getirmekten ziyade esas konumuza geri d\u00f6nsek yerinde olacakt\u0131r san\u0131r\u0131m&#8230;<\/p>\n<p>Yukar\u0131da da bahsetmeye \u00e7al\u0131\u015ft\u0131\u011f\u0131m gibi insano\u011flunun f\u0131trat\u0131ndaki y\u00f6netim i\u00e7g\u00fcd\u00fcs\u00fc g\u00fcn\u00fcm\u00fczdeki yaz\u0131l\u0131m uygulamalar\u0131nda da kendisini g\u00f6stermekte ve \u00e7a\u011f\u0131n b\u00fcy\u00fck markalar\u0131 (Google, Microsoft, Facebook vs.) \u00fcrettikleri sistemi, o sistemi kullanacak olan t\u00fcketicilere tam yetki ve iradeyle sa\u011flad\u0131\u011f\u0131 y\u00f6netim \u00fczerinden sunmaktad\u0131rlar. Keza f\u0131trat\u0131n deste\u011fiyle yayg\u0131nla\u015fan bu gelenek taraf\u0131m\u0131zca geli\u015ftirilen uygulamalar \u00fczerinde de devam etmekte ve t\u00fcm yaz\u0131l\u0131mlar geli\u015ftiriciler yahut patronlar taraf\u0131ndan y\u00f6netilmektedirler.<\/p>\n<p>Bu y\u00f6netim ihtiyac\u0131 art\u0131k g\u00fcnl\u00fck hayatta temel ihtiya\u00e7 olarak yer edinmi\u015ftir. Dolay\u0131s\u0131yla biz yaz\u0131l\u0131m geli\u015ftiricilerininde son kullan\u0131c\u0131larla etkile\u015fim i\u00e7erisinde oldu\u011fu web uygulamalar\u0131nda da hat safhada \u00f6nem arz etmektedir. Bu i\u00e7eri\u011fimizin konusu; web uygulamalar\u0131na \u00fcye olacak kullan\u0131c\u0131lar \u00fczerinde kimlik yetkilendirme ve do\u011frulama y\u00f6ntemlerini detaylar\u0131yla uygulamam\u0131z\u0131 sa\u011flayacak olan ve b\u00f6yleyece a&#8217;dan z&#8217;ye y\u00f6netebilmemize imkan sunacak olan Identity framework\u00fcn\u00fcn ne oldu\u011funa dair, temel kavramlar\u0131yla birlikte isti\u015fare \u00fczerine olacakt\u0131r.<\/p>\n<h3>Asp.NET Core Identity Nedir?<\/h3>\n<p>Asp.NET uygulamalar\u0131nda eski \u00fcyelik sistemi Membership yerine geli\u015ftirilen ve \u00fcyelerin eri\u015febilirli\u011fiyle ilgili daha geni\u015f kapsama sahip olmakla birlikte y\u00f6netilebilirlik a\u00e7\u0131s\u0131ndan daha derin ve daha esnek ve t\u00fcm bunlar\u0131n yan\u0131nda s\u0131n\u0131rs\u0131z \u00f6zelle\u015ftirilebilir niteli\u011fe sahip olan bir \u00fcyelik sistemi framework\u00fcd\u00fcr.<\/p>\n<p>Asp.NET Core Identity; \u00fcyelerin, login(giri\u015f), out(\u00e7\u0131k\u0131\u015f), yetkilendirme, token, \u015fifre hat\u0131rlatma vs. t\u00fcm i\u015flemleri h\u0131zl\u0131 bir \u015fekilde ger\u00e7ekle\u015ftirmemizi sa\u011flayan ve bunlar\u0131n d\u0131\u015f\u0131nda \u00f6nceki nesillere nazaran herhangi bir k\u0131s\u0131tlamas\u0131 olmaks\u0131z\u0131n uygulamalar\u0131m\u0131z\u0131 destekleyen \u00e7a\u011fda\u015f bir \u00fcyelik sistemidir. \u00c7a\u011fda\u015ft\u0131r \u00e7\u00fcnk\u00fc g\u00fcnd\u00fcm\u00fczdeki \u00fc\u00e7\u00fcnc\u00fc kaynaklardan sa\u011flanan modern oturum s\u00fcre\u00e7lerini<span style=\"font-size:10px;\">(Facebook Login, Google Login, Twitter Login vs.)<\/span> desteklemekte ve t\u00fcm in\u015fay\u0131 h\u0131zl\u0131 bir \u015fekilde ger\u00e7ekle\u015ftirmektedir. Tabi burada i\u015ftah\u0131 kabaranlara \u015fifa olmas\u0131 niyetiyle, bahsedilen t\u00fcm operasyonlar\u0131n ilerideki makalelerde tek tek derinlemesine ele al\u0131naca\u011f\u0131n\u0131 \u015fimdiden bildirmekte fayda var&#8230;<\/p>\n<p>Asp.NET Core Identity k\u00fct\u00fcphanesini varsa di\u011ferlerinden ay\u0131ran ve lehine puan kazand\u0131ran en b\u00fcy\u00fck \u00f6zelli\u011fi esnek olmas\u0131d\u0131r. Yani sa\u011flad\u0131\u011f\u0131 \u00f6zelliklerden taraf\u0131m\u0131zca be\u011fenilmeyen yahut daha iyisi d\u00fc\u015f\u00fcn\u00fclebilen sistemler custom olarak geli\u015ftirilebilmekte ve \u00e7ok rahat bir \u015fekilde uygulamaya identity \u00fczerinden entegre edilebilmektedirler. \u0130\u015fte bu \u00f6zelli\u011fide b\u00fcy\u00fck fark yaratmakta ve bizleri geli\u015fmenin ileriki noktalar\u0131nda olas\u0131 uyumsuzluk \u015f\u00fcphelerinden kurtarmaktad\u0131r. Keza bu \u00f6zellik, \u00f6nceki Membership \u00fcyelik sisteminden Identity&#8217;i ay\u0131ran en b\u00fcy\u00fck fark\u0131 yaratmaktad\u0131r.<\/p>\n<h3>Temel Kavramlar<\/h3>\n<p>Bizler t\u00fcm i\u00e7eriklerimizde ilgili yap\u0131lar\u0131 kuramsal olarak temellendirmeyi ve kavramsal olarak terminolojiyi destekler nitelikte ilerlemeyi tercih ediyoruz. O y\u00fczden giri\u015f seviyesindeki bu i\u00e7eri\u011fimizde ilk olarak temel kavramlar\u0131n bir k\u0131sm\u0131n\u0131 ele almakta fayda g\u00f6rmekteyim.<\/p>\n<p>Her\u015feyden \u00f6nce \u00fcyelik sistemi<span style=\"font-size:10px;\">(Asp.NET Core Identity)<\/span> deyince \u015fu d\u00f6rt kavram\u0131n izah\u0131n\u0131 yapabilmek gerekmektedir;<\/p>\n<ul>\n<li><strong>Authentication<\/strong><br \/>\nKullan\u0131c\u0131n\u0131n sistem taraf\u0131nda tan\u0131mlanan ki\u015fi olup olmad\u0131\u011f\u0131n\u0131n do\u011frulanmas\u0131d\u0131r. Bir ba\u015fka deyi\u015fle kimlik do\u011frulamas\u0131d\u0131r.\n<\/li>\n<li><strong>Authorization<\/strong><br \/>\nSistemde do\u011frulanan kullan\u0131c\u0131n\u0131n hangi s\u0131n\u0131rlara sahip oldu\u011funun belirlenmesidir. Bunada da kimlik yetkilendirmesi diyebiliriz.\n<\/li>\n<li><strong>Claims<\/strong><br \/>\nDo\u011frulanm\u0131\u015f kullan\u0131c\u0131ya a\u00e7\u0131lm\u0131\u015f oturum \u00fczerinde kullan\u0131c\u0131 kendisine has bilgileri Claims yap\u0131s\u0131 arac\u0131l\u0131\u011f\u0131yla tutabilmektedir. \u00d6rne\u011fin; kullan\u0131c\u0131 ad\u0131 ve \u015fifre ile do\u011frulanm\u0131\u015f kullan\u0131c\u0131n\u0131n k\u00f6pe\u011finin ad\u0131n\u0131 claim ile o oturumda ta\u015f\u0131yabilmekteyiz.\n<\/li>\n<li><strong>Third Party Authentication<\/strong><br \/>\n\u00dc\u00e7\u00fcnc\u00fc taraf kimlik do\u011frulamad\u0131r. Facebook, Google, Twitter vs. gibi do\u011fal ve organik yollarla ki\u015filerin tan\u0131mland\u0131\u011f\u0131 ve insanl\u0131\u011fa mal olmu\u015f hali haz\u0131rda kullan\u0131lan sistemler \u00fczerinden ger\u00e7ekle\u015ftirilen kimlik do\u011frulamas\u0131d\u0131r.<\/p>\n<\/li>\n<\/ul>\n<h3>Bir Web Uygulamas\u0131nda Asp.NET Identity K\u00fct\u00fcphanesinin Kullan\u0131labilmesi \u0130\u00e7in Yap\u0131lmas\u0131 Gerekenler<\/h3>\n<p>Bir Asp.NET Core uygulamas\u0131nda Identity \u00fcyelik sisteminin kullan\u0131labilmesi i\u00e7in <span style=\"color:orange;\">Microsoft.AspNetCore.Identity<\/span> k\u00fct\u00fcphanesinin ilgili projeye entegre edilmi\u015f olmas\u0131 yeterlidir. Bunun i\u00e7in bizlerin ekstradan bir i\u015flem yapmas\u0131na gerek yoktur. \u00c7\u00fcnk\u00fc ilgili k\u00fct\u00fcphane varsay\u0131lan olarak Core projelerinde dahili bir \u015fekilde gelmektedir.<\/p>\n<p>Nihai olarak bu i\u00e7eri\u011fimizde Asp.NET Core Identity k\u00fct\u00fcphanesinin ne oldu\u011funa dair fikir edinmi\u015f ve baz\u0131 genel ge\u00e7er kavramlar \u00fczerinde izahatte bulunmu\u015f olduk. Bir sonraki yaz\u0131m\u0131zda Asp.NET Core uygulamas\u0131nda Identity yap\u0131lanmas\u0131n\u0131n temelden nas\u0131l aya\u011fa kald\u0131r\u0131laca\u011f\u0131na dair detayl\u0131ca konu\u015faca\u011f\u0131z. O halde \u015fimdilik g\u00f6r\u00fc\u015fmek \u00fczere \ud83d\ude42<\/p>\n<p>\u0130lgilenenlerin faydalanmas\u0131 dile\u011fiyle&#8230;<br \/>\n\u0130yi \u00e7al\u0131\u015fmalar&#8230;<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Merhaba, \u00dcretim, insano\u011flunun f\u0131trat\u0131nda t\u00fcketim, g\u00fc\u00e7 ve y\u00f6netim olamak \u00fczere \u00fc\u00e7 farkl\u0131 duyguyu tetiklemektedir. Bunlardan birisi vard\u0131r ki di\u011ferlerine nazaran daha \u00e7ok \u00f6n plana \u00e7\u0131kmakta ve a\u011f\u0131r basmaktad\u0131r. O da y\u00f6netimdir. \u0130nsano\u011flunun \u00fcretti\u011fini istedi\u011fi&#46;&#46;&#46;<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":11583,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2668,2656,2811,2832,2898],"tags":[2953,100,2679,2952,2955,2759,2958,2959,2957,2961,2960,2956],"class_list":["post-11552","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-asp-net-core-2","category-asp-net-core-2-mvc","category-asp-net-core-2-1","category-asp-net-core-2-2","category-asp-net-core-3-0","tag-net-core-identity","tag-identity","tag-asp-net-core","tag-asp-net-core-identity","tag-asp-net-core-uyelik-sistemi","tag-authentication","tag-authorization","tag-claims","tag-membership","tag-microsoft-aspnetcore-identity","tag-third-party-authentication","tag-uyelik-sistemi"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/11552","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/comments?post=11552"}],"version-history":[{"count":33,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/11552\/revisions"}],"predecessor-version":[{"id":11589,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/11552\/revisions\/11589"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media\/11583"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=11552"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=11552"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=11552"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}