我已经将AspNetIdentity集成到IdentityServer4中以进行用户管理。以前,我使用的是Auth0,并且在我的Web应用程序中有一个管理页面来更改用户声明,该页面依次调用Auth0的管理API来更改用户声明值。
使用IdentityServer4时,由于我集成了Identity以进行用户管理,因此我不确定该怎么做。我当然可以使用UserManager来修改用户,但是如何创建授权的API来做到这一点呢?最初,我尝试与客户端凭据客户端一起在IdentityServer4中创建API资源,在Identityserver4项目上设置jwtbearer授权(权限/受众指向我创建的API资源),并在API控制器上添加authorize属性(在此处提取IDP级别的身份用户。
这不起作用,因为如果我添加自己的授权,则IdentityServer4中间件将不再起作用。我是否必须最终创建一个配置了Identity的单独的API,以便可以访问基础表?我对此没有问题,但想检查在IDP级别是否有可能。
不起作用:
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddGoogle("Google", options =>
{
options.SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme;
options.ClientId = "...";
options.ClientSecret = "...";
})
.AddFacebook("Facebook", options =>
{
options.SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme;
options.ClientId = "...";
options.ClientSecret = "...";
})
.AddJwtBearer(options =>
{
options.Authority = "https://localhost:44367";
options.Audience = "idpapi";
options.RequireHttpsMetadata = true;
});
基本上,我想要一个非常简单的API控制器来返回用户数据并更新用户声明。我需要只有具有管理员角色的特定用户才能访问此API控制器。如果我可以在IDP级别(因为已经配置了Identity)来完成此操作,那将是理想的-但我遇到了为IDP api控制器添加身份验证的问题。如果没有,我可以创建一个单独的API项目来处理它。