.Net-Core-Web-Api-Schlüssel

Ich entwickle eine Anwendung, die Benutzer können die Authentifizierung über Benutzername und Kennwort, und wir bieten eine JWT token bekommt dann auf dem server überprüft.

Eine Sache, die ich hinzufügen möchte, ist die Möglichkeit, einen speziellen API-Schlüssel (guid), die die Benutzer verwenden können, wenn die Integration mit dieser Anwendung statt mit einem Benutzernamen und Passwort.

Ich bin nicht sicher, wie dies zu tun, da die Authentifizierung Teil scheint ein bisschen eine "black box" (mit Aspnet-Identität).

Hier ist mein code für die Authentifizierung einrichten.

Start.cs

public void ConfigureServices(IServiceCollection services)
{
    //Add framework services.
    services.AddDbContext<OmbiContext>(options =>
        options.UseSqlite("Data Source=Ombi.db"));

    services.AddIdentity<OmbiUser, IdentityRole>()
        .AddEntityFrameworkStores<OmbiContext>()
        .AddDefaultTokenProviders();

    services.Configure<IdentityOptions>(options =>
    {
        options.Password.RequireDigit = false;
        options.Password.RequiredLength = 1;
        options.Password.RequireLowercase = false;
        options.Password.RequireNonAlphanumeric = false;
        options.Password.RequireUppercase = false;
    });
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, IMemoryCache cache)
{
    var tokenOptions = (IOptions<TokenAuthentication>)app.ApplicationServices.GetService(
        typeof(IOptions<TokenAuthentication>));

    var ctx = (IOmbiContext)app.ApplicationServices.GetService(typeof(IOmbiContext));

    var tokenValidationParameters = new TokenValidationParameters
    {

        ValidateIssuerSigningKey = true,
        IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(tokenOptions.Value.SecretKey)),

        RequireExpirationTime = true,
        ValidateLifetime = true,
        ValidAudience = "Ombi",
        ValidIssuer = "Ombi",
        ClockSkew = TimeSpan.Zero
    };

    app.UseJwtBearerAuthentication(new JwtBearerOptions()
    {
        Audience = "Ombi",
        AutomaticAuthenticate = true,
        TokenValidationParameters =  tokenValidationParameters,

    });
 //....
}

Der obige code funktioniert, wenn ich die [Authorized] Parametern auf Steuerungen und Kontrolle für die Rollen und so.

Jemand eine Idee, wie ich das übergeben kann eine Art von Api-Key header auf alle Anfragen mit diesem speziellen API-Key übergeben werden, die [Authorized] Attribute? (der Schlüssel ist gespeichert in der Db).

Dank

  • stackoverflow.com/questions/31464359/...
  • Nicht sicher, ob das oben gilt es bei der Suche würde ich brauchen, um zu definieren, dass Politik für jeden controller, in diesem Fall die API-Key-header würde dann immer vorhanden sein müssen. Im Grunde Suche ich nach einem Weg, um ein Geheimnis um die server, die autorisiert mich.
  • Sie versorgen den Träger token Authorization-header in der Anfrage. Und je nach Autorisierung-server befinden, müssen Sie, um ihn zu validieren. I. e. In azure-AD-fügen Sie eine api unter appregistration, wenn Sie nur wollen, um zu validieren gegen einen hardcoded key-in server können Sie überprüfen, indem Sie die eigenen Ansprüche validator überprüfen AuthorizationHandler Klasse
InformationsquelleAutor Jamie Rees | 2017-08-21
Schreibe einen Kommentar