#api #asp.net-core #asp.net-identity #identityserver4
#API #asp.net-core #asp.net-identity #identityserver4
Вопрос:
У меня есть один ASP.NET Ядро 3.1.8 веб-приложение, которое использует ASP.NET Личность. Теперь я добавил некоторый вызываемый извне REST API.
Я застрял на том, как добавить аутентификацию на основе токена (?) в мой API. Кажется, что ASP.NET Identity не поддерживает аутентификацию по API. В моем старом веб-приложении .NET Framework я использовал
app.UseOAuthBearerTokens(OAuthOptions);
итак, у меня была конечная точка токена, где внешний клиент мог запрашивать действительный токен.
Теперь я прочитал о том, что для аутентификации по API я должен использовать либо AD, либо AD B2C, либо IdentityServer 4. Я согласен с опцией IdentityServer 4, но что-то не ясно
- IdentityServer полностью заменит мой ASP.NET Личность? Я все еще хочу использовать пользовательский интерфейс входа и мою существующую интерактивную логику входа и пользовательский интерфейс.
- Я читал о подключении ASP Identity к IdentityServer 4. Так должен ли я интегрировать свой существующий идентификатор ASP с IdentityServer 4?
- Можно ли размещать IdentityServer 4 в том же веб-приложении, где размещены пользовательский интерфейс и API?
- Я попытался прочитать ASP.NET Исходные данные основного репозитория как 3.1.8, так и 5.0.0-rc.1, чтобы получить некоторое направление. Я бы не хотел идти в каком-то направлении, которое будет считаться неоптимальным в следующем выпуске .NET 5. Я знаю, что есть совершенно другой способ решить эту проблему: AD или AD B2C, и у меня также есть шаблон решения для этого. В качестве альтернативы я также хотел бы иметь «автономное» решение, поэтому я инвестировал в ASP Identity. Каким будет правильное будущее направление на этом пути (автономное) для реализации аутентификации внешнего API?
Ответ №1:
Для защиты самого API вы обычно используете следующее:
services.AddAuthentication("Bearer")
.AddJwtBearer("Bearer", options =>
{
options.Authority = "https://localhost:5001";
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateAudience = false
};
});
Я рекомендую, чтобы, если вы используете IdentityServer, вы должны поместить его в свой собственный сервис, потому что в противном случае действительно сложно понять, что происходит и кто что делает.
IdentityServer не имеет дела с пользователями, поэтому вам необходимо реализовать базу данных пользователей (регистрация / забытый пароль …) самостоятельно. Вы можете использовать ASP.NET Идентичность для этого.
IdentityServer полностью заменит мой ASP.NET Личность?
Я бы сказал, что это зависит от ваших потребностей, в некоторых случаях IdentityServer заменяет ASP.NET Идентичность, а в некоторых случаях и нет. Если у вас есть только одна служба для защиты, то IdentityServer, вероятно, излишен, потому что есть чему поучиться.