Coder Social home page Coder Social logo

vahidn / aspnetcore2jwtauthentication Goto Github PK

View Code? Open in Web Editor NEW
300.0 31.0 104.0 2.39 MB

Jwt Authentication without ASP.NET Core Identity

License: Apache License 2.0

C# 17.26% Batchfile 0.20% CSS 0.05% HTML 3.08% JavaScript 23.82% TypeScript 8.78% Smalltalk 0.01% SCSS 46.80%
jwt identity asp-net-core json-web-token

aspnetcore2jwtauthentication's Introduction

Jwt Authentication without ASP.NET Core Identity 7x

GitHub Actions status

jwtauth

A Jwt based authentication sample for ASP.NET Core 7x without using the Identity system. It includes:

  • Users and Roles tables with a many-to-may relationship.
  • A separated EF Core data layer with enabled migrations.
  • An EF Core 7x based service layer.
  • A Db initializer to seed the default database values.
  • An account controller with Jwt and DB based login, custom logout and refresh tokens capabilities.
  • 2 sample API controllers to show how user-roles can be applied and used.
  • A Jwt validator service to show how to react to the server side changes to a user's info immediately.
  • An Angular 7.0+ Client. It contains:
    • A JWT-based Login page.
    • Handling how and where to store the tokens.
    • How to handle refresh tokens mechanism, using reactive timers.
    • How to validate the expiration date of a token.
    • How to decode an access token and extract the user's roles from it.
    • Authorizing access to a module via a route guard based on the user's roles.
    • How to hide or display different parts of a page based on the user's roles.
    • Adding a JWT token to the HTTP requests required authorized access automatically.
    • Handling server side unauthorized errors automatically.

How to run the Angular 7.0+ Client

  • Update all of the outdated global dependencies using the npm update -g command.
  • Install the Angular-CLI.
  • Open a command prompt console and then navigate to src/ASPNETCore2JwtAuthentication.AngularClient/ folder.
  • Now run the following commands:
npm update -g
npm install
_2-ng-build-dev.bat
  • Then open another command prompt console and navigate to src/ASPNETCore2JwtAuthentication.WebApp/ folder.
  • Now run the following commands:
dotnet restore
dotnet watch run

aspnetcore2jwtauthentication's People

Contributors

mohsenm01 avatar vahidn avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

aspnetcore2jwtauthentication's Issues

رفع مشکل نال بودن خروجی base.CreateWebHostBuilder()

با سلام و خسته نباشید
برای تغییر "تنظیمات پیش‌فرض برنامه‌ی اصلی" امکان استفاده ازین متد نبوده چون مقدار builder نال بودش

protected override IWebHostBuilder CreateWebHostBuilder()
    {
        var builder = base.CreateWebHostBuilder();
        builder.ConfigureLogging(logging =>
        {
            //TODO: ...
        });
        return builder;
    }

توی این کامنت راه حلی که داده برام کار کرده، خواستم با شما هم به اشتراک بذارم
dotnet/aspnetcore#37680 (comment)

internal class CustomWebApplicationFactory<TProgram> : WebApplicationFactory<TProgram> where TProgram : class
{
    protected override IHost CreateHost(IHostBuilder builder)
    {
        builder.ConfigureHostConfiguration(config =>
        {
            string newConnectionString = "Data Source=DESKTOP-STDR2US;Initial Catalog=MyDb-Test;Integrated Security=true;Encrypt=False;";
            config.AddInMemoryCollection(new Dictionary<string, string> { { "ConnectionStrings:SqlServer:ApplicationDbContextConnection", newConnectionString } });

            //config.AddJsonFile("integrationsettings.json").Build();
        });

        return base.CreateHost(builder);
    }

    protected override void ConfigureWebHost(IWebHostBuilder builder)
    {
        builder.ConfigureTestServices(services =>
        {
            // Don't run `IHostedService`s when running as a test
            services.RemoveAll(typeof(IHostedService));
            services.AddTransient<IStartupFilter, FakeRemoteIpAddressFilter>();
        });
    }
}

Jwt token undefined after page refresh

