IdentityServer4 中使用 ASP.NET Core Identity 的注意事项

ASP.NET Core Identity 和 IdentityServer4 都是基于 ASP.NET Core 身份认证系统实现的一个组件,

当我们在 IdentityServer4 中集成 ASP.NET Core Identity 这个组件时,会出现一些奇怪的问题,比如看起来已经认证通过,但 WebApi 却返回 404

这是由于 Identity 会注册它自己 AuthenticationScheme,而 IdentityServer4 也会注册自己的 Scheme,我们需要在调用 services.AddAuthentication( options=> { } ) 中替换掉 Identity 的 Scheme,因为我们真正使用的是 IdentityServer4 的 Scheme。

1
2
3
4
5
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = "Bearer";
options.DefaultChallengeScheme = "Bearer";
})

必须在 services.AddIdentity<T>() 之后调用 service.AddAuthentication() 才能覆盖。