Я пытаюсь защитить свой API asp.net с помощью пользовательского System. Проблема в том, что я понятия не имею, как это сделать.
У меня уже есть (простой, но работающий) API. Способ, которым я хочу защитить, заключается в том, что в заголовке аутентификации запроса должен стоять токен. При каждом соединении с моим API должен вызываться метод (тогда метод должен возвращать логическое значение).
Конечно, я мог бы легко вызвать этот метод для каждого HttpRequest ->, но это было бы слишком просто xD.
Я хочу написать "[MyCustomAuth]" (пример) перед ApiController или около того......
Я надеюсь, вы понимаете, что я хотел бы иметь.
Спасибо!
Я думаю, что я не делал что-то другое весь день.....
Тогда, пожалуйста, уточните, что мешает вам реализовать некоторые из найденных вами решений? Ваш вопрос на данный момент не объясняет, с чем у вас возникла проблема.
Хорошо, я попробую еще раз... В Startup у меня есть метод services.AddAuthentication -> этому методу нужны свойства сервера аутентификации (не так ли?) ... но все, что я хочу сделать, это вызвать простой метод, который возвращает true/false Я действительно не хочу создавать AuthServer....
Вы можете использовать IAsyncActionFilter для такого сценария (https://learn.microsoft.com/en-us/aspnet/core/mvc/controllers/filters?view=aspnetcore-5.0)
Пример кода:
public class CustomAuthorizeAttribute : Attribute, IAsyncActionFilter
{
public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
{
//your custom logic...
if (//condition where user is not authenticated based on your custom logic)
{
context.Result = new UnauthorizedResult();
return;
}
await next();
}
}
И вы можете использовать его следующим образом:
[CustomAuthorize]
public class YourController: SomeControllerBase
{
}
Вы пробовали искать «аутентификацию токена asp.net» и просматривали статьи в Интернете? Это довольно распространенная установка, поэтому, если у вас есть более конкретные вопросы, пожалуйста, уточните.