【问题标题】:How to change default token provider in Identity service如何更改身份服务中的默认令牌提供程序
【发布时间】:2020-04-20 08:25:24
【问题描述】:

我有 2 个项目 API 和 Auth Server 使用 asp.net core 3.1 。在 API 项目中,我使用身份服务器 4 令牌验证来验证令牌。我也在 API 项目中使用身份。

下面是api项目中代币验证的代码

 var authAuthority = "https://localhost:5000";   // Configuration["BlazorBoilerplate:IS4ApplicationUrl"].TrimEnd('/');

       var authBuilder = services.AddAuthentication(options =>
        {
            options.DefaultScheme = IdentityServerAuthenticationDefaults.AuthenticationScheme;
        })
       .AddIdentityServerAuthentication(options =>
       {
           options.Authority = authAuthority;
           options.SupportedTokens = SupportedTokens.Jwt;
           options.RequireHttpsMetadata = false;
           options.ApiName = "weatherapi";
       });

令牌验证后,用户声明显示在 httpContext.User.Identity 对象中。请参考屏幕截图。

如果我在 ConfigureServices 类的下面代码中添加了身份服务。

public void ConfigureServices(IServiceCollection services)
        {

            services.AddIdentity<User, Role>()
          .AddRoles<Role>()
          .AddEntityFrameworkStores<CBSContext>()
          .AddDefaultTokenProviders();
        }

添加上述asp.net身份服务后,AuthorizationHandlerContext显示为空。身份服务和身份服务器令牌验证之间是否有任何关系。

  1. 身份验证服务器中的用户身份验证 --- 完美运行
  2. 我需要在 API 项目中使用身份的用户/角色管理器。 我只是想将 services.AddDefaultIdentity 更改为 i 身份服务器 jwt 验证怎么做?

    请推荐..

【问题讨论】:

    标签: asp.net-core asp.net-identity ef-core-3.0


    【解决方案1】:

    *> 加入上述asp.net身份服务后,

    httpContext.User.Identity (cliams) 显示为空.. 有没有 身份服务和身份服务器令牌之间的关系 验证。请建议..* 是的: 参考这张图片:https://identityserver4.readthedocs.io/en/latest/_images/middleware.png (提醒https://identityserver4.readthedocs.io/en/latest/_images/protocols.png

    添加时:

    services.AddIdentity<User, Role>() .AddRoles<Role>() .AddEntityFrameworkStores<CBSContext>() .AddDefaultTokenProviders();

    对于您的 API,您还说您自己存储令牌。请记住身份验证和授权是两个不同的概念(更多信息:Big Picture

    您可以在您的 API 中对 i.ex 使用身份验证。验证呼叫者是呼叫者(身份)。但是在您所说的验证的其他地方运行您的授权服务器。

    但是,当您使用该代码时,您是在说您将令牌存储在该 DBContext 中。

    您可以拥有 Authz。和认证。在您的 API 上并将其用于说客户端登录和声明等。但您也可以说您依赖不同的服务器进行 Authz。部分,以便您联合该检查。 (对不起,答案太长了,我对 SO 的第一反应)

    【讨论】:

    • @非常感谢..实际上在 Auth 服务器项目身份验证(仅登录)中工作正常......但我需要在 API 中创建用户、创建角色等,所以我还需要在 API 中使用身份......如何在 API 项目中使用用户/角色管理器 ..?
    • 我已经更新了问题..请检查...我只需要身份服务来创建用户和角色而不是身份验证...
    • 您需要在前端通过依赖注入(DI)使用 UserManager 和 RoleManager:ASP.NET Core with Identity
    猜你喜欢
    • 1970-01-01
    • 2013-06-07
    • 2022-01-08
    • 2017-06-19
    • 1970-01-01
    • 1970-01-01
    • 2019-06-03
    • 2021-04-10
    • 1970-01-01
    相关资源
    最近更新 更多