<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>jwt token arşivleri - Dinamik Network</title>
	<atom:link href="https://dinamiknetwork.com/e/jwt-token/feed/" rel="self" type="application/rss+xml" />
	<link>https://dinamiknetwork.com/e/jwt-token/</link>
	<description>Bilişim Dünyasına Profesyonel Yaklaşım</description>
	<lastBuildDate>Fri, 13 Dec 2019 13:45:16 +0000</lastBuildDate>
	<language>tr</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.8.12</generator>

<image>
	<url>https://dinamiknetwork.com/wp-content/uploads/2020/01/cropped-ikon-1-1-32x32.png</url>
	<title>jwt token arşivleri - Dinamik Network</title>
	<link>https://dinamiknetwork.com/e/jwt-token/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>ASP.NET Core 3.0 ile JWT Uygulaması</title>
		<link>https://dinamiknetwork.com/asp-net-core-3-0-ile-jwt-uygulamasi/</link>
					<comments>https://dinamiknetwork.com/asp-net-core-3-0-ile-jwt-uygulamasi/#comments</comments>
		
		<dc:creator><![CDATA[Raziye Ataseven]]></dc:creator>
		<pubDate>Fri, 13 Dec 2019 13:36:07 +0000</pubDate>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[ASP.NET Core JWT]]></category>
		<category><![CDATA[ASP.NET Core JWT UsersController]]></category>
		<category><![CDATA[json web token]]></category>
		<category><![CDATA[jwt]]></category>
		<category><![CDATA[jwt asp.net core]]></category>
		<category><![CDATA[jwt authentication]]></category>
		<category><![CDATA[jwt bearer]]></category>
		<category><![CDATA[JWT nedir]]></category>
		<category><![CDATA[jwt token]]></category>
		<category><![CDATA[jwt token kullanımı]]></category>
		<category><![CDATA[restfull api]]></category>
		<guid isPermaLink="false">https://dinamiknetwork.com/?p=756</guid>

					<description><![CDATA[<p>Bu makalede basit bir ASP.NET Core 3.0 API  uygulamasına JWT (Json Web Token) ile authentication yapısını nasıl kuracağımızı anlatacağım. İlk olarak JWT nedir? Bir JWT,&#46;&#46;&#46;</p>
<p>The post <a rel="nofollow" href="https://dinamiknetwork.com/asp-net-core-3-0-ile-jwt-uygulamasi/">ASP.NET Core 3.0 ile JWT Uygulaması</a> appeared first on <a rel="nofollow" href="https://dinamiknetwork.com">Dinamik Network</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Bu makalede basit bir ASP.NET Core 3.0 API  uygulamasına JWT (Json Web Token) ile authentication yapısını nasıl kuracağımızı anlatacağım.</p>
<h2>İlk olarak JWT nedir?</h2>
<p>Bir JWT, teknik olarak bazı JSON verilerinin sahibini doğrulayan bir mekanizmadır. Çerezlerin aksine çok miktarda veri içerebilmektedir. Buna rağmen boyutu çok büyük değildir ve URL üzerinden de gönderilebilme özelliği olan kompakt yapıya sahiptir.</p>
<figure id="attachment_792" aria-describedby="caption-attachment-792" style="width: 770px" class="wp-caption alignnone"><a href="https://dinamiknetwork.com/asp-net-core-3-0-ile-jwt-uygulamasi/dotnet_core_jwt_json_web_token/" rel="attachment wp-att-792"><img wpfc-lazyload-disable="true" loading="lazy" class="size-full wp-image-792" src="https://dinamiknetwork.com/wp-content/uploads/2019/12/dotnet_core_jwt_json_web_token.png" alt="dot net core 3 jwt s" width="770" height="384" srcset="https://dinamiknetwork.com/wp-content/uploads/2019/12/dotnet_core_jwt_json_web_token.png 770w, https://dinamiknetwork.com/wp-content/uploads/2019/12/dotnet_core_jwt_json_web_token-768x383.png 768w" sizes="(max-width: 770px) 100vw, 770px" /></a><figcaption id="caption-attachment-792" class="wp-caption-text">ASP.NET Core 3.0 API  uygulaması JWT(Json Web Token) ile authentication</figcaption></figure>
<p>Bir sunucu bir JWT aldığında, kaynak tarafından imzalandığından içerdiği verilere güvenilebileceğini garanti edebilir. Hiçbir aracı, bir JWT&#8217;yi gönderildikten sonra değiştiremez. Bir JWT&#8217;nin veri sahipliğini garanti ettiğini, ancak şifrelemeyi garanti etmediğini bilmek önemlidir; Bir JWT&#8217;ye kaydettiğiniz JSON verileri, yalnızca seri hale getirildiğinden ve şifrelenmemiş olduğundan tokene müdahale eden herkes tarafından görülebilir. Bu nedenle HTTPS’i JWT’lerle (ve genel olarak HTTPS’i) kullanmanızı tavsiye ederim. Json Web Tokenile ilgili dökümanlara resmi sitesi <a href="https://jwt.io/">https://jwt.io/</a> üzerinden ulaşabilirsiniz.</p>
<p>Şimdi gelelim JWT&#8217;nin ASP.NET Core 3.0 Api uygulamasındaki kullanımına;</p>
<p>&nbsp;</p>
<h3>ASP.NET Core JWT UsersController</h3>
<p>Basit bir read işlemi için GeltAll() methodunu, sisteme giriş yetkisi alabilmek için gerekli olan Json Web Token ve kullanıcı bilgilerini dönen &#8220;authenticate&#8221; methodunu oluşturuyoruz. UsersController&#8217;a eklenen [Authorize] attribute&#8217;ı token gönderilmeden istek yapılmasını engeller. Token alabilmek için ulaşmaya çalışacağımız Authenticate methodu ise [AllowAnonymous] attribute&#8217;ına sahip olmalıdır.</p>
<pre class="prettyprint lang-csharp" data-start-line="1" data-visibility="visible" data-highlight="" data-caption="">using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Authorization;
using WebApi.Services;
using WebApi.Models;

namespace WebApi.Controllers
{
    [Authorize]
    [ApiController]
    [Route("[controller]")]
    public class UsersController : ControllerBase
    {
        private IUserService _userService;

        public UsersController(IUserService userService)
        {
            _userService = userService;
        }

        [AllowAnonymous]
        [HttpPost("authenticate")]
        public IActionResult Authenticate([FromBody]AuthenticateModel model)
        {
            var user = _userService.Authenticate(model.Username, model.Password);

            if (user == null)
                return BadRequest(new { message = "You shall not pass! -Gandalf the Grey"
                });

            return Ok(user);
        }

        [HttpGet]
        public IActionResult GetAll()
        {
            var users = _userService.GetAll();
            return Ok(users);
        }
    }
}</pre>
<p>&nbsp;</p>
<h3>ASP.NET Core User Entity</h3>
<p>User entity sınıfı, uygulamadaki bir kullanıcının verilerini gösterir. Uygulamanın farklı bölümleri arasında veri taşıma ve controller action methodlarından http response döndürmek için kullanılabilir.</p>
<pre class="prettyprint lang-csharp" data-start-line="1" data-visibility="visible" data-highlight="" data-caption="">namespace WebApi.Entities
{
    public class User
    {
        public int Id { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string Username { get; set; }
        public string Password { get; set; }
        public string Token { get; set; }
    }
}</pre>
<p>&nbsp;</p>
<h3>ASP.NET Core JWT AppSettings.json</h3>
<p>JWT token konfigurasyonu yaparken şifreleme işleminde kullanacağımız anahtar kelimeyi -tahmin edilmesi zor bir string ifade,  AppSettings.json dosyasından okuyoruz.</p>
<pre class="prettyprint lang-json" data-start-line="1" data-visibility="visible" data-highlight="" data-caption="">  "AppSettings": {
    "Secret": "ASIRI GIZLI JSON WEB TOKEN ANAHTARIM, BURAYA HERHANGI BIR STRING IFADE GELEBILIR"
  },
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*"
}
</pre>
<p>&nbsp;</p>
<h3>ASP.NET Core JWT AppSettings.cs</h3>
<p>AppSettings class&#8217;ı appsettings.json dosyasında tanımlanan property&#8217;leri içerir. Dependency Injection (DI) sisteminde yerleşik olan ASP.NET Core yapısındaki sınıflara inject edilen nesneler üzerinden, uygulama ayarlarına erişmek için kullanacağız.</p>
<pre class="prettyprint lang-csharp" data-start-line="1" data-visibility="visible" data-highlight="" data-caption="">namespace WebApi.Helpers
{
    public class AppSettings
    {
        public string Secret { get; set; }
    }
}

</pre>
<p>&nbsp;</p>
<h3>ASP.NET Core JWT Helpers</h3>
<p>Extension methodlar, C # &#8216;daki mevcut tiplere kolaylık yöntemleri ve ekstra işlevler eklemek için kullanılır. Extension methodlar hakkında detaylı bilgiye ve uygulama detaylarına <a href="https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/extension-methods">buradan</a> ulaşabilirsiniz.</p>
<pre class="prettyprint lang-csharp" data-start-line="1" data-visibility="visible" data-highlight="" data-caption="">using System.Collections.Generic;
using System.Linq;
using WebApi.Entities;

namespace WebApi.Helpers
{
    public static class ExtensionMethods
    {
        public static IEnumerable&lt;User&gt; WithoutPasswords(this IEnumerable&lt;User&gt; users) {
            return users.Select(x =&gt; x.WithoutPassword());
        }

        public static User WithoutPassword(this User user) {
            user.Password = null;
            return user;
        }
    }
}</pre>
<p>&nbsp;</p>
<h3>ASP.NET Core JWT Authenticate Model</h3>
<p>Authenticate model, &#8220;/users/authenticate&#8221; adresindeki method request&#8217;i için gerekli parametreleri içerir. Bu URL&#8217;e bir HTTP POST requesti geldiğinde, request body&#8217;sindeki veriler AuthenticateModel&#8217;in bir instance&#8217;ına bağlanır, doğrulanır ve methoda iletilir.</p>
<p>Otomatize edilmiş bir validasyon kuralı oluşturmak için ASP.NET Core Data Annotations kütüphanesinin [Required] attribute&#8217;ı, bağlı olduğu model property&#8217;si methoda gönderilmediğinde ap cevabı olarak &#8220;validation error message&#8221; cevabı döner.</p>
<pre class="prettyprint lang-csharp" data-start-line="1" data-visibility="visible" data-highlight="" data-caption="">using System.ComponentModel.DataAnnotations;

namespace WebApi.Models
{
    public class AuthenticateModel
    {
        [Required]
        public string Username { get; set; }

        [Required]
        public string Password { get; set; }
    }
}</pre>
<p>&nbsp;</p>
<h3>ASP.NET Core JWT User Service</h3>
<p>User servisi, kullanıcı kimlik bilgilerinin doğrulanması ve bir json web token dondüren bir methodla, uygulamadaki kullanıcıları listeleyen bir method içermektedir.</p>
<p>Ayrıca veritabanı bağlantısı ile ve orm aracı implementasyonu ile zaman kaybetmemek ve JWT authentication işlemine odaklanmak amacıyla kullanıcılar için mock data tanımlandı. Kullanıcı bilgilerini veritabanında ve şifreleri hash&#8217;lenmiş şekilde saklamanız önerilir.</p>
<p>Başarılı kimlik doğrulamasında Authenticate methodu, appsettings.json içinde tanımlanmış secret key yardımıyla dijitl olarak imzalanmış bir token üretmek için <em>JwtSecurityTokenHandler </em>sınıfını kullanır.</p>
<p>WebApi.Service namespace&#8217;inde üst bölümde bulunan interface nesnesi, UserService&#8217;in içerdiği merhodları tanımlar,  altındaki user sevice ise bu methodları miras alır.</p>
<pre class="prettyprint lang-csharp" data-start-line="1" data-visibility="visible" data-highlight="" data-caption="">using System;
using System.Collections.Generic;
using System.IdentityModel.Tokens.Jwt;
using System.Linq;
using System.Security.Claims;
using System.Text;
using Microsoft.Extensions.Options;
using Microsoft.IdentityModel.Tokens;
using WebApi.Entities;
using WebApi.Helpers;

namespace WebApi.Services
{
    public interface IUserService
    {
        User Authenticate(string username, string password);
        IEnumerable&lt;User&gt; GetAll();
    }

    public class UserService : IUserService
    {
        // users mock data
        private List&lt;User&gt; _users = new List&lt;User&gt;
        { 
            new User { Id = 1, FirstName = "john", LastName = "doe", Username = "jdoe", Password = "123" } 
        };

        private readonly AppSettings _appSettings;

        public UserService(IOptions&lt;AppSettings&gt; appSettings)
        {
            _appSettings = appSettings.Value;
        }

        public User Authenticate(string username, string password)
        {
            var user = _users.SingleOrDefault(x =&gt; x.Username == username &amp;&amp; x.Password == password);

            // user bulunamazsa null dönüyoruz
            if (user == null)
                return null;

            // authentication başarılı, jwt token oluşturuyoruz
            var tokenHandler = new JwtSecurityTokenHandler();
            var key = Encoding.ASCII.GetBytes(_appSettings.Secret);
            var tokenDescriptor = new SecurityTokenDescriptor
            {
                Subject = new ClaimsIdentity(new Claim[] 
                {
                    new Claim(ClaimTypes.Name, user.Id.ToString())
                }),
                Expires = DateTime.UtcNow.AddDays(7),
                SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature)
            };
            var token = tokenHandler.CreateToken(tokenDescriptor);
            user.Token = tokenHandler.WriteToken(token);

            return user.WithoutPassword();
        }

        public IEnumerable&lt;User&gt; GetAll()
        {
            return _users.WithoutPasswords();
        }
    }
}</pre>
<p>&nbsp;</p>
<h3>ASP.NET Core JWT Program</h3>
<p>Program class&#8217;ı, uygulamayı başlatmak için ana giriş noktası olan bir konsol uygulamasıdır, IHostBuilder instance&#8217;ı kullanarak web api host&#8217;unu ve web sunucusunu yapılandırır ve başlatır. ASP.NET Core uygulamaları yürütmek için bir host gerektirir.</p>
<pre class="prettyprint lang-csharp" data-start-line="1" data-visibility="visible" data-highlight="" data-caption="">using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;

namespace WebApi
{
    public class Program
    {
        public static void Main(string[] args)
        {
            CreateHostBuilder(args).Build().Run();
        }

        public static IHostBuilder CreateHostBuilder(string[] args) =&gt;
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =&gt;
                {
                    webBuilder.UseStartup&lt;Startup&gt;()
                        .UseUrls("http://localhost:4000");
                });
    }
}</pre>
<p>&nbsp;</p>
<h3>ASP.NET Core JWT Startup</h3>
<p>ASP.NET Core mimarisinde, Dependency Injection için kullanabileceğimiz hazır bir yapı bulunuyor. Inject etmek isteyeceğiniz nesne bir servis nesnesi veya log nesnesi olabilir. Ihtiyacınız olan şey, inject işlemini yaptıktan sonra Startup.cs sınıfındaki servis konfigurasyonlarını yaptığımız methodda, <strong>IServiceCollection</strong> interface ile servisimizi tanıtmak.</p>
<p>Authentication yöntemini ve temel konfigurasyonlarını uygulamaya tanıtmak için <strong>Microsoft.AspNetCore.Authentication.JwtBearer</strong> kütüphanesini kullanıyoruz.</p>
<pre class="prettyprint lang-csharp" data-start-line="1" data-visibility="visible" data-highlight="54, 33-51" data-caption="">using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using WebApi.Helpers;
using WebApi.Services;
using Microsoft.IdentityModel.Tokens;
using System.Text;
using Microsoft.AspNetCore.Authentication.JwtBearer;

