Аутентификация веб-сайта по веб-API - PullRequest
0 голосов
/ 16 апреля 2020

У меня следующий сценарий с net core 3. Веб-сайт со страницей входа. Эта страница входа в систему отправляет пользователя и пароль в веб-API, который отвечает токеном JWT, если учетные данные верны.

Как я могу теперь установить моего веб-пользователя как аутентифицированного? как я могу установить требования веб-пользователя с утверждениями, которые я получаю от токена API?

Нужно ли добавлять какие-либо службы при запуске чего-либо подобного?

Не могли бы вы предоставить мне с любым базовым c образцом того, как это сделать, или с любой документацией?

Спасибо

Ответы [ 2 ]

1 голос
/ 17 апреля 2020

Вы можете использовать cook ie аутентификация :

  1. В методе Startup.ConfigureServices создайте службы промежуточного ПО аутентификации с AddAuthentication и AddCookie методы:

    services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
            .AddCookie(options =>
            {
                options.LoginPath = "/Account/Login";
            });
    

    и включить промежуточное ПО в Configure:

    app.UseAuthentication();
    app.UseAuthorization();
    
  2. А в действии, которому пользователь отправляет учетные данные, вы можете отправить http запрос к веб-API с учетными данными, веб-API подтвердит учетные данные и вернет токен jwt, ваше веб-приложение затем расшифрует токен и войдет в систему как:

    var stream = "[token]";
    var handler = new JwtSecurityTokenHandler();
    
    var tokenS = handler.ReadToken(stream) as JwtSecurityToken;
    
    
    var claimsIdentity = new ClaimsIdentity(
        tokenS.Claims, CookieAuthenticationDefaults.AuthenticationScheme);
    
    var authProperties = new AuthenticationProperties
    {
    
        RedirectUri = "/Home/Privacy",
    
    };
    
    await HttpContext.SignInAsync(
        CookieAuthenticationDefaults.AuthenticationScheme,
        new ClaimsPrincipal(claimsIdentity),
        authProperties);
    
0 голосов
/ 16 апреля 2020

В зависимости от вашего внешнего интерфейса, вам нужно выяснить, как декодировать JWT, который вы получили, чтобы получить нужные вам значения.

Вот несколько вещей, опять же в зависимости от того, кто вы использование на внешней стороне

C# https://developer.okta.com/blog/2019/06/26/decode-jwt-in-csharp-for-authorization

NPM Пакет для SPA https://www.npmjs.com/package/jwt-decode

Вот еще один хороший ресурс для JWT https://jwt.io/

Вы можете взять JWT, который вы получили, чтобы просмотреть значения, которые в нем

...