مشکل با احراز هویت

bahadori

عضویت : 1397/12/23 پرسش ها : 1 پاسخ ها : 1

مشکل با احراز هویت

ارسال شده در : ‫۱۰ ماه قبل، سه شنبه ۳ اردیبهشت ۱۳۹۸، ساعت ۱۳:۱۷

سلام

من از jwt برای احزار هویت میخوام استفاده کنم اما روت test که اتریبیوت authorize براش گذاشتم همیشه 401 برمیگردونه

 

کد های startup

            #region Authentication

            services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
                .AddJwtBearer(options =>
                {
                    options.TokenValidationParameters = new TokenValidationParameters()
                    {
                        ValidateIssuer = true,
                        ValidateAudience = false,
                        ValidateLifetime = true,
                        ValidateIssuerSigningKey = true,
                        ValidIssuer = "https://localhost:44312",
                        IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("Test API For JWT Authentication in ASP.NET Core 2.2"))
                    };
                });

            services.AddCors(options =>
            {
                options.AddPolicy("Cors", builder =>
                {
                    builder.AllowAnyOrigin()
                        .AllowAnyHeader()
                        .AllowAnyMethod()
                        .Build();
                });
            });

            #endregion

و

app.UseCors("Cors");
            app.UseAuthentication();

 

بخش مربوط به ایجاد توکن:

 

//Setup JWT Options
            var signature = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("Test API For JWT Authentication in ASP.NET Core 2.2"));
            var header = new SigningCredentials(signature, SecurityAlgorithms.HmacSha256);
            var payload = new JwtSecurityToken(
                issuer: "https://localhost:44312",
                claims: new List<Claim>
            {
                new Claim(ClaimTypes.Name, userInfo.Username)

            } , expires: DateTime.Now.AddMinutes(30),
            signingCredentials: header);

            var token = new JwtSecurityTokenHandler().WriteToken(payload);

            return token;

 

متد تست

 

[Route("test")]
        [HttpPost]
        [Authorize]
        public object Test()
        {
            return "test is ok";
        }

 

توی postman هم در هدر و هم بادی، توکن روبه نام های : token, access_token,authentication و با پیشوند "Bearer " ارسال کردم اما دائما خطای 401 دارم

ایمان مدائنی

عضویت : 1396/09/10 پرسش ها : 5 پاسخ ها : 9428
ارسال شده در :‫۱۰ ماه قبل، سه شنبه ۳ اردیبهشت ۱۳۹۸، ساعت ۱۳:۵۳

سلام 

کد رو دیباگ کنید تا مشکل پیدا بشه 

با کدهای نمونه من هم مقایسه کنید

0 تشکر

bahadori

عضویت : 1397/12/23 پرسش ها : 1 پاسخ ها : 1
ارسال شده در :‫۱۰ ماه قبل، سه شنبه ۳ اردیبهشت ۱۳۹۸، ساعت ۱۴:۲۰

با چه اسمی باید توکن رو ارسال کرد؟

این کدهایی ک فرستادم مشابه کد خودتون هست و فقط اسم متغییر ها و ادرس issuer متفاوت هست

0 تشکر

ایمان مدائنی

عضویت : 1396/09/10 پرسش ها : 5 پاسخ ها : 9428
ارسال شده در :‫۱۰ ماه قبل، سه شنبه ۳ اردیبهشت ۱۳۹۸، ساعت ۱۵:۱۱

یه نمونه دیگه در سایت barnamenevis.ir هست 

اون رو تست کنید

0 تشکر

برای ارسال پاسخ باید وارد شوید و یا در سایت عضو شوید