namespace WebApi
{
    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddCors();
            services.AddControllers();

            // configure strongly typed settings objects
            var appSettingsSection = Configuration.GetSection("AppSettings");
            services.Configure&lt;AppSettings&gt;(appSettingsSection);

            // configure jwt authentication
            var appSettings = appSettingsSection.Get&lt;AppSettings&gt;();
            var key = Encoding.ASCII.GetBytes(appSettings.Secret);
            services.AddAuthentication(x =&gt;
            {
                x.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                x.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
            })
            .AddJwtBearer(x =&gt;
            {
                x.RequireHttpsMetadata = false;
                x.SaveToken = true;
                x.TokenValidationParameters = new TokenValidationParameters
                {
                    ValidateIssuerSigningKey = true,
                    IssuerSigningKey = new SymmetricSecurityKey(key),
                    ValidateIssuer = false,
                    ValidateAudience = false
                };
            });

            // configure DI for application services
            services.AddScoped&lt;IUserService, UserService&gt;();
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            app.UseRouting();

            // global cors policy
            app.UseCors(x =&gt; x
                .AllowAnyOrigin()
                .AllowAnyMethod()
                .AllowAnyHeader());

            app.UseAuthentication();
            app.UseAuthorization();
            
            app.UseEndpoints(endpoints =&gt; {
                endpoints.MapControllers();
            });
        }
    }
}</pre>
<p>&nbsp;</p>
<h3><strong>ASP.NET Core JWT Web Api csproj</strong></h3>
<p>Csproj (C# project) dosyası bir MSBuild tabanlı bir dosyadır ve target framework ve Nuget paketlerinin versiyonları ve bağımlılık bilgilerini içerir.</p>
<pre class="prettyprint lang-xml" data-start-line="1" data-visibility="visible" data-highlight="" data-caption="">&lt;Project Sdk="Microsoft.NET.Sdk.Web"&gt;
  &lt;PropertyGroup&gt;
    &lt;TargetFramework&gt;netcoreapp3.0&lt;/TargetFramework&gt;
  &lt;/PropertyGroup&gt;
  &lt;ItemGroup&gt;
    &lt;PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="3.0.0" /&gt;
    &lt;PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="5.5.0" /&gt;
  &lt;/ItemGroup&gt;
&lt;/Project&gt;</pre>
<p>&nbsp;</p>
<h3></h3>
<h3><strong>ASP.NET Core JWT Authentication API&#8217;nin Postman ile Test Edilmesi</strong></h3>
<ul>
<li><em>http://localhost:40000/users/authenticate</em> adresinini POST yöntemiyle test etmeliyiz. User Controller&#8217;da tanımlı authenticate methodumuzu hatırlayalım. HttpPost attribute&#8217;a sahip, valid bir AuthenticateModel nesnesi istemektedir. Postman query editörümüz aşağıdaki gibi görünecektir.(200 OK response&#8217;u ile birlikte)</li>
</ul>
<p>&nbsp;</p>
<p><img wpfc-lazyload-disable="true" loading="lazy" class="alignnone size-full wp-image-815" src="https://dinamiknetwork.com/wp-content/uploads/2019/12/authentication_request_and_response_query_editor.jpg" alt="authentication_request_and_response_with_postman" width="1555" height="559" srcset="https://dinamiknetwork.com/wp-content/uploads/2019/12/authentication_request_and_response_query_editor.jpg 1555w, https://dinamiknetwork.com/wp-content/uploads/2019/12/authentication_request_and_response_query_editor-768x276.jpg 768w, https://dinamiknetwork.com/wp-content/uploads/2019/12/authentication_request_and_response_query_editor-1536x552.jpg 1536w, https://dinamiknetwork.com/wp-content/uploads/2019/12/authentication_request_and_response_query_editor-850x306.jpg 850w" sizes="(max-width: 1555px) 100vw, 1555px" /></p>
<p>&nbsp;</p>
<h3><strong>ASP.NET Core JWT Authentication API&#8217;nin Authentcated Methodunun Test Edilmesi</strong></h3>
<ul>
<li>Token bilgisini kullanıcı adı ve şifresiyle aldıktan sonra, Authorization sekmesinde, Bearer token sekmesindeki Token için ayrılmış olan alana yapıştırıyoruz. HttpGet attribute&#8217;ı ile işaretlenmiş olan GetAll methodu için Get yöntemini kullanarak istek yapmamız gerekiyor. Böylece request alanları aşağıdaki gibi görünüyor.</li>
</ul>
<p><img wpfc-lazyload-disable="true" loading="lazy" class="alignnone size-full wp-image-817" src="https://dinamiknetwork.com/wp-content/uploads/2019/12/write_token_for_getusers_method.jpg" alt="" width="1545" height="297" srcset="https://dinamiknetwork.com/wp-content/uploads/2019/12/write_token_for_getusers_method.jpg 1545w, https://dinamiknetwork.com/wp-content/uploads/2019/12/write_token_for_getusers_method-768x148.jpg 768w, https://dinamiknetwork.com/wp-content/uploads/2019/12/write_token_for_getusers_method-1536x295.jpg 1536w, https://dinamiknetwork.com/wp-content/uploads/2019/12/write_token_for_getusers_method-850x163.jpg 850w" sizes="(max-width: 1545px) 100vw, 1545px" /></p>
<p>&nbsp;</p>
<p>Token&#8217;ımız kabul ediliyor ve kullanıcı bilgilerine ulaşıyoruz.</p>
<p><img wpfc-lazyload-disable="true" loading="lazy" class="size-full wp-image-816" src="https://dinamiknetwork.com/wp-content/uploads/2019/12/get_users_req_resp.jpg" alt="" width="1554" height="590" srcset="https://dinamiknetwork.com/wp-content/uploads/2019/12/get_users_req_resp.jpg 1554w, https://dinamiknetwork.com/wp-content/uploads/2019/12/get_users_req_resp-768x292.jpg 768w, https://dinamiknetwork.com/wp-content/uploads/2019/12/get_users_req_resp-1536x583.jpg 1536w, https://dinamiknetwork.com/wp-content/uploads/2019/12/get_users_req_resp-850x323.jpg 850w" sizes="(max-width: 1554px) 100vw, 1554px" /></p>
<p>Asp.net kategorisin diğer konulara <a href="https://dinamiknetwork.com/k/yazilim/diller/c/">buradan</a> ulaşabilirsiniz.</p>
<p>The post <a rel="nofollow" href="https://dinamiknetwork.com/asp-net-core-3-0-ile-jwt-uygulamasi/">ASP.NET Core 3.0 ile JWT Uygulaması</a> appeared first on <a rel="nofollow" href="https://dinamiknetwork.com">Dinamik Network</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://dinamiknetwork.com/asp-net-core-3-0-ile-jwt-uygulamasi/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
	</channel>
</rss>
