Я пытаюсь добавить авторизацию к своему Asp. Net Core Api. Я использую Asp. Net Core Identity. Я настроил аутентификацию следующим образом:
services.AddDefaultIdentity<ApplicationUser>(options => options.SignIn.RequireConfirmedAccount = true)
.AddEntityFrameworkStores<DbContext>();
services.AddAuthentication()
.AddTwitter(o =>
{
o.ConsumerKey = Configuration["Authentication:Twitter:ConsumerAPIKey"];
o.ConsumerSecret = Configuration["Authentication:Twitter:ConsumerSecret"];
o.RetrieveUserDetails = true;
})
.AddIdentityServerJwt();
services.AddAuthorization(o =>
{
o.DefaultPolicy = new AuthorizationPolicyBuilder(CookieAuthenticationDefaults.AuthenticationScheme)
.RequireAuthenticatedUser()
.Build();
});
services.AddIdentityServer()
.AddApiAuthorization<ApplicationUser, DbContext>();
И:
app.UseRouting();
app.UseAuthentication();
app.UseIdentityServer();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
В моем контроллере я добавил атрибут Authorize:
[ApiController]
[Route("[controller]/[action]")]
[Authorize]
public class RestrictedController : ControllerBase
похоже, аутентификация работает - я могу войти в систему с помощью твиттера и получить идентификатор текущего субъекта. Тем не менее, кажется, что нет никакой разницы, вошел ли я в систему или нет, я все еще могу получить доступ к контроллеру. Я что-то пропустил?