使用ASP NET Core身份验证自动化/服务帐户

时间:2019-04-04 14:26:00

标签: c# authentication asp.net-core asp.net-identity service-accounts

我有一个ASP Net core API应用程序,具有用于用户和声明管理的Identity Core和作为身份验证中间件的Microsoft.AspNetCore.Authentication。我正在使用JWT中间件来发行承载令牌。

services.AddAuthentication(options =>
            {
                options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
                options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
            })
            .AddJwtBearer(cfg =>
            {
                cfg.RequireHttpsMetadata = false;
                cfg.SaveToken = true;
                cfg.TokenValidationParameters = new TokenValidationParameters
                {
                    ValidIssuer = Configuration["JwtIssuer"],
                    ValidAudience = Configuration["JwtIssuer"],
                    IssuerSigningKey = issuerSigningKey,
                    ClockSkew = TimeSpan.Zero // remove delay of token when expire
                };
            });

这对于用户名/密码方案很好用。现在,我想使用另一个API(Azure Logic应用程序)对具有受保护端点的ASP Core API进行一些REST调用。

我正在寻找有关如何实现这一目标的指导。我有两个想法:

  1. 在身份表中创建一个用户,该用户将充当服务/自动化帐户,与普通人类用户相同。优势-无需更改。缺点-听起来有些古怪。
  2. 创建某种加密的字符串/令牌,将其保存在API app.settings中,并要求使用者API在标头中传递它。优点-易于实现,缺点-不确定如何与JWT承载身份验证管道一起使用。另外,听起来有些静态和不安全。
  3. 实施类似 App ID和Secret 之类的内容。优势-似乎是一种好习惯,可以针对多个Apps(消费者)进行扩展。缺点-我不知道如何使用ASP核心身份以及JWT管道来实现它。

我真的很感谢一些指导。

0 个答案:

没有答案