具有AspNetIdentity的IdentityServer4-如何管理用户

时间:2019-03-20 15:29:44

标签: c# asp.net-core identityserver4

我已经将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项目来处理它。

0 个答案:

没有答案