Request URL:http://localhost:5000/api/MyProtectedApi
Request Method:GET
Status Code:401 Unauthorized
Remote Address:[::1]:5000
Referrer Policy:no-referrer-when-downgrade
Response Headers
view source
Content-Type:text/plain
Date:Fri, 02 Feb 2018 21:53:39 GMT
Server:Kestrel
Transfer-Encoding:chunked
WWW-Authenticate:Bearer error="invalid_token"
Request Headers
view source
Accept:/
Accept-Encoding:gzip, deflate, br
Accept-Language:en-US,en;q=0.9
Authorization:Bearer undefined
Connection:keep-alive
Host:localhost:5000
Referer:http://localhost:5000/
User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36
X-Requested-With:XMLHttpRequest

Login access denied if I open new tab

Summary of the issue

After login if try to open another page in next tab it is asking me to login again. Is this an expected behavior?

Example code/Steps to reproduce:

  • Use google chrome
  • Login to application
  • Right click on "Call Protected Api" link on top and Open in New Tab
  • It will endup in access denied page

Support for multisession

Please can you add support for login using the same user in multiple clients. For example

When I login in the browser 1, I get a valid access_token and refresh_token
Login in the browser 2, I get a valid access_token and refresh_token, but the browser 1 access_token and refresh_token become invalid

***استفاده از وب سرویس بصورت کد شده***

سلام و احترام
من میخوام از وب سرویس های بدون احراز هویتی که تولید کردم فرد دیگه ای نتونه ازشون تو یه برنامه یا سایت دیگه بدون خبر من استفاده کنه.
میخوام تو انگولار آدرس وب سرویس رو هر بار در زمان فراخوانی به روشی مخفی کنم،
و با روش های رمزگذاری خاصی و استفاده از کلید مخفی آدرس وب سرویس رو از
localhost://api/news/get
به
localhost://api/xxxxxx
تبدیل کردم و سمت سرور با استفاده از همون کلید دوباره رمزگشایی و به کنترلر مربوطه ارسال میشه
مشکلم اینه که زمانی که دارم آدرس رو با یک کلید کد میکنم چون سمت کلاینت هست کلید و کل توابع مربوطه قابل مشاهده هست
همچنین مخفی کردن رو سمت اندروید استفاده کردیم و تا حد امکان تونستیم روش رمز گذاری و رمز گشایی را پنهان کنیم حالا سمت انگولار با توجه به کلاینت بودن و قابل مشاهده بودن جی اس ها
پیشنهاد شما برای مخفی سازی،رمز گذاری و رمز گشایی چیه؟
هدف من اینه که کسی نتونه از وب سرویس های من استفاده کنه و مشابه ادرس کد شده مثل
localhost://api/xxxxxx
رو تولید کنه

با تشکر

نحوه ارسال درخواست از کلاینت های ویندوزی یا اندرویدی

من برای ارسال درخواست از کلاینت ویندوزی به سرور
services.AddAntiforgery(x => x.HeaderName = "X-XSRF-TOKEN");
و
app.UseAngularAntiforgeryToken();
و
{
options.Filters.Add(new AutoValidateAntiforgeryTokenAttribute());
});

را غیر فعال کردم و کد زیر درست کار کرد ولی اگر بخواییم به شکلی که برنامه انگولار موجود در خود سورس درخواست ارسال میکنه این کار رو انجام بدیم به چه صورته ؟

ممنون میشم راهنمایی کنید .

var httpWebRequest = (HttpWebRequest)WebRequest.Create("http://localhost:5000/api/account/login");
        httpWebRequest.ContentType = "application/json";
        httpWebRequest.Method = "POST";

        using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
        {

            Dictionary<string, string> dic = new Dictionary<string, string>() {
                {"username","Vahid"},
                {"password","1234"}};
            var json = JsonConvert.SerializeObject(dic);
            streamWriter.Write(json);
            streamWriter.Flush();
            streamWriter.Close();
        }

        var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
        using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
        {
            var result = streamReader.ReadToEnd();
        }

encryptions api response and request

How to encryption response from web api to client.
because my response body and request content are visible in network browser.
And other can visible and use it.

مشکل با [Authorize] و [HttpPost]

متد هایی که به صورت post هستند و دارای ValidateAntiForgeryToken هستند همه خطای badrequest دارد
مثل ChangePasswordController

Google and Facebook

How can i add authorize login with Google and Facebook with json web token in asp.net core and angular ?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.