This repo contains a .net framework [ windows only 4.8 and older ] core library that i bundle into a nuget package for easy consumption and updating. See the newer myusrn.dnc.core package for a .net core runtime based offering that targets the current microsoft authentication library [msal] instead of the outgoing azuread authentication library [adal] package with the TokenCache implementations.
Using nuget.org publicly accessible package feed versus a visual studio team services [vsts], pka visual studio online [vso], everyone in account only accessible package feed.
So far this package includes:
-
a RouteExAttribute implementation to enable use of query string parameter, in addition to out of the box [oob] provided request url, based web api versioning support
-
a redis cache based app TokenCache implemenation to facilitate openid connect [oidc] and on-behalf of token caching in confidential web apps using azuread authentication library [adal] and running across multiple servers
-
a file based based user TokenCache implemenation to facilitate oauth refresh token caching in public mobile/native/spa apps using azuread authentication library [adal]
// GET api/values or api/v1.0/values or api/values?api-version=1.0
[Route("api/v1.0/values"), RouteEx("api/values", "1.0")]
public IEnumerable<string> Get() { . . . }
// GET api/v2.0/values or api/values?api-version=2.0
[Route("api/v2.0/values"), RouteEx("api/values", "2.0")]
public IEnumerable<string> GetV2() { . . . }
var authority = "https://login.microsoftonline.com/myaadtenant.onmicrosoft.com"
var userId = context.AuthenticationTicket.Identity.FindFirst("http://schemas.microsoft.com/identity/claims/objectidentifier").Value;
AuthenticationContext acWebApp = new AuthenticationContext(authority, new AzRedisTokenCache(userId));
continuous integration [ or delivery ] nuget package generation is carried out using vsts hosted build and release management nuget package & publish tasks
localhost nuget package generation is carried out using following command:
nuget pack Core\Core.csproj -IncludeReferencedProjects -Symbols -OutputDirectory %temp%\packages -Prop Configuration=Release
and for reviewing package output, along with forcing use of symbols package output use following command:
move /y %temp%\packages\MyUsrn.Dnx.Core.<version>.nupkg %temp%\packages\MyUsrn.Dnx.Core.<version>.nupkg.zip
or to enable localhost nuget package dependency update every time you build the following project PostBuildEvent setting:
set nugetExe=<some path not currently included system path environment variable>\NuGet.exe
if /i "$(BuildingInsideVisualStudio)" == "true" if /i "$(ConfigurationName)" == "debug" (
%nugetExe% pack $(ProjectPath) -IncludeReferencedProjects -OutputDirectory %temp%\packages -Properties Configuration=$(ConfigurationName) -Symbols
)
localhost nuget package publishing is carried out using following command:
nuget setApiKey <nuget.org/symbolsource.org apikey>
nuget push %temp%\packages\MyUsrn.Dnx.Core.<version>.nupkg [ -Source https://api.nuget.org/v3/index.json ]
where presence of symbols.nupkg will cause the following to also execute:
nuget push %temp%\packages\MyUsrn.Dnx.Core.<version>.symbols.nupkg [ -Source https://nuget.smbsrc.net/ ]
where https://nuget.smbsrc.net/ is the feed url for symbolsource.org packages
or localhost nuget package publishing, to vsts account feeed, is carried out using following command:
nuget push %temp%\packages\MyUsrn.Dnx.Core.<version>.symbols.nupkg -Source https://<account>.pkgs.visualstudio.com/DefaultCollection/_packaging/<feed>/nuget/v3/index.json -ApiKey VSTS
for redis cache learning and expermintation see intro to redis using redis-cli.exe for windows found at MsOpenTech redis for windows | releases | latest release | downloads | Redis-x64-3.0.500.zip