Как авторизовать запросы с помощью x-auth-token в его заголовке, используя asp.net core api? - PullRequest
0 голосов
/ 08 июля 2019

Я сгенерировал токен, включающий информацию о пользователе и ее роли, используя основной веб-интерфейс asp.net, и получил его на клиенте, затем поместил его в x-auth-token в заголовке запроса. Как я могу авторизовать пользователя (с его ролями) в контроллерах и действиях api asp.net? Моя настройка в файле startup.cs подобна приведенной ниже, но я не могу поймать запрос в своем действии!

var securityKey = Environment.GetEnvironmentVariable("SECURITY_KEY");
var symmetricSecurityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(securityKey));

services
    .AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddJwtBearer(options =>
    {
      options.TokenValidationParameters = new TokenValidationParameters()
              {
               ValidateIssuer = true,
               ValidateAudience = true,
               ValidateIssuerSigningKey = true,

               ValidIssuer = "shoniz.com",
               ValidAudience = "readers",
               IssuerSigningKey = symmetricSecurityKey
              };
    });

1 Ответ

0 голосов
/ 08 июля 2019

Код в вашем примере - это настройки аутентификации (схема JWT). Во-первых, вы должны добавить промежуточное программное обеспечение, которое будет аутентифицировать пользователя. Эта часть кода должна присутствовать в Startup.cs (Configure() метод).

app.UseAuthentication();

После вызова этого промежуточного программного обеспечения учитываются все схемы аутентификации. Когда аутентификация пройдет успешно, будет установлено HttpContext.User (включая все ваши претензии по проблемам).

Вторая часть - это авторизация. Самый простой способ - использовать атрибут [Authorize], который вы можете использовать в качестве аннотации вместе с вашими методами действий и контроллерами. Вы можете добавить собственные имена ролей или ограничения политики.

[Authorize(Roles = "admin")]
public class CmsControllerBase : Controller
{
}
...