Skip to content

Commit 8e812e8

Browse files
authored
Merge pull request #40 from mihirdilip/8.0.0
8.0.0
2 parents 0e7f017 + e6fa978 commit 8e812e8

File tree

45 files changed

+858
-190
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+858
-190
lines changed

LICENSE

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
MIT License
22

3-
Copyright (c) 2022 Mihir Dilip
3+
Copyright (c) 2023 Mihir Dilip
44

55
Permission is hereby granted, free of charge, to any person obtaining a copy
66
of this software and associated documentation files (the "Software"), to deal

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ Easy to use and very light weight Microsoft style API Key Authentication Impleme
77

88
## .NET (Core) Frameworks Supported
99
.NET Framework 4.6.1 and/or NetStandard 2.0 onwards
10-
Multi targeted: net7.0; net6.0; net5.0; netcoreapp3.1; netcoreapp3.0; netstandard2.0; net461
10+
Multi targeted: net8.0; net7.0; net6.0; net5.0; netcoreapp3.1; netcoreapp3.0; netstandard2.0; net461
1111

1212
<br/>
1313

@@ -380,6 +380,7 @@ public void ConfigureServices(IServiceCollection services)
380380
## Release Notes
381381
| Version | &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Notes |
382382
|---------|-------|
383+
|8.0.0 | <ul><li>net8.0 support added</li><li>Sample project for net8.0 added</li><li>ApiKeySamplesClient.http file added for testing sample projects</li><li>Readme updated</li></ul> |
383384
|7.0.0 | <ul><li>net7.0 support added</li><li>Information log on handler is changed to Debug log when API Key is not found on the request</li><li>Added package validations</li><li>Sample project for net7.0 added</li><li>Readme updated</li><li>Readme added to package</li></ul> |
384385
|6.0.1 | <ul><li>net6.0 support added</li><li>Information log on handler is changed to Debug log when IgnoreAuthenticationIfAllowAnonymous is enabled</li><li>Sample project added</li><li>Readme updated</li><li>Copyright year updated on License</li></ul> |
385386
|5.1.0 | <ul><li>WWW-Authenticate challenge header now returns SchemeName as scheme part instead of ApiKeyOptions.KeyName</li><li>WWW-Authenticate challenge header now has 2 new parameters 'in' and 'key_name' in value part</li><li>ForLegacyUseKeyNameAsSchemeNameOnWWWAuthenticateHeader added to the ApiKeyOptions</li><li>In Authorization Header now able to use either SchemeName or ApiKeyOptions.KeyName when matching AuthorizationHeader Scheme</li><li>Visibility of all the handlers changed to public [#21](https://github.com/mihirdilip/aspnetcore-authentication-apikey/issues/21)</li><li>Tests added</li><li>Readme updated</li><li>Copyright year updated on License</li></ul> |

samples/ApiKeySamplesClient.http

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
@HostAddress = https://localhost:44304
2+
@ApiKey = Key1
3+
4+
# Get Values No Auth
5+
GET {{HostAddress}}/api/values
6+
Accept: application/json
7+
8+
###
9+
10+
# Get Values
11+
GET {{HostAddress}}/api/values
12+
Accept: application/json
13+
X-API-Key: {{ApiKey}}
14+
15+
###
16+
17+
# Claims
18+
GET {{HostAddress}}/api/values/claims
19+
Accept: application/json
20+
X-API-Key: {{ApiKey}}
21+
22+
###
23+
24+
# Forbid
25+
GET {{HostAddress}}/api/values/forbid
26+
Accept: application/json
27+
X-API-Key: {{ApiKey}}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
// This file is used by Code Analysis to maintain SuppressMessage
2+
// attributes that are applied to this project.
3+
// Project-level suppressions either have no target or are given
4+
// a specific target and scoped to a namespace, type, member, etc.
5+
6+
using System.Diagnostics.CodeAnalysis;
7+
8+
[assembly: SuppressMessage("Style", "IDE0028:Simplify collection initialization", Justification = "<Pending>", Scope = "member", Target = "~F:SampleWebApi.Repositories.InMemoryApiKeyRepository._cache")]
9+
[assembly: SuppressMessage("Style", "IDE0090:Use 'new(...)'", Justification = "<Pending>", Scope = "member", Target = "~F:SampleWebApi.Repositories.InMemoryApiKeyRepository._cache")]
10+
[assembly: SuppressMessage("Style", "IDE0290:Use primary constructor", Justification = "<Pending>", Scope = "member", Target = "~M:SampleWebApi.Models.ApiKey.#ctor(System.String,System.String,System.Collections.Generic.List{System.Security.Claims.Claim})")]
11+
[assembly: SuppressMessage("Style", "IDE0028:Simplify collection initialization", Justification = "<Pending>", Scope = "member", Target = "~M:SampleWebApi.Models.ApiKey.#ctor(System.String,System.String,System.Collections.Generic.List{System.Security.Claims.Claim})")]
12+
[assembly: SuppressMessage("Style", "IDE0290:Use primary constructor", Justification = "<Pending>", Scope = "member", Target = "~M:SampleWebApi.Services.ApiKeyProvider.#ctor(Microsoft.Extensions.Logging.ILogger{AspNetCore.Authentication.ApiKey.IApiKeyProvider},SampleWebApi.Repositories.IApiKeyRepository)")]
13+
14+
[assembly: SuppressMessage("Usage", "CA2254:Template should be a static expression", Justification = "<Pending>", Scope = "member", Target = "~M:SampleWebApi.Services.ApiKeyProvider.ProvideAsync(System.String)~System.Threading.Tasks.Task{AspNetCore.Authentication.ApiKey.IApiKey}")]
15+
Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
1-
using AspNetCore.Authentication.ApiKey;
1+
#pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type.
2+
using AspNetCore.Authentication.ApiKey;
23
using System.Collections.Generic;
34
using System.Security.Claims;
45

56
namespace SampleWebApi.Models
67
{
78
class ApiKey : IApiKey
89
{
9-
public ApiKey(string key, string owner, List<Claim> claims = null)
10-
{
10+
public ApiKey(string key, string owner, List<Claim> claims = null)
11+
{
1112
Key = key;
1213
OwnerName = owner;
1314
Claims = claims ?? new List<Claim>();
@@ -18,3 +19,4 @@ public ApiKey(string key, string owner, List<Claim> claims = null)
1819
public IReadOnlyCollection<Claim> Claims { get; }
1920
}
2021
}
22+
#pragma warning restore CS8625 // Cannot convert null literal to non-nullable reference type.

samples/SampleWebApi.Shared/Repositories/IApiKeyRepository.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,6 @@ namespace SampleWebApi.Repositories
88
/// </summary>
99
public interface IApiKeyRepository
1010
{
11-
Task<IApiKey> GetApiKeyAsync(string key);
11+
Task<IApiKey> GetApiKeyAsync(string key);
1212
}
1313
}
Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using AspNetCore.Authentication.ApiKey;
1+
#pragma warning disable CS8619 // Nullability of reference types in value doesn't match target type.
2+
using AspNetCore.Authentication.ApiKey;
23
using SampleWebApi.Models;
34
using System;
45
using System.Collections.Generic;
@@ -7,21 +8,22 @@
78

89
namespace SampleWebApi.Repositories
910
{
10-
/// <summary>
11-
/// NOTE: DO NOT USE THIS IMPLEMENTATION. THIS IS FOR DEMO PURPOSE ONLY
12-
/// </summary>
13-
public class InMemoryApiKeyRepository : IApiKeyRepository
11+
/// <summary>
12+
/// NOTE: DO NOT USE THIS IMPLEMENTATION. THIS IS FOR DEMO PURPOSE ONLY
13+
/// </summary>
14+
public class InMemoryApiKeyRepository : IApiKeyRepository
1415
{
15-
private List<IApiKey> _cache = new List<IApiKey>
16-
{
16+
private readonly List<IApiKey> _cache = new List<IApiKey>()
17+
{
1718
new ApiKey("Key1", "Admin"),
1819
new ApiKey("Key2", "User"),
1920
};
2021

2122
public Task<IApiKey> GetApiKeyAsync(string key)
2223
{
2324
var apiKey = _cache.FirstOrDefault(k => k.Key.Equals(key, StringComparison.OrdinalIgnoreCase));
24-
return Task.FromResult(apiKey);
25-
}
26-
}
25+
return Task.FromResult(apiKey);
26+
}
27+
}
2728
}
29+
#pragma warning restore CS8619 // Nullability of reference types in value doesn't match target type.

samples/SampleWebApi.Shared/SampleWebApi.Shared.projitems

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
<Import_RootNamespace>SampleWebApi.Shared</Import_RootNamespace>
1010
</PropertyGroup>
1111
<ItemGroup>
12+
<Compile Include="$(MSBuildThisFileDirectory)GlobalSuppressions.cs" />
1213
<Compile Include="$(MSBuildThisFileDirectory)Models\ApiKey.cs" />
1314
<Compile Include="$(MSBuildThisFileDirectory)Services\ApiKeyProvider.cs" />
1415
<Compile Include="$(MSBuildThisFileDirectory)Repositories\InMemoryApiKeyRepository.cs" />

samples/SampleWebApi_2_0/SampleWebApi_2_0.csproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
<PropertyGroup>
44
<TargetFramework>netcoreapp2.0</TargetFramework>
5+
<CheckEolTargetFramework>false</CheckEolTargetFramework>
6+
<NuGetAudit>false</NuGetAudit>
57
</PropertyGroup>
68

79
<ItemGroup>

samples/SampleWebApi_2_2/SampleWebApi_2_2.csproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
<PropertyGroup>
44
<TargetFramework>netcoreapp2.2</TargetFramework>
55
<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
6+
<CheckEolTargetFramework>false</CheckEolTargetFramework>
7+
<NuGetAudit>false</NuGetAudit>
68
</PropertyGroup>
79

810
<ItemGroup>

0 commit comments

Comments
 (0)