{"id":41656,"date":"2026-05-08T21:01:58","date_gmt":"2026-05-08T18:01:58","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/oauth-ile-guvenli-giris-modern-uygulamalarin-anahtari\/"},"modified":"2026-05-08T21:01:58","modified_gmt":"2026-05-08T18:01:58","slug":"oauth-ile-guvenli-giris-modern-uygulamalarin-anahtari","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/oauth-ile-guvenli-giris-modern-uygulamalarin-anahtari\/","title":{"rendered":"OAuth ile G\u00fcvenli Giri\u015f: Modern Uygulamalar\u0131n Anahtar\u0131"},"content":{"rendered":"<p><body><\/p>\n<h2>OAuth ile G\u00fcvenli Giri\u015f: Modern Uygulamalar\u0131n Anahtar\u0131<\/h2>\n<p>\n        G\u00fcn\u00fcm\u00fcz dijital d\u00fcnyas\u0131nda, kullan\u0131c\u0131lar\u0131n uygulamalar\u0131n\u0131za kolay ve g\u00fcvenli bir \u015fekilde eri\u015fmesini sa\u011flamak b\u00fcy\u00fck \u00f6nem ta\u015f\u0131yor. Peki, kullan\u0131c\u0131lar\u0131n her uygulama i\u00e7in ayr\u0131 ayr\u0131 kullan\u0131c\u0131 ad\u0131 ve \u015fifre hat\u0131rlamak zorunda kalmadan, tek bir platform \u00fczerinden giri\u015f yapabilmesini nas\u0131l sa\u011flar\u0131z? \u0130\u015fte burada OAuth devreye giriyor. Bu makalede, OAuth&#8217;un ne oldu\u011funu, nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 ve uygulamalar\u0131n\u0131za nas\u0131l entegre edebilece\u011finizi ad\u0131m ad\u0131m ke\u015ffedece\u011fiz. \u00d6zellikle geli\u015ftiricilerin s\u0131k\u00e7a kar\u015f\u0131la\u015ft\u0131\u011f\u0131 &#8220;Lime #1&#8221; gibi senaryolarda OAuth&#8217;un sundu\u011fu avantajlar\u0131 ele alaca\u011f\u0131z.\n    <\/p>\n<h3>OAuth Nedir ve Neden Kullanmal\u0131s\u0131n\u0131z?<\/h3>\n<p>\n        OAuth, k\u0131saca &#8220;Yetkilendirme Protokol\u00fc&#8221; (Authorization Protocol) anlam\u0131na gelir. Temel amac\u0131, bir kullan\u0131c\u0131n\u0131n kimli\u011fini do\u011frulamak yerine, bir uygulaman\u0131n ba\u015fka bir uygulaman\u0131n kaynaklar\u0131na (verilerine) yetkisiz eri\u015fim sa\u011flamadan, s\u0131n\u0131rl\u0131 bir \u015fekilde eri\u015fmesine izin vermektir. Bu, kullan\u0131c\u0131lar\u0131n hassas bilgilerini do\u011frudan payla\u015fmadan, g\u00fcvenli bir k\u00f6pr\u00fc kurulmas\u0131n\u0131 sa\u011flar. \u00d6rne\u011fin, bir foto\u011fraf d\u00fczenleme uygulamas\u0131n\u0131n sizin Google Drive&#8217;\u0131n\u0131zdaki foto\u011fraflara eri\u015fmesine izin vermek istedi\u011finizde, do\u011frudan Google \u015fifrenizi payla\u015fmak yerine, OAuth arac\u0131l\u0131\u011f\u0131yla sadece belirli foto\u011fraflara eri\u015fim izni verirsiniz. Bu protokol, \u00f6zellikle &#8220;Sosyal Giri\u015f&#8221; (Social Login) olarak da bilinen, kullan\u0131c\u0131lar\u0131n Google, Facebook, Twitter gibi pop\u00fcler platformlar \u00fczerinden uygulamalar\u0131n\u0131za giri\u015f yapabilmelerini sa\u011flayan mekanizman\u0131n temelini olu\u015fturur. Kullan\u0131c\u0131 deneyimi a\u00e7\u0131s\u0131ndan bak\u0131ld\u0131\u011f\u0131nda, bu, kay\u0131t ve giri\u015f s\u00fcre\u00e7lerini inan\u0131lmaz derecede basitle\u015ftirir, kullan\u0131c\u0131lar\u0131n yeni bir hesap olu\u015fturma zahmetinden kurtar\u0131r ve dolay\u0131s\u0131yla uygulama terk oranlar\u0131n\u0131 d\u00fc\u015f\u00fcrmeye yard\u0131mc\u0131 olur. Geli\u015ftiriciler i\u00e7in ise, kendi kimlik do\u011frulama sistemlerini s\u0131f\u0131rdan in\u015fa etmek yerine, g\u00fcvenilir \u00fc\u00e7\u00fcnc\u00fc parti sa\u011flay\u0131c\u0131lar\u0131n altyap\u0131s\u0131ndan faydalanma imkan\u0131 sunar. Bu da geli\u015ftirme s\u00fcresini ve maliyetini \u00f6nemli \u00f6l\u00e7\u00fcde azalt\u0131r. Ayr\u0131ca, OAuth&#8217;un sundu\u011fu yetkilendirme mekanizmas\u0131, hassas kullan\u0131c\u0131 verilerinin korunmas\u0131nda da kritik bir rol oynar. Kullan\u0131c\u0131lara hangi verilere kimin eri\u015febilece\u011fi konusunda tam kontrol imkan\u0131 tan\u0131r.\n    <\/p>\n<h3>OAuth 2.0 Ak\u0131\u015flar\u0131: Temel Mekanizmalar<\/h3>\n<p>\n        OAuth 2.0, farkl\u0131 kullan\u0131m senaryolar\u0131na uygun \u00e7e\u015fitli ak\u0131\u015flar (flows) sunar. En yayg\u0131n olanlardan baz\u0131lar\u0131 \u015funlard\u0131r: Yetkilendirme Kodu Ak\u0131\u015f\u0131 (Authorization Code Flow), Dolayl\u0131 Ak\u0131\u015f (Implicit Flow), \u0130stemci Kimlik Bilgileri Ak\u0131\u015f\u0131 (Client Credentials Flow) ve Kaynak Sahibi Parola Kimlik Bilgileri Ak\u0131\u015f\u0131 (Resource Owner Password Credentials Flow). Her bir ak\u0131\u015f, uygulaman\u0131n t\u00fcr\u00fcne (web uygulamas\u0131, mobil uygulama, masa\u00fcst\u00fc uygulamas\u0131 vb.) ve g\u00fcvenlik gereksinimlerine g\u00f6re farkl\u0131l\u0131k g\u00f6sterir.<br \/>\n        <br \/>\n        <strong>Yetkilendirme Kodu Ak\u0131\u015f\u0131 (Authorization Code Flow):<\/strong> Bu ak\u0131\u015f, web uygulamalar\u0131 i\u00e7in en g\u00fcvenli ve yayg\u0131n olarak kullan\u0131lan y\u00f6ntemdir. Kullan\u0131c\u0131, bir uygulamaya giri\u015f yapmak istedi\u011finde, uygulama kullan\u0131c\u0131y\u0131 yetkilendirme sunucusuna (\u00f6rne\u011fin Google&#8217;\u0131n giri\u015f sayfas\u0131) y\u00f6nlendirir. Kullan\u0131c\u0131, kimli\u011fini do\u011frulad\u0131ktan ve uygulamaya izin verdikten sonra, yetkilendirme sunucusu kullan\u0131c\u0131y\u0131 bir &#8220;yetkilendirme kodu&#8221; ile uygulamaya geri y\u00f6nlendirir. Uygulama, bu kodu kullanarak bir &#8220;eri\u015fim belirteci&#8221; (access token) ve iste\u011fe ba\u011fl\u0131 olarak bir &#8220;yenileme belirteci&#8221; (refresh token) al\u0131r. Eri\u015fim belirteci, kullan\u0131c\u0131n\u0131n verilerine eri\u015fmek i\u00e7in kullan\u0131l\u0131r. Bu ak\u0131\u015f\u0131n en \u00f6nemli avantaj\u0131, hassas kimlik bilgilerinin (kullan\u0131c\u0131 ad\u0131, \u015fifre) do\u011frudan istemci uygulamas\u0131na asla g\u00f6nderilmemesidir.<br \/>\n        <br \/>\n        <strong>Dolayl\u0131 Ak\u0131\u015f (Implicit Flow):<\/strong> Genellikle taray\u0131c\u0131 tabanl\u0131 uygulamalar (Single Page Applications &#8211; SPA) ve mobil uygulamalar i\u00e7in kullan\u0131l\u0131r. Bu ak\u0131\u015fta, yetkilendirme kodu kullan\u0131lmaz; bunun yerine, kullan\u0131c\u0131 kimlik do\u011frulamas\u0131 ve yetkilendirme sonras\u0131nda eri\u015fim belirteci do\u011frudan taray\u0131c\u0131ya veya mobil uygulamaya y\u00f6nlendirilir. Bu ak\u0131\u015f, Yetkilendirme Kodu Ak\u0131\u015f\u0131 kadar g\u00fcvenli olmasa da, baz\u0131 istemci t\u00fcrleri i\u00e7in daha basit bir entegrasyon sunabilir. Ancak, eri\u015fim belirtecinin do\u011frudan istemciye iletilmesi nedeniyle g\u00fcvenlik riskleri ta\u015f\u0131r.<br \/>\n        <br \/>\n        <strong>\u0130stemci Kimlik Bilgileri Ak\u0131\u015f\u0131 (Client Credentials Flow):<\/strong> Bu ak\u0131\u015f, kullan\u0131c\u0131n\u0131n do\u011frudan dahil olmad\u0131\u011f\u0131, bir uygulaman\u0131n kendi kimlik bilgileriyle ba\u015fka bir uygulaman\u0131n kaynaklar\u0131na eri\u015fmesi gerekti\u011fi durumlarda kullan\u0131l\u0131r. \u00d6rne\u011fin, bir arka u\u00e7 servisinin ba\u015fka bir servisten veri \u00e7ekmesi gibi. Bu ak\u0131\u015fta, istemci uygulama, kendi istemci kimli\u011fi ve gizli anahtar\u0131 (client secret) ile do\u011frudan bir eri\u015fim belirteci talep eder. Kullan\u0131c\u0131 etkile\u015fimi s\u00f6z konusu de\u011fildir.<br \/>\n        <br \/>\n        <strong>Kaynak Sahibi Parola Kimlik Bilgileri Ak\u0131\u015f\u0131 (Resource Owner Password Credentials Flow):<\/strong> Bu ak\u0131\u015f, kullan\u0131c\u0131n\u0131n do\u011frudan kendi kullan\u0131c\u0131 ad\u0131 ve \u015fifresini istemci uygulamas\u0131na girdi\u011fi ve istemci uygulamas\u0131n\u0131n bu bilgileri kullanarak bir eri\u015fim belirteci ald\u0131\u011f\u0131 bir senaryodur. Bu ak\u0131\u015f, yaln\u0131zca g\u00fcvenilir uygulamalar i\u00e7in ve ba\u015fka bir ak\u0131\u015f\u0131n m\u00fcmk\u00fcn olmad\u0131\u011f\u0131 durumlarda kullan\u0131lmal\u0131d\u0131r, \u00e7\u00fcnk\u00fc hassas kullan\u0131c\u0131 kimlik bilgileri istemci uygulamas\u0131na do\u011frudan iletilir. Bu nedenle, genellikle ka\u00e7\u0131n\u0131lmas\u0131 gereken bir ak\u0131\u015ft\u0131r.<br \/>\n        <br \/>\n        Bu ak\u0131\u015flar\u0131n her biri, uygulaman\u0131z\u0131n yap\u0131s\u0131na ve g\u00fcvenlik gereksinimlerinize en uygun olan\u0131 se\u00e7menize olanak tan\u0131r. &#8220;Lime #1&#8221; gibi bir senaryoda, e\u011fer bir web uygulamas\u0131 geli\u015ftiriyorsan\u0131z, Yetkilendirme Kodu Ak\u0131\u015f\u0131 genellikle en iyi se\u00e7enektir.\n    <\/p>\n<h3>Uygulamaya OAuth Entegrasyonu: Ad\u0131m Ad\u0131m Rehber<\/h3>\n<p>\n        Bir uygulamaya OAuth entegre etmek, birka\u00e7 temel ad\u0131mdan olu\u015fur. Bu ad\u0131mlar, se\u00e7ti\u011finiz OAuth sa\u011flay\u0131c\u0131s\u0131na (\u00f6rne\u011fin Google, GitHub) ve uygulaman\u0131z\u0131n t\u00fcr\u00fcne g\u00f6re k\u00fc\u00e7\u00fck farkl\u0131l\u0131klar g\u00f6sterebilir. Genel \u00e7er\u00e7eve genellikle ayn\u0131d\u0131r. \u0130lk ad\u0131m, OAuth sa\u011flay\u0131c\u0131n\u0131zda bir &#8220;uygulama kayd\u0131&#8221; yapmakt\u0131r. Bu, sa\u011flay\u0131c\u0131n\u0131n size bir &#8220;istemci kimli\u011fi&#8221; (client ID) ve bir &#8220;istemci gizli anahtar\u0131&#8221; (client secret) vermesini sa\u011flar. Bu kimlik bilgileri, uygulaman\u0131z\u0131n sa\u011flay\u0131c\u0131yla ileti\u015fim kurmas\u0131n\u0131 sa\u011flar.<br \/>\n        <br \/>\n        Ard\u0131ndan, uygulaman\u0131z\u0131n kullan\u0131c\u0131y\u0131 sa\u011flay\u0131c\u0131n\u0131n yetkilendirme sunucusuna y\u00f6nlendirmesi gerekir. Bu y\u00f6nlendirme s\u0131ras\u0131nda, uygulaman\u0131z\u0131n kimli\u011fi (client ID), istenen izinler (scopes) ve bir y\u00f6nlendirme URL&#8217;si (redirect URI) gibi bilgiler parametre olarak g\u00f6nderilir. Y\u00f6nlendirme URL&#8217;si, kullan\u0131c\u0131n\u0131n kimli\u011fi do\u011fruland\u0131ktan ve yetkilendirme tamamland\u0131ktan sonra sa\u011flay\u0131c\u0131n\u0131n kullan\u0131c\u0131y\u0131 geri g\u00f6nderece\u011fi adrestir.<br \/>\n        <br \/>\n        Kullan\u0131c\u0131, sa\u011flay\u0131c\u0131n\u0131n web sitesinde kimli\u011fini do\u011frulay\u0131p uygulaman\u0131za izin verdikten sonra, sa\u011flay\u0131c\u0131 kullan\u0131c\u0131y\u0131 sizin belirtti\u011finiz y\u00f6nlendirme URL&#8217;sine geri g\u00f6nderir. Bu geri y\u00f6nlendirme s\u0131ras\u0131nda, bir &#8220;yetkilendirme kodu&#8221; (authorization code) veya do\u011frudan bir &#8220;eri\u015fim belirteci&#8221; (access token) parametre olarak iletilir (se\u00e7ti\u011finiz ak\u0131\u015fa ba\u011fl\u0131 olarak).<br \/>\n        <br \/>\n        E\u011fer bir yetkilendirme kodu ald\u0131ysan\u0131z, uygulaman\u0131z bu kodu kullanarak sa\u011flay\u0131c\u0131n\u0131n token u\u00e7 noktas\u0131na (token endpoint) bir POST iste\u011fi g\u00f6ndererek bir eri\u015fim belirteci talep eder. Bu istekte, istemci kimli\u011fi, istemci gizli anahtar\u0131 ve yetkilendirme kodu bulunur. Ba\u015far\u0131l\u0131 bir istek sonucunda, sa\u011flay\u0131c\u0131 uygulaman\u0131za bir eri\u015fim belirteci ve iste\u011fe ba\u011fl\u0131 olarak bir yenileme belirteci (refresh token) d\u00f6nd\u00fcr\u00fcr.<br \/>\n        <br \/>\n        Eri\u015fim belirteci al\u0131nd\u0131ktan sonra, uygulaman\u0131z bu belirteci kullanarak sa\u011flay\u0131c\u0131n\u0131n API&#8217;lerinden kullan\u0131c\u0131 verilerine eri\u015febilir. Bu eri\u015fim belirteci genellikle HTTP iste\u011finin <code>Authorization<\/code> ba\u015fl\u0131\u011f\u0131nda <code>Bearer <access_token><\/code> format\u0131nda g\u00f6nderilir.<br \/>\n        <br \/>\n        Yenileme belirteci ise, eri\u015fim belirtecinin s\u00fcresi doldu\u011funda yeni bir eri\u015fim belirteci almak i\u00e7in kullan\u0131l\u0131r. Bu, kullan\u0131c\u0131lar\u0131n her seferinde tekrar giri\u015f yapma zorunlulu\u011funu ortadan kald\u0131r\u0131r.<br \/>\n        <br \/>\n        A\u015fa\u011f\u0131da, basit bir JavaScript \u00f6rne\u011fi ile bu s\u00fcrecin bir par\u00e7as\u0131 olan, kullan\u0131c\u0131y\u0131 Google&#8217;\u0131n yetkilendirme sayfas\u0131na y\u00f6nlendirme k\u0131sm\u0131 g\u00f6sterilmi\u015ftir:<\/p>\n<div class=\"code-container\">\n<pre><code>const clientId = 'YOUR_CLIENT_ID';\nconst redirectUri = 'YOUR_REDIRECT_URI';\nconst scopes = 'profile email'; \/\/ \u0130stenen izinler\n\nconst authUrl = <code>https:\/\/accounts.google.com\/o\/oauth2\/v2\/auth?\n  client_id=${clientId}&\n  redirect_uri=${redirectUri}&\n  response_type=code&\n  scope=${scopes}<\/code>;\n\n\/\/ Kullan\u0131c\u0131y\u0131 y\u00f6nlendir\nwindow.location.href = authUrl;<\/code><\/pre>\n<\/p><\/div>\n<p>        Bu \u00f6rnek, sadece yetkilendirme iste\u011finin nas\u0131l olu\u015fturulaca\u011f\u0131n\u0131 g\u00f6stermektedir. Ger\u00e7ek bir entegrasyonda, geri d\u00f6nen kodu i\u015fleme, token u\u00e7 noktas\u0131na istek g\u00f6nderme ve al\u0131nan belirte\u00e7leri saklama gibi ad\u0131mlar da yer alacakt\u0131r.\n    <\/p>\n<h3>&#8220;Lime #1&#8221; Senaryosu: Ger\u00e7ek D\u00fcnya Uygulamas\u0131<\/h3>\n<p>\n        &#8220;Lime #1&#8221; gibi bir projede, uygulaman\u0131n kullan\u0131c\u0131lar\u0131, kendi mevcut Google hesaplar\u0131n\u0131 kullanarak h\u0131zl\u0131 ve g\u00fcvenli bir \u015fekilde giri\u015f yapabilmelidir. Bu, kullan\u0131c\u0131lar\u0131n yeni bir hesap olu\u015fturma ve \u015fifre y\u00f6netme y\u00fck\u00fcnden kurtulmalar\u0131n\u0131 sa\u011flar. Uygulama geli\u015ftiricileri a\u00e7\u0131s\u0131ndan bak\u0131ld\u0131\u011f\u0131nda ise, kendi kimlik do\u011frulama altyap\u0131s\u0131n\u0131 kurmak yerine, Google&#8217;\u0131n g\u00fcvenilir altyap\u0131s\u0131ndan faydalan\u0131l\u0131r. Bu senaryoda, &#8220;Lime #1&#8221; uygulamas\u0131n\u0131n bir web uygulamas\u0131 oldu\u011funu varsayal\u0131m. Bu durumda, yukar\u0131da bahsedilen Yetkilendirme Kodu Ak\u0131\u015f\u0131 en uygun y\u00f6ntem olacakt\u0131r.<br \/>\n        <br \/>\n        <strong>Ad\u0131m 1: Google Cloud Console&#8217;da Uygulama Kayd\u0131:<\/strong> Geli\u015ftiriciler, Google Cloud Console&#8217;a giderek yeni bir proje olu\u015fturur veya mevcut bir projeyi se\u00e7er. Ard\u0131ndan, &#8220;OAuth istemci kimlik bilgileri&#8221;ni olu\u015ftururlar. Bu i\u015flem s\u0131ras\u0131nda, uygulaman\u0131n ad\u0131, logosu ve en \u00f6nemlisi &#8220;yetkilendirilmi\u015f y\u00f6nlendirme URI&#8217;leri&#8221; (authorized redirect URIs) belirtilir. Bu URI&#8217;ler, Google&#8217;\u0131n kullan\u0131c\u0131y\u0131 ba\u015far\u0131l\u0131 bir yetkilendirme sonras\u0131 geri g\u00f6nderece\u011fi web sitesi adresleridir. Bu ad\u0131m sonucunda bir &#8220;\u0130stemci Kimli\u011fi&#8221; (Client ID) ve bir &#8220;\u0130stemci Gizli Anahtar\u0131&#8221; (Client Secret) elde edilir. \u0130stemci Gizli Anahtar\u0131, sunucu taraf\u0131nda g\u00fcvenli bir \u015fekilde saklanmal\u0131d\u0131r ve asla istemci taraf\u0131nda (taray\u0131c\u0131da) a\u00e7\u0131\u011fa \u00e7\u0131kar\u0131lmamal\u0131d\u0131r.<br \/>\n        <br \/>\n        <strong>Ad\u0131m 2: Kullan\u0131c\u0131y\u0131 Yetkilendirme Sunucusuna Y\u00f6nlendirme:<\/strong> Kullan\u0131c\u0131, &#8220;Lime #1&#8221; web uygulamas\u0131ndaki &#8220;Google ile Giri\u015f Yap&#8221; butonuna t\u0131klad\u0131\u011f\u0131nda, uygulaman\u0131n arka ucu veya \u00f6n ucu, kullan\u0131c\u0131y\u0131 Google&#8217;\u0131n yetkilendirme sunucusuna y\u00f6nlendiren bir URL olu\u015fturur. Bu URL, istemci kimli\u011fi, istenen izinler (\u00f6rne\u011fin, temel profil bilgileri, e-posta adresi) ve daha \u00f6nce kaydedilmi\u015f y\u00f6nlendirme URI&#8217;sini i\u00e7erir.<\/p>\n<div class=\"code-container\">\n<pre><code>\/\/ \u00d6rnek Node.js Express arka u\u00e7 kodu\napp.get('\/auth\/google', (req, res) => {\n  const googleAuthUrl = <code>https:\/\/accounts.google.com\/o\/oauth2\/v2\/auth?\n    client_id=${process.env.GOOGLE_CLIENT_ID}&\n    redirect_uri=${process.env.GOOGLE_REDIRECT_URI}&\n    response_type=code&\n    scope=openid email profile<\/code>;\n  res.redirect(googleAuthUrl);\n});<\/code><\/pre>\n<\/p><\/div>\n<p>        <strong>Ad\u0131m 3: Kullan\u0131c\u0131n\u0131n \u0130zni ve Yetkilendirme Kodu Al\u0131nmas\u0131:<\/strong> Kullan\u0131c\u0131, Google&#8217;\u0131n giri\u015f sayfas\u0131na y\u00f6nlendirilir. Burada kendi Google hesab\u0131yla oturum a\u00e7ar ve &#8220;Lime #1&#8221; uygulamas\u0131n\u0131n istedi\u011fi izinleri (\u00f6rne\u011fin, profil bilgilerine eri\u015fim) g\u00f6zden ge\u00e7irir. \u0130zinleri onaylad\u0131\u011f\u0131nda, Google, kullan\u0131c\u0131y\u0131 &#8220;Lime #1&#8221; uygulamas\u0131n\u0131n belirtti\u011fi y\u00f6nlendirme URI&#8217;sine geri g\u00f6nderir ve URL&#8217;ye bir &#8220;yetkilendirme kodu&#8221; ekler.<br \/>\n        <br \/>\n        <strong>Ad\u0131m 4: Eri\u015fim Belirteci Al\u0131nmas\u0131 (Sunucu Tarafl\u0131):<\/strong> &#8220;Lime #1&#8221; uygulamas\u0131n\u0131n arka ucu, bu y\u00f6nlendirme iste\u011fini al\u0131r ve URL&#8217;den yetkilendirme kodunu \u00e7\u0131kar\u0131r. Ard\u0131ndan, bu kodu kullanarak Google&#8217;\u0131n token u\u00e7 noktas\u0131na (token endpoint) bir POST iste\u011fi g\u00f6nderir. Bu istek, istemci kimli\u011fi, istemci gizli anahtar\u0131 ve yetkilendirme kodunu i\u00e7erir.<\/p>\n<div class=\"code-container\">\n<pre><code>\/\/ \u00d6rnek Node.js Express arka u\u00e7 kodu\napp.get('\/auth\/google\/callback', async (req, res) => {\n  const code = req.query.code;\n  try {\n    const tokenResponse = await axios.post('https:\/\/oauth2.googleapis.com\/token', {\n      code: code,\n      client_id: process.env.GOOGLE_CLIENT_ID,\n      client_secret: process.env.GOOGLE_CLIENT_SECRET,\n      redirect_uri: process.env.GOOGLE_REDIRECT_URI,\n      grant_type: 'authorization_code'\n    });\n\n    const accessToken = tokenResponse.data.access_token;\n    \/\/ Bu access token ile kullan\u0131c\u0131 bilgilerini alabilirsiniz\n    \/\/ ...\n    res.redirect('\/dashboard'); \/\/ Kullan\u0131c\u0131y\u0131 ilgili sayfaya y\u00f6nlendir\n  } catch (error) {\n    console.error('Token alma hatas\u0131:', error);\n    res.status(500).send('Giri\u015f s\u0131ras\u0131nda bir hata olu\u015ftu.');\n  }\n});<\/code><\/pre>\n<\/p><\/div>\n<p>        <strong>Ad\u0131m 5: Kullan\u0131c\u0131 Bilgilerinin Al\u0131nmas\u0131 ve Oturum A\u00e7ma:<\/strong> Google&#8217;dan eri\u015fim belirtecini ald\u0131ktan sonra, &#8220;Lime #1&#8221; uygulamas\u0131 bu belirteci kullanarak Google&#8217;\u0131n kullan\u0131c\u0131 bilgileri API&#8217;sini \u00e7a\u011f\u0131r\u0131r. Bu API&#8217;den al\u0131nan temel profil bilgileri (isim, e-posta, profil resmi vb.) kullan\u0131larak &#8220;Lime #1&#8221; uygulamas\u0131nda bir kullan\u0131c\u0131 oturumu ba\u015flat\u0131l\u0131r. E\u011fer kullan\u0131c\u0131 daha \u00f6nce &#8220;Lime #1&#8221; uygulamas\u0131nda mevcut de\u011filse, bu bilgilerle yeni bir hesap olu\u015fturulabilir. Mevcut bir hesap varsa, bu bilgilerle oturum a\u00e7\u0131l\u0131r.<br \/>\n        <br \/>\n        Bu s\u00fcre\u00e7, kullan\u0131c\u0131 i\u00e7in sorunsuz bir deneyim sunarken, geli\u015ftiriciler i\u00e7in de g\u00fcvenli ve \u00f6l\u00e7eklenebilir bir kimlik do\u011frulama \u00e7\u00f6z\u00fcm\u00fc sa\u011flar. &#8220;Lime #1&#8221; gibi bir platformda, bu entegrasyon, kullan\u0131c\u0131 kat\u0131l\u0131m\u0131n\u0131 art\u0131rman\u0131n ve geli\u015ftirme y\u00fck\u00fcn\u00fc azaltman\u0131n en etkili yollar\u0131ndan biridir.\n    <\/p>\n<h3>G\u00fcvenlik \u0130pu\u00e7lar\u0131 ve En \u0130yi Uygulamalar<\/h3>\n<p>\n        OAuth entegrasyonunda g\u00fcvenli\u011fi sa\u011flamak, kullan\u0131c\u0131 verilerini korumak ve uygulaman\u0131z\u0131 potansiyel tehditlere kar\u015f\u0131 g\u00fcvence alt\u0131na almak i\u00e7in kritik \u00f6neme sahiptir. \u0130lk olarak, istemci gizli anahtar\u0131n\u0131z\u0131 (client secret) asla istemci taraf\u0131nda (taray\u0131c\u0131da veya mobil uygulaman\u0131n \u00f6n y\u00fcz\u00fcnde) saklamay\u0131n veya a\u00e7\u0131\u011fa \u00e7\u0131karmay\u0131n. Bu anahtar, sunucu taraf\u0131nda g\u00fcvenli bir \u015fekilde y\u00f6netilmeli ve ortam de\u011fi\u015fkenleri (environment variables) gibi y\u00f6ntemlerle saklanmal\u0131d\u0131r.<br \/>\n        <br \/>\n        Y\u00f6nlendirme URI&#8217;lerini (redirect URIs) dikkatli bir \u015fekilde yap\u0131land\u0131r\u0131n. OAuth sa\u011flay\u0131c\u0131n\u0131zda yaln\u0131zca uygulaman\u0131z\u0131n ger\u00e7ekten kulland\u0131\u011f\u0131 ve g\u00fcvendi\u011fi URI&#8217;leri kaydedin. Bu, yetkilendirme kodlar\u0131n\u0131n veya eri\u015fim belirte\u00e7lerinin k\u00f6t\u00fc niyetli \u00fc\u00e7\u00fcnc\u00fc taraf sitelerine y\u00f6nlendirilmesini \u00f6nler. Dinamik olarak olu\u015fturulan y\u00f6nlendirme URI&#8217;leri kullanmaktan ka\u00e7\u0131n\u0131n veya bunlar\u0131 s\u0131k\u0131 bir \u015fekilde do\u011frulay\u0131n.<br \/>\n        <br \/>\n        Eri\u015fim belirte\u00e7lerinin (access tokens) s\u00fcresini k\u0131sa tutun. Bu, bir belirtecin ele ge\u00e7irilmesi durumunda potansiyel zarar s\u00fcresini s\u0131n\u0131rlar. K\u0131sa s\u00fcreli eri\u015fim belirte\u00e7leriyle birlikte, yenileme belirte\u00e7lerini (refresh tokens) kullanarak kullan\u0131c\u0131lar\u0131n oturumlar\u0131n\u0131 uzun s\u00fcre a\u00e7\u0131k tutabilirsiniz. Yenileme belirte\u00e7leri genellikle daha uzun \u00f6m\u00fcrl\u00fcd\u00fcr ancak yaln\u0131zca sunucu taraf\u0131nda kullan\u0131lmal\u0131d\u0131r.<br \/>\n        <br \/>\n        Her zaman en g\u00fcncel OAuth 2.0 ve OpenID Connect (OIDC) standartlar\u0131n\u0131 kullan\u0131n. Bu standartlar, g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 kapatmak ve yeni g\u00fcvenlik \u00f6zellikleri eklemek i\u00e7in s\u00fcrekli g\u00fcncellenir.<br \/>\n        <br \/>\n        Kullan\u0131c\u0131n\u0131n isteyebilece\u011fi izinleri (scopes) minimumda tutun. Uygulaman\u0131z\u0131n ger\u00e7ekten ihtiya\u00e7 duydu\u011fu izinleri isteyin. \u00d6rne\u011fin, yaln\u0131zca e-posta adresine ihtiyac\u0131n\u0131z varsa, kullan\u0131c\u0131n\u0131n t\u00fcm ki\u015filer listesine veya takvimine eri\u015fim izni istemeyin. Bu, kullan\u0131c\u0131lar\u0131n g\u00fcvenini kazanman\u0131za yard\u0131mc\u0131 olur ve gizlilik endi\u015felerini azalt\u0131r.<br \/>\n        <br \/>\n        CSRF (Cross-Site Request Forgery) sald\u0131r\u0131lar\u0131na kar\u015f\u0131 \u00f6nlem al\u0131n. OAuth ak\u0131\u015flar\u0131 s\u0131ras\u0131nda, <code>state<\/code> parametresi kullanarak CSRF korumas\u0131 sa\u011flayabilirsiniz. Bu parametre, yetkilendirme iste\u011fi s\u0131ras\u0131nda olu\u015fturulur ve geri d\u00f6n\u00fc\u015fte do\u011frulan\u0131r. E\u011fer <code>state<\/code> parametresi e\u015fle\u015fmezse, iste\u011fin sahte oldu\u011fu anla\u015f\u0131l\u0131r ve reddedilmelidir.<br \/>\n        <br \/>\n        Hata mesajlar\u0131n\u0131 dikkatli bir \u015fekilde i\u015fleyin. OAuth sa\u011flay\u0131c\u0131s\u0131ndan gelen hata mesajlar\u0131n\u0131 kullan\u0131c\u0131ya do\u011frudan g\u00f6stermek yerine, genel ve bilgilendirici mesajlar sunun. Detayl\u0131 hata bilgileri, sald\u0131rganlara sisteminiz hakk\u0131nda bilgi verebilir.<br \/>\n        <br \/>\n        Eri\u015fim belirte\u00e7lerini g\u00fcvenli bir \u015fekilde saklay\u0131n. Sunucu taraf\u0131nda, veritaban\u0131nda veya g\u00fcvenli bir anahtar y\u00f6netim sisteminde saklanmal\u0131d\u0131r. \u0130stemci taraf\u0131nda ise, <code>HttpOnly<\/code> ve <code>Secure<\/code> \u00e7erezler gibi mekanizmalar kullan\u0131labilir, ancak bu da dikkatli bir \u015fekilde y\u00f6netilmelidir.<br \/>\n        <br \/>\n        Oturum y\u00f6netimi de OAuth ile entegre edilmelidir. Kullan\u0131c\u0131n\u0131n oturumunun ne kadar s\u00fcreyle aktif kalaca\u011f\u0131n\u0131 belirleyin ve s\u00fcresi doldu\u011funda g\u00fcvenli bir \u015fekilde oturumu sonland\u0131r\u0131n.<br \/>\n        <br \/>\n        Bu g\u00fcvenlik \u00f6nlemleri, OAuth entegrasyonunuzun hem g\u00fcvenli hem de kullan\u0131c\u0131 dostu olmas\u0131n\u0131 sa\u011flayacakt\u0131r.\n    <\/p>\n<h3>OAuth ve OpenID Connect (OIDC) Fark\u0131<\/h3>\n<p>\n        OAuth ve OpenID Connect (OIDC) genellikle birlikte an\u0131lsa da, asl\u0131nda farkl\u0131 ama\u00e7lara hizmet ederler. OAuth, temel olarak bir yetkilendirme protokol\u00fcd\u00fcr. Yani, bir uygulaman\u0131n ba\u015fka bir uygulaman\u0131n kaynaklar\u0131na eri\u015fim izni almas\u0131n\u0131 sa\u011flar. \u00d6rne\u011fin, bir uygulaman\u0131n sizin Google Drive&#8217;\u0131n\u0131zdaki dosyalara eri\u015fim izni almas\u0131, OAuth ile y\u00f6netilir. Bu, kullan\u0131c\u0131n\u0131n kimli\u011fini do\u011frulamaktan ziyade, verilere eri\u015fim yetkisini d\u00fczenler.<br \/>\n        <br \/>\n        OpenID Connect (OIDC) ise, OAuth 2.0 \u00fczerine in\u015fa edilmi\u015f bir kimlik do\u011frulama katman\u0131d\u0131r. OIDC, kullan\u0131c\u0131lar\u0131n kimliklerini do\u011frulamak ve kimlik bilgileri hakk\u0131nda standartla\u015ft\u0131r\u0131lm\u0131\u015f bir \u015fekilde bilgi al\u0131\u015fveri\u015fi yapmak i\u00e7in kullan\u0131l\u0131r. Bir OIDC ak\u0131\u015f\u0131 tamamland\u0131\u011f\u0131nda, istemci uygulamas\u0131, kullan\u0131c\u0131n\u0131n kimli\u011fini do\u011frulayan bir &#8220;Kimlik Belirteci&#8221; (ID Token) al\u0131r. Bu belirte\u00e7, kullan\u0131c\u0131n\u0131n temel profil bilgilerini (isim, e-posta, profil URL&#8217;si vb.) i\u00e7eren imzalanm\u0131\u015f bir JSON Web Token&#8217;\u0131d\u0131r (JWT).<br \/>\n        <br \/>\n        Basit bir \u00f6rnekle a\u00e7\u0131klamak gerekirse: Bir butona t\u0131klad\u0131\u011f\u0131n\u0131zda, &#8220;Lime #1&#8221; uygulamas\u0131n\u0131n sizi Google ile oturum a\u00e7maya y\u00f6nlendirmesi, OAuth ak\u0131\u015f\u0131n\u0131n ba\u015flang\u0131c\u0131d\u0131r. Google, kimli\u011finizi do\u011frular ve &#8220;Lime #1&#8221; uygulamas\u0131n\u0131n sizin profil bilgilerinize eri\u015fmesine izin verir. Bu izin verme s\u00fcreci OAuth&#8217;tur. E\u011fer &#8220;Lime #1&#8221; uygulamas\u0131, sizin kim oldu\u011funuzu anlamak i\u00e7in Google&#8217;dan bir kimlik belirteci al\u0131rsa, bu OIDC&#8217;nin devreye girdi\u011fi noktad\u0131r. Bu belirte\u00e7, &#8220;Lime #1&#8221; uygulamas\u0131n\u0131n sizin ger\u00e7ekten o ki\u015fi oldu\u011funuzu do\u011frulamas\u0131na olanak tan\u0131r.<br \/>\n        <br \/>\n        Dolay\u0131s\u0131yla, \u00e7o\u011fu &#8220;Sosyal Giri\u015f&#8221; senaryosunda, hem OAuth hem de OIDC birlikte kullan\u0131l\u0131r. OAuth, gerekli yetkilendirmeyi sa\u011flarken, OIDC de kullan\u0131c\u0131n\u0131n kimli\u011fini do\u011frular ve bu bilgiyi g\u00fcvenli bir \u015fekilde istemci uygulamas\u0131na iletir. Bir\u00e7ok OAuth sa\u011flay\u0131c\u0131s\u0131, OIDC&#8217;yi de destekler ve bu iki protokol\u00fc ayn\u0131 ak\u0131\u015f i\u00e7inde kullanmak m\u00fcmk\u00fcnd\u00fcr. \u00d6rne\u011fin, Google&#8217;\u0131n OAuth 2.0 API&#8217;si, ayn\u0131 zamanda OpenID Connect protokol\u00fcn\u00fc de destekler. Bu sayede, tek bir entegrasyonla hem yetkilendirme hem de kimlik do\u011frulama i\u015flemleri ger\u00e7ekle\u015ftirilebilir.<br \/>\n        <br \/>\n        \u00d6zetle, OAuth &#8220;eri\u015fim&#8221; ile ilgilenirken, OIDC &#8220;kimlik&#8221; ile ilgilenir. Modern uygulamalar i\u00e7in her ikisi de g\u00fc\u00e7l\u00fc bir kombinasyon sunar.\n    <\/p>\n<h3>Geli\u015fmi\u015f Konular ve Optimizasyonlar<\/h3>\n<p>\n        OAuth entegrasyonunu daha da optimize etmek ve geli\u015fmi\u015f senaryolar\u0131 ele almak m\u00fcmk\u00fcnd\u00fcr. Bunlardan biri, eri\u015fim belirte\u00e7lerinin kullan\u0131m \u00f6mr\u00fcn\u00fc y\u00f6netmek ve yenileme belirte\u00e7lerini etkili bir \u015fekilde kullanmakt\u0131r. Eri\u015fim belirte\u00e7lerinin s\u00fcresi doldu\u011funda, kullan\u0131c\u0131y\u0131 tekrar giri\u015f yapmaya zorlamak yerine, sunucu taraf\u0131nda saklanan yenileme belirteci kullan\u0131larak yeni bir eri\u015fim belirteci al\u0131nabilir. Bu, kullan\u0131c\u0131 deneyimini \u00f6nemli \u00f6l\u00e7\u00fcde iyile\u015ftirir.<br \/>\n        <br \/>\n        Farkl\u0131 OAuth sa\u011flay\u0131c\u0131lar\u0131 i\u00e7in standart bir aray\u00fcz olu\u015fturmak da b\u00fcy\u00fck bir avantaj sa\u011flayabilir. E\u011fer uygulaman\u0131z Google, Facebook ve Twitter gibi birden fazla sa\u011flay\u0131c\u0131 ile entegre olacaksa, her bir sa\u011flay\u0131c\u0131 i\u00e7in ayr\u0131 ayr\u0131 kod yazmak yerine, bir soyutlama katman\u0131 (abstraction layer) olu\u015fturarak kodu daha y\u00f6netilebilir hale getirebilirsiniz. Bu soyutlama katman\u0131, her sa\u011flay\u0131c\u0131n\u0131n kendine \u00f6zg\u00fc API \u00e7a\u011fr\u0131lar\u0131n\u0131 y\u00f6netir ve uygulaman\u0131z\u0131n geri kalan\u0131 i\u00e7in ortak bir aray\u00fcz sunar.<br \/>\n        <br \/>\n        Tokenlar\u0131n g\u00fcvenli bir \u015fekilde saklanmas\u0131, \u00f6zellikle mobil uygulamalarda \u00f6nemli bir konudur. Mobil platformlar i\u00e7in sa\u011flanan g\u00fcvenli depolama mekanizmalar\u0131 (\u00f6rne\u011fin iOS&#8217;ta Keychain, Android&#8217;de Keystore) kullan\u0131lmal\u0131d\u0131r. Web uygulamalar\u0131nda ise, sunucu taraf\u0131nda saklanan tokenlar genellikle daha g\u00fcvenlidir.<br \/>\n        <br \/>\n        Eri\u015fim belirte\u00e7lerinin kapsam\u0131n\u0131 (scope) dinamik olarak y\u00f6netmek de bir di\u011fer geli\u015fmi\u015f konsepttir. Ba\u015flang\u0131\u00e7ta yaln\u0131zca temel izinleri isteyip, kullan\u0131c\u0131 uygulaman\u0131z\u0131n daha fazla \u00f6zelli\u011fini kullanmaya ba\u015flad\u0131k\u00e7a ek izinler talep etmek, kullan\u0131c\u0131lar\u0131n daha bilin\u00e7li kararlar vermesine olanak tan\u0131r.<br \/>\n        <br \/>\n        Tokenlar\u0131n do\u011frulanmas\u0131 da kritik bir g\u00fcvenlik \u00f6nlemidir. Al\u0131nan eri\u015fim belirte\u00e7lerinin ger\u00e7ekten ge\u00e7erli olup olmad\u0131\u011f\u0131n\u0131 ve talep edilen kaynaklara eri\u015fim izni olup olmad\u0131\u011f\u0131n\u0131 kontrol etmek \u00f6nemlidir. Bu, genellikle OAuth sa\u011flay\u0131c\u0131s\u0131n\u0131n ilgili API&#8217;lerini kullanarak veya belirtecin imzas\u0131n\u0131 do\u011frulayarak yap\u0131l\u0131r.<br \/>\n        <br \/>\n        Son olarak, OAuth ak\u0131\u015flar\u0131n\u0131n izlenmesi ve loglanmas\u0131, olas\u0131 g\u00fcvenlik sorunlar\u0131n\u0131 tespit etmek ve gidermek i\u00e7in hayati \u00f6nem ta\u015f\u0131r. Ba\u015far\u0131l\u0131 ve ba\u015far\u0131s\u0131z yetkilendirme denemeleri, token istekleri ve API \u00e7a\u011fr\u0131lar\u0131 gibi olaylar kaydedilmelidir.\n    <\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>\n        OAuth, modern web ve mobil uygulamalarda kullan\u0131c\u0131lar\u0131n g\u00fcvenli ve kolay bir \u015fekilde giri\u015f yapabilmesini sa\u011flayan temel bir protokold\u00fcr. Kullan\u0131c\u0131lar\u0131n hassas bilgilerini do\u011frudan payla\u015fmadan, g\u00fcvenilir \u00fc\u00e7\u00fcnc\u00fc parti sa\u011flay\u0131c\u0131lar arac\u0131l\u0131\u011f\u0131yla kimliklerini do\u011frulamalar\u0131na olanak tan\u0131r. &#8220;Lime #1&#8221; gibi projelerde, OAuth entegrasyonu, kullan\u0131c\u0131 deneyimini iyile\u015ftirmenin, geli\u015ftirme s\u00fcresini k\u0131saltman\u0131n ve g\u00fcvenli\u011fi art\u0131rman\u0131n en etkili yollar\u0131ndan biridir. Farkl\u0131 ak\u0131\u015flar\u0131 anlamak, g\u00fcvenlik en iyi uygulamalar\u0131n\u0131 takip etmek ve OpenID Connect gibi tamamlay\u0131c\u0131 protokolleri kullanmak, ba\u015far\u0131l\u0131 bir OAuth entegrasyonunun anahtarlar\u0131d\u0131r.\n    <\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular<\/h3>\n<ul>\n<li><strong>OAuth ile kullan\u0131c\u0131n\u0131n \u015fifresini al\u0131yor muyum?<\/strong> Hay\u0131r, OAuth&#8217;un temel amac\u0131 budur. Kullan\u0131c\u0131lar\u0131n hassas \u015fifreleri asla sizin uygulaman\u0131z taraf\u0131ndan al\u0131nmaz veya saklanmaz. Kimlik do\u011frulama i\u015flemi yetkilendirme sunucusu (\u00f6rne\u011fin Google) taraf\u0131ndan yap\u0131l\u0131r.<\/li>\n<li><strong>Her OAuth sa\u011flay\u0131c\u0131s\u0131 i\u00e7in ayr\u0131 bir entegrasyon mu yapmal\u0131y\u0131m?<\/strong> Farkl\u0131 sa\u011flay\u0131c\u0131lar\u0131n kendine \u00f6zg\u00fc API&#8217;leri vard\u0131r, ancak temel OAuth ak\u0131\u015flar\u0131 benzerdir. Bir soyutlama katman\u0131 olu\u015fturarak veya \u00fc\u00e7\u00fcnc\u00fc parti k\u00fct\u00fcphaneler kullanarak bu s\u00fcreci kolayla\u015ft\u0131rabilirsiniz.<\/li>\n<li><strong>Eri\u015fim belirteci (access token) ne kadar s\u00fcreyle ge\u00e7erlidir?<\/strong> Eri\u015fim belirte\u00e7lerinin ge\u00e7erlilik s\u00fcresi, OAuth sa\u011flay\u0131c\u0131s\u0131na ve yap\u0131land\u0131rmas\u0131na g\u00f6re de\u011fi\u015fir. Genellikle k\u0131sa s\u00fcrelidir ve yenileme belirteci ile yenilenebilir.<\/li>\n<li><strong>OAuth g\u00fcvenli midir?<\/strong> Evet, do\u011fru \u015fekilde uyguland\u0131\u011f\u0131nda olduk\u00e7a g\u00fcvenlidir. Ancak, istemci gizli anahtar\u0131n\u0131 g\u00fcvende tutmak, y\u00f6nlendirme URI&#8217;lerini do\u011fru yap\u0131land\u0131rmak ve CSRF gibi sald\u0131r\u0131lara kar\u015f\u0131 \u00f6nlem almak gibi g\u00fcvenlik en iyi uygulamalar\u0131n\u0131 takip etmek esast\u0131r.<\/li>\n<li><strong>Oturumlar\u0131 nas\u0131l y\u00f6netmeliyim?<\/strong> OAuth ile giri\u015f yapt\u0131ktan sonra, uygulaman\u0131z kendi oturum y\u00f6netim mekanizmas\u0131n\u0131 kullanmal\u0131d\u0131r. Bu, genellikle sunucu taraf\u0131nda olu\u015fturulan ve istemciye g\u00f6nderilen bir oturum \u00e7erezi (session cookie) arac\u0131l\u0131\u011f\u0131yla yap\u0131l\u0131r.<\/li>\n<\/ul>\n<p>    #OAuth #WebGeli\u015ftirme #G\u00fcvenlik #KimlikDo\u011frulama #API<br \/>\n<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"G\u00fcn\u00fcm\u00fcz dijital d\u00fcnyas\u0131nda, kullan\u0131c\u0131lar\u0131n uygulamalar\u0131n\u0131za kolay ve g\u00fcvenli bir \u015fekilde eri\u015fmesini sa\u011flamak b\u00fcy\u00fck \u00f6nem ta\u015f\u0131yor.","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-41656","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>OAuth ile G\u00fcvenli Giri\u015f: Modern Uygulamalar\u0131n Anahtar\u0131 - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/oauth-ile-guvenli-giris-modern-uygulamalarin-anahtari\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"OAuth ile G\u00fcvenli Giri\u015f: Modern Uygulamalar\u0131n Anahtar\u0131\" \/>\n<meta property=\"og:description\" content=\"G\u00fcn\u00fcm\u00fcz dijital d\u00fcnyas\u0131nda, kullan\u0131c\u0131lar\u0131n uygulamalar\u0131n\u0131za kolay ve g\u00fcvenli bir \u015fekilde eri\u015fmesini sa\u011flamak b\u00fcy\u00fck \u00f6nem ta\u015f\u0131yor.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/oauth-ile-guvenli-giris-modern-uygulamalarin-anahtari\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-05-08T18:01:58+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"19 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/oauth-ile-guvenli-giris-modern-uygulamalarin-anahtari\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/oauth-ile-guvenli-giris-modern-uygulamalarin-anahtari\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"OAuth ile G\u00fcvenli Giri\u015f: Modern Uygulamalar\u0131n Anahtar\u0131\",\"datePublished\":\"2026-05-08T18:01:58+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/oauth-ile-guvenli-giris-modern-uygulamalarin-anahtari\/\"},\"wordCount\":3636,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/oauth-ile-guvenli-giris-modern-uygulamalarin-anahtari\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/oauth-ile-guvenli-giris-modern-uygulamalarin-anahtari\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/oauth-ile-guvenli-giris-modern-uygulamalarin-anahtari\/\",\"name\":\"OAuth ile G\u00fcvenli Giri\u015f: Modern Uygulamalar\u0131n Anahtar\u0131 - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-05-08T18:01:58+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/oauth-ile-guvenli-giris-modern-uygulamalarin-anahtari\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/oauth-ile-guvenli-giris-modern-uygulamalarin-anahtari\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/oauth-ile-guvenli-giris-modern-uygulamalarin-anahtari\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"OAuth ile G\u00fcvenli Giri\u015f: Modern Uygulamalar\u0131n Anahtar\u0131\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"OAuth ile G\u00fcvenli Giri\u015f: Modern Uygulamalar\u0131n Anahtar\u0131 - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/oauth-ile-guvenli-giris-modern-uygulamalarin-anahtari\/","og_locale":"tr_TR","og_type":"article","og_title":"OAuth ile G\u00fcvenli Giri\u015f: Modern Uygulamalar\u0131n Anahtar\u0131","og_description":"G\u00fcn\u00fcm\u00fcz dijital d\u00fcnyas\u0131nda, kullan\u0131c\u0131lar\u0131n uygulamalar\u0131n\u0131za kolay ve g\u00fcvenli bir \u015fekilde eri\u015fmesini sa\u011flamak b\u00fcy\u00fck \u00f6nem ta\u015f\u0131yor.","og_url":"https:\/\/fatihsoysal.com\/blog\/oauth-ile-guvenli-giris-modern-uygulamalarin-anahtari\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-05-08T18:01:58+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"19 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/oauth-ile-guvenli-giris-modern-uygulamalarin-anahtari\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/oauth-ile-guvenli-giris-modern-uygulamalarin-anahtari\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"OAuth ile G\u00fcvenli Giri\u015f: Modern Uygulamalar\u0131n Anahtar\u0131","datePublished":"2026-05-08T18:01:58+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/oauth-ile-guvenli-giris-modern-uygulamalarin-anahtari\/"},"wordCount":3636,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/oauth-ile-guvenli-giris-modern-uygulamalarin-anahtari\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/oauth-ile-guvenli-giris-modern-uygulamalarin-anahtari\/","url":"https:\/\/fatihsoysal.com\/blog\/oauth-ile-guvenli-giris-modern-uygulamalarin-anahtari\/","name":"OAuth ile G\u00fcvenli Giri\u015f: Modern Uygulamalar\u0131n Anahtar\u0131 - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-05-08T18:01:58+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/oauth-ile-guvenli-giris-modern-uygulamalarin-anahtari\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/oauth-ile-guvenli-giris-modern-uygulamalarin-anahtari\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/oauth-ile-guvenli-giris-modern-uygulamalarin-anahtari\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"OAuth ile G\u00fcvenli Giri\u015f: Modern Uygulamalar\u0131n Anahtar\u0131"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/41656","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=41656"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/41656\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=41656"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=41656"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=41656"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}