﻿
{"id":18881,"date":"2020-11-07T20:14:06","date_gmt":"2020-11-07T20:14:06","guid":{"rendered":"https:\/\/www.gencayyildiz.com\/blog\/?p=18881"},"modified":"2020-11-07T20:14:06","modified_gmt":"2020-11-07T20:14:06","slug":"identityserver4-yazi-serisi-13-merkezi-uyelik-sistemi-access-token-ile-apilerle-haberlesme","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/identityserver4-yazi-serisi-13-merkezi-uyelik-sistemi-access-token-ile-apilerle-haberlesme\/","title":{"rendered":"IdentityServer4 Yaz\u0131 Serisi #13 \u2013 Merkezi \u00dcyelik Sistemi \u2013 Access Token \u0130le API&#8217;lerle Haberle\u015fme"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Merhaba,<\/p>\n<p>Bir \u00f6nceki <a href=\"https:\/\/www.gencayyildiz.com\/blog\/identityserver4-yazi-serisi-12-merkezi-uyelik-sistemi-claim-ve-authentication-propertyleri-okuma\/\" rel=\"noopener noreferrer\" target=\"_blank\">Merkezi \u00dcyelik Sistemi \u2013 Claim ve Authentication Propertyleri Okuma<\/a> ba\u015fl\u0131kl\u0131 makalemizde IdentityServer4 mimarisinden claim bilgileri ile birlikte access token, refresh token gibi de\u011ferlerin nas\u0131l al\u0131nd\u0131\u011f\u0131n\u0131 incelemi\u015ftik. Bu i\u00e7eri\u011fimizde ise client taraf\u0131ndan elde edilen access token ile IdentityServer4 taraf\u0131ndan korunan API&#8217;lara nas\u0131l eri\u015filebildi\u011fini inceleyece\u011fiz.<\/p>\n<h3 style=\"color:#e83e8c;\">Client&#8217;a Scope(Eri\u015fim Yetkisi) Verme?<\/h3>\n<p>Client, her ne kadar access token bilgisini elinde bar\u0131nd\u0131r\u0131yor olsada eri\u015fmek istedi\u011fi API&#8217;\u0131n &#8216;Scope&#8217;lar\u0131n\u0131 da bar\u0131nd\u0131rmas\u0131 gerekmektedir. Misal; &#8216;GarantiAPI&#8217; isimli API&#8217;a eri\u015fmek istedi\u011fimizi varsayal\u0131m.<br \/>\n<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/11\/IdentityServer4-Yazi-Serisi-13-\u2013-Merkezi-Uyelik-Sistemi-\u2013-Access-Token-Ile-APIlerle-Haberlesme.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/11\/IdentityServer4-Yazi-Serisi-13-\u2013-Merkezi-Uyelik-Sistemi-\u2013-Access-Token-Ile-APIlerle-Haberlesme-300x168.jpg\" alt=\"IdentityServer4 Yaz\u0131 Serisi #13 \u2013 Merkezi \u00dcyelik Sistemi \u2013 Access Token \u0130le API&#039;lerle Haberle\u015fme\" width=\"300\" height=\"168\" class=\"alignleft size-medium wp-image-18888\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/11\/IdentityServer4-Yazi-Serisi-13-\u2013-Merkezi-Uyelik-Sistemi-\u2013-Access-Token-Ile-APIlerle-Haberlesme-300x168.jpg 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/11\/IdentityServer4-Yazi-Serisi-13-\u2013-Merkezi-Uyelik-Sistemi-\u2013-Access-Token-Ile-APIlerle-Haberlesme.jpg 455w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a>G\u00f6r\u00fcld\u00fc\u011f\u00fc \u00fczere ilgili API&#8217;\u0131 IdentityServer&#8217;da temsil eden &#8216;ApiResource&#8217; nesnesindeki &#8216;Scopes&#8217; koleksiyonunda API&#8217;\u0131n eri\u015fim yetkileri tan\u0131mlanm\u0131\u015ft\u0131r. Dolay\u0131s\u0131yla bu yetkilerin &#8216;Config.cs&#8217;de geli\u015ftirilen client&#8217;ta(OnlineBankamatik) da tan\u0131mlanmas\u0131 gerekmektedir. <br \/>&nbsp;<br \/>&nbsp;<br \/>\n\u015e\u00f6yle ki;<br \/>\n<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/11\/IdentityServer4-Yazi-Serisi-13-\u2013-Merkezi-Uyelik-Sistemi-\u2013-Access-Token-Ile-APIlerle-Haberlesme-1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/11\/IdentityServer4-Yazi-Serisi-13-\u2013-Merkezi-Uyelik-Sistemi-\u2013-Access-Token-Ile-APIlerle-Haberlesme-1.jpg\" alt=\"IdentityServer4 Yaz\u0131 Serisi #13 \u2013 Merkezi \u00dcyelik Sistemi \u2013 Access Token \u0130le API&#039;lerle Haberle\u015fme\" width=\"1006\" height=\"305\" class=\"aligncenter size-full wp-image-18889\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/11\/IdentityServer4-Yazi-Serisi-13-\u2013-Merkezi-Uyelik-Sistemi-\u2013-Access-Token-Ile-APIlerle-Haberlesme-1.jpg 1006w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/11\/IdentityServer4-Yazi-Serisi-13-\u2013-Merkezi-Uyelik-Sistemi-\u2013-Access-Token-Ile-APIlerle-Haberlesme-1-300x91.jpg 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/11\/IdentityServer4-Yazi-Serisi-13-\u2013-Merkezi-Uyelik-Sistemi-\u2013-Access-Token-Ile-APIlerle-Haberlesme-1-768x233.jpg 768w\" sizes=\"auto, (max-width: 1006px) 100vw, 1006px\" \/><\/a><br \/>\nBu i\u015flemden sonra client taraf\u0131ndan istenilen scope&#8217;lar(yetkiler) birde ilgili client uygulamas\u0131n\u0131n &#8216;Startup.cs&#8217; dosyas\u0131nda da bildirilmelidir.<br \/>\n<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/11\/IdentityServer4-Yazi-Serisi-13-\u2013-Merkezi-Uyelik-Sistemi-\u2013-Access-Token-Ile-APIlerle-Haberlesme-2.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/11\/IdentityServer4-Yazi-Serisi-13-\u2013-Merkezi-Uyelik-Sistemi-\u2013-Access-Token-Ile-APIlerle-Haberlesme-2.jpg\" alt=\"IdentityServer4 Yaz\u0131 Serisi #13 \u2013 Merkezi \u00dcyelik Sistemi \u2013 Access Token \u0130le API&#039;lerle Haberle\u015fme\" width=\"506\" height=\"497\" class=\"aligncenter size-full wp-image-18897\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/11\/IdentityServer4-Yazi-Serisi-13-\u2013-Merkezi-Uyelik-Sistemi-\u2013-Access-Token-Ile-APIlerle-Haberlesme-2.jpg 506w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/11\/IdentityServer4-Yazi-Serisi-13-\u2013-Merkezi-Uyelik-Sistemi-\u2013-Access-Token-Ile-APIlerle-Haberlesme-2-300x295.jpg 300w\" sizes=\"auto, (max-width: 506px) 100vw, 506px\" \/><\/a><br \/>\nClient uygulamas\u0131nda bu i\u015flemi yapmam\u0131z\u0131n sebebi, IdentityServer&#8217;da(Auth Server) kendisine dair olu\u015fturulmu\u015f client&#8217;ta bu scope de\u011ferleri tan\u0131mlanm\u0131\u015f olup olmamas\u0131n\u0131 check etmesidir. Aksi taktirde, IdentityServer taraf\u0131nda tan\u0131ml\u0131 olan client&#8217;a verilmeyen bir scope de\u011feri, client taraf\u0131ndan talep edilirse hata meydana gelecektir.<\/p>\n<p>Yap\u0131lan bu konfig\u00fcrasyonlardan sonra art\u0131k uygulamay\u0131 test edebiliriz.<\/p>\n<h3 style=\"color:#e83e8c;\">Test Edelim<\/h3>\n<p>Test i\u00e7in \u00f6ncelikle client taraf\u0131ndan giri\u015f yap\u0131lmal\u0131 ve ard\u0131ndan bu ayarlarda(yani belirtilen scope de\u011ferlerinde) yetkileri bar\u0131nd\u0131ran access token elde edilmelidir.<br \/>\n<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/11\/IdentityServer4-Yazi-Serisi-13-\u2013-Merkezi-Uyelik-Sistemi-\u2013-Access-Token-Ile-APIlerle-Haberlesme-3.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/11\/IdentityServer4-Yazi-Serisi-13-\u2013-Merkezi-Uyelik-Sistemi-\u2013-Access-Token-Ile-APIlerle-Haberlesme-3.jpg\" alt=\"IdentityServer4 Yaz\u0131 Serisi #13 \u2013 Merkezi \u00dcyelik Sistemi \u2013 Access Token \u0130le API&#039;lerle Haberle\u015fme\" width=\"1286\" height=\"187\" class=\"aligncenter size-full wp-image-18900\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/11\/IdentityServer4-Yazi-Serisi-13-\u2013-Merkezi-Uyelik-Sistemi-\u2013-Access-Token-Ile-APIlerle-Haberlesme-3.jpg 1286w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/11\/IdentityServer4-Yazi-Serisi-13-\u2013-Merkezi-Uyelik-Sistemi-\u2013-Access-Token-Ile-APIlerle-Haberlesme-3-300x44.jpg 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/11\/IdentityServer4-Yazi-Serisi-13-\u2013-Merkezi-Uyelik-Sistemi-\u2013-Access-Token-Ile-APIlerle-Haberlesme-3-1024x149.jpg 1024w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/11\/IdentityServer4-Yazi-Serisi-13-\u2013-Merkezi-Uyelik-Sistemi-\u2013-Access-Token-Ile-APIlerle-Haberlesme-3-768x112.jpg 768w\" sizes=\"auto, (max-width: 1286px) 100vw, 1286px\" \/><\/a>Evet, access token&#8217;\u0131 elde etti\u011fimize g\u00f6re art\u0131k testimize ba\u015flayabiliriz.<\/p>\n<h5 style=\"color:purple;\">Postman \u0130le Test<\/h5>\n<p><a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/11\/IdentityServer4-Yazi-Serisi-13-\u2013-Merkezi-Uyelik-Sistemi-\u2013-Access-Token-Ile-APIlerle-Haberlesme-4.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/11\/IdentityServer4-Yazi-Serisi-13-\u2013-Merkezi-Uyelik-Sistemi-\u2013-Access-Token-Ile-APIlerle-Haberlesme-4.jpg\" alt=\"IdentityServer4 Yaz\u0131 Serisi #13 \u2013 Merkezi \u00dcyelik Sistemi \u2013 Access Token \u0130le API&#039;lerle Haberle\u015fme\" width=\"726\" height=\"266\" class=\"aligncenter size-full wp-image-18903\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/11\/IdentityServer4-Yazi-Serisi-13-\u2013-Merkezi-Uyelik-Sistemi-\u2013-Access-Token-Ile-APIlerle-Haberlesme-4.jpg 726w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/11\/IdentityServer4-Yazi-Serisi-13-\u2013-Merkezi-Uyelik-Sistemi-\u2013-Access-Token-Ile-APIlerle-Haberlesme-4-300x110.jpg 300w\" sizes=\"auto, (max-width: 726px) 100vw, 726px\" \/><\/a><br \/>\nAccess token ile Postman \u00fczerinden yap\u0131lan istek neticesinde g\u00f6r\u00fcld\u00fc\u011f\u00fc \u00fczere ba\u015far\u0131yla authorized olunmakta ve haberle\u015fme sa\u011flanmaktad\u0131r. <\/p>\n<h5 style=\"color:purple;\">Client Uygulamas\u0131 \u0130le Test<\/h5>\n<p>Client uygulamas\u0131 \u00fczerinden access token&#8217;\u0131 kullanarak API ile haberle\u015fmek istiyorsan\u0131z e\u011fer a\u015fa\u011f\u0131daki gibi bir \u00e7al\u0131\u015fma sergileyebilirsiniz;<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n        &#x5B;Authorize]\r\n        public async Task&lt;IActionResult&gt; OdemeYap()\r\n        {\r\n            var authenticationProperties = (await HttpContext.AuthenticateAsync()).Properties.Items;\r\n            string accessToken = authenticationProperties.FirstOrDefault(x =&gt; x.Key == &quot;.Token.access_token&quot;).Value;\r\n\r\n            HttpClient httpClient = new HttpClient();\r\n            httpClient.DefaultRequestHeaders.Add(&quot;Authorization&quot;, $&quot;Bearer {accessToken}&quot;);\r\n            HttpResponseMessage responseMessage = await httpClient.GetAsync(&quot;https:\/\/localhost:2000\/api\/garantibank\/bakiye\/3&quot;);\r\n            string bakiye = await responseMessage.Content.ReadAsStringAsync();\r\n\r\n            ViewBag.Bakiye = bakiye;\r\n            return View();\r\n        }\r\n<\/pre>\n<p><a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/11\/IdentityServer4-Yazi-Serisi-13-\u2013-Merkezi-Uyelik-Sistemi-\u2013-Access-Token-Ile-APIlerle-Haberlesme-5.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/11\/IdentityServer4-Yazi-Serisi-13-\u2013-Merkezi-Uyelik-Sistemi-\u2013-Access-Token-Ile-APIlerle-Haberlesme-5.jpg\" alt=\"IdentityServer4 Yaz\u0131 Serisi #13 \u2013 Merkezi \u00dcyelik Sistemi \u2013 Access Token \u0130le API&#039;lerle Haberle\u015fme\" width=\"460\" height=\"153\" class=\"aligncenter size-full wp-image-18910\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/11\/IdentityServer4-Yazi-Serisi-13-\u2013-Merkezi-Uyelik-Sistemi-\u2013-Access-Token-Ile-APIlerle-Haberlesme-5.jpg 460w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/11\/IdentityServer4-Yazi-Serisi-13-\u2013-Merkezi-Uyelik-Sistemi-\u2013-Access-Token-Ile-APIlerle-Haberlesme-5-300x100.jpg 300w\" sizes=\"auto, (max-width: 460px) 100vw, 460px\" \/><\/a><\/p>\n<p>G\u00f6r\u00fcld\u00fc\u011f\u00fc \u00fczere her iki testimizde ba\u015far\u0131yla sonu\u00e7lanm\u0131\u015ft\u0131r.<\/p>\n<p>\u0130lgilenenlerin faydalanmas\u0131 dile\u011fiyle&#8230;<br \/>\nSonraki yaz\u0131lar\u0131mda g\u00f6r\u00fc\u015fmek \u00fczere&#8230;<br \/>\n\u0130yi \u00e7al\u0131\u015fmalar&#8230;<\/p>\n<p>Not : \u00d6rnek \u00e7al\u0131\u015fma dosyas\u0131n\u0131 indirmek i\u00e7in <a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/11\/IdentityServer4Example-2.zip\">buraya<\/a> t\u0131klay\u0131n\u0131z.<\/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, Bir \u00f6nceki Merkezi \u00dcyelik Sistemi \u2013 Claim ve Authentication Propertyleri Okuma ba\u015fl\u0131kl\u0131 makalemizde IdentityServer4 mimarisinden claim bilgileri ile birlikte access token, refresh token gibi de\u011ferlerin nas\u0131l al\u0131nd\u0131\u011f\u0131n\u0131 incelemi\u015ftik. Bu i\u00e7eri\u011fimizde ise client taraf\u0131ndan&#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":18168,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3826],"tags":[3827,3895,3902,3888],"class_list":["post-18881","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-identityserver4","tag-identityserver4","tag-identityserver4-access-token","tag-identityserver4-api-ile-haberlesme","tag-identityserver4-merkezi-uyelik-sistemi"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/18881","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=18881"}],"version-history":[{"count":22,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/18881\/revisions"}],"predecessor-version":[{"id":18914,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/18881\/revisions\/18914"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media\/18168"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=18881"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=18881"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=18881"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}