Skip to content

Commit 602e3bb

Browse files
authored
Merge pull request #11 from dark-loop/v4-sample
adding v4 sample
2 parents 655890e + b653d11 commit 602e3bb

File tree

9 files changed

+439
-1
lines changed

9 files changed

+439
-1
lines changed

Functions-Authorize.sln

+8
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,11 @@ EndProject
3030
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{6C3D01C4-AFF0-4AE3-ACA1-FDCDF8FD6CE1}"
3131
ProjectSection(SolutionItems) = preProject
3232
.editorconfig = .editorconfig
33+
README.md = README.md
3334
EndProjectSection
3435
EndProject
36+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Darkloop.Azure.Functions.Authorize.SampleFunctions.V4", "sample\Darkloop.Azure.Functions.Authorize.SampleFunctions.V4\Darkloop.Azure.Functions.Authorize.SampleFunctions.V4.csproj", "{0E97CAE1-D5E8-462D-B513-7EF2797C7D48}"
37+
EndProject
3538
Global
3639
GlobalSection(SolutionConfigurationPlatforms) = preSolution
3740
Debug|Any CPU = Debug|Any CPU
@@ -50,6 +53,10 @@ Global
5053
{9AB1B297-FA02-406C-A3E2-979A7CC5C706}.Debug|Any CPU.Build.0 = Debug|Any CPU
5154
{9AB1B297-FA02-406C-A3E2-979A7CC5C706}.Release|Any CPU.ActiveCfg = Release|Any CPU
5255
{9AB1B297-FA02-406C-A3E2-979A7CC5C706}.Release|Any CPU.Build.0 = Release|Any CPU
56+
{0E97CAE1-D5E8-462D-B513-7EF2797C7D48}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
57+
{0E97CAE1-D5E8-462D-B513-7EF2797C7D48}.Debug|Any CPU.Build.0 = Debug|Any CPU
58+
{0E97CAE1-D5E8-462D-B513-7EF2797C7D48}.Release|Any CPU.ActiveCfg = Release|Any CPU
59+
{0E97CAE1-D5E8-462D-B513-7EF2797C7D48}.Release|Any CPU.Build.0 = Release|Any CPU
5360
EndGlobalSection
5461
GlobalSection(SolutionProperties) = preSolution
5562
HideSolutionNode = FALSE
@@ -58,6 +65,7 @@ Global
5865
{47791FF8-5FEA-42BC-8192-5A59D23ADE92} = {D96FC724-6F6E-400E-BCA9-21A8FD44CA1C}
5966
{CB2B4A20-7882-4003-ADEF-E95F72DA3146} = {051D16F8-54BB-482B-B2A9-47E2DA89E6DB}
6067
{9AB1B297-FA02-406C-A3E2-979A7CC5C706} = {53EC585B-CE9B-4E7D-B2E2-F7A9B6DA0FE7}
68+
{0E97CAE1-D5E8-462D-B513-7EF2797C7D48} = {53EC585B-CE9B-4E7D-B2E2-F7A9B6DA0FE7}
6169
EndGlobalSection
6270
GlobalSection(ExtensibilityGlobals) = postSolution
6371
SolutionGuid = {546E3A6C-060C-4630-BEEE-46A1F8715347}

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# functions-authorize
2-
Bringing AuthorizeAttribute Behavior to Azure Functions v3
2+
Bringing AuthorizeAttribute Behavior to Azure Functions v3 and v4 (In-Process)
33

44
It hooks into .NET Core dependency injection container to enable authentication and authorization in the same way ASP.NET Core does.
55

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,264 @@
1+
## Ignore Visual Studio temporary files, build results, and
2+
## files generated by popular Visual Studio add-ons.
3+
4+
# Azure Functions localsettings file
5+
local.settings.json
6+
7+
# User-specific files
8+
*.suo
9+
*.user
10+
*.userosscache
11+
*.sln.docstates
12+
13+
# User-specific files (MonoDevelop/Xamarin Studio)
14+
*.userprefs
15+
16+
# Build results
17+
[Dd]ebug/
18+
[Dd]ebugPublic/
19+
[Rr]elease/
20+
[Rr]eleases/
21+
x64/
22+
x86/
23+
bld/
24+
[Bb]in/
25+
[Oo]bj/
26+
[Ll]og/
27+
28+
# Visual Studio 2015 cache/options directory
29+
.vs/
30+
# Uncomment if you have tasks that create the project's static files in wwwroot
31+
#wwwroot/
32+
33+
# MSTest test Results
34+
[Tt]est[Rr]esult*/
35+
[Bb]uild[Ll]og.*
36+
37+
# NUNIT
38+
*.VisualState.xml
39+
TestResult.xml
40+
41+
# Build Results of an ATL Project
42+
[Dd]ebugPS/
43+
[Rr]eleasePS/
44+
dlldata.c
45+
46+
# DNX
47+
project.lock.json
48+
project.fragment.lock.json
49+
artifacts/
50+
51+
*_i.c
52+
*_p.c
53+
*_i.h
54+
*.ilk
55+
*.meta
56+
*.obj
57+
*.pch
58+
*.pdb
59+
*.pgc
60+
*.pgd
61+
*.rsp
62+
*.sbr
63+
*.tlb
64+
*.tli
65+
*.tlh
66+
*.tmp
67+
*.tmp_proj
68+
*.log
69+
*.vspscc
70+
*.vssscc
71+
.builds
72+
*.pidb
73+
*.svclog
74+
*.scc
75+
76+
# Chutzpah Test files
77+
_Chutzpah*
78+
79+
# Visual C++ cache files
80+
ipch/
81+
*.aps
82+
*.ncb
83+
*.opendb
84+
*.opensdf
85+
*.sdf
86+
*.cachefile
87+
*.VC.db
88+
*.VC.VC.opendb
89+
90+
# Visual Studio profiler
91+
*.psess
92+
*.vsp
93+
*.vspx
94+
*.sap
95+
96+
# TFS 2012 Local Workspace
97+
$tf/
98+
99+
# Guidance Automation Toolkit
100+
*.gpState
101+
102+
# ReSharper is a .NET coding add-in
103+
_ReSharper*/
104+
*.[Rr]e[Ss]harper
105+
*.DotSettings.user
106+
107+
# JustCode is a .NET coding add-in
108+
.JustCode
109+
110+
# TeamCity is a build add-in
111+
_TeamCity*
112+
113+
# DotCover is a Code Coverage Tool
114+
*.dotCover
115+
116+
# NCrunch
117+
_NCrunch_*
118+
.*crunch*.local.xml
119+
nCrunchTemp_*
120+
121+
# MightyMoose
122+
*.mm.*
123+
AutoTest.Net/
124+
125+
# Web workbench (sass)
126+
.sass-cache/
127+
128+
# Installshield output folder
129+
[Ee]xpress/
130+
131+
# DocProject is a documentation generator add-in
132+
DocProject/buildhelp/
133+
DocProject/Help/*.HxT
134+
DocProject/Help/*.HxC
135+
DocProject/Help/*.hhc
136+
DocProject/Help/*.hhk
137+
DocProject/Help/*.hhp
138+
DocProject/Help/Html2
139+
DocProject/Help/html
140+
141+
# Click-Once directory
142+
publish/
143+
144+
# Publish Web Output
145+
*.[Pp]ublish.xml
146+
*.azurePubxml
147+
# TODO: Comment the next line if you want to checkin your web deploy settings
148+
# but database connection strings (with potential passwords) will be unencrypted
149+
#*.pubxml
150+
*.publishproj
151+
152+
# Microsoft Azure Web App publish settings. Comment the next line if you want to
153+
# checkin your Azure Web App publish settings, but sensitive information contained
154+
# in these scripts will be unencrypted
155+
PublishScripts/
156+
157+
# NuGet Packages
158+
*.nupkg
159+
# The packages folder can be ignored because of Package Restore
160+
**/packages/*
161+
# except build/, which is used as an MSBuild target.
162+
!**/packages/build/
163+
# Uncomment if necessary however generally it will be regenerated when needed
164+
#!**/packages/repositories.config
165+
# NuGet v3's project.json files produces more ignoreable files
166+
*.nuget.props
167+
*.nuget.targets
168+
169+
# Microsoft Azure Build Output
170+
csx/
171+
*.build.csdef
172+
173+
# Microsoft Azure Emulator
174+
ecf/
175+
rcf/
176+
177+
# Windows Store app package directories and files
178+
AppPackages/
179+
BundleArtifacts/
180+
Package.StoreAssociation.xml
181+
_pkginfo.txt
182+
183+
# Visual Studio cache files
184+
# files ending in .cache can be ignored
185+
*.[Cc]ache
186+
# but keep track of directories ending in .cache
187+
!*.[Cc]ache/
188+
189+
# Others
190+
ClientBin/
191+
~$*
192+
*~
193+
*.dbmdl
194+
*.dbproj.schemaview
195+
*.jfm
196+
*.pfx
197+
*.publishsettings
198+
node_modules/
199+
orleans.codegen.cs
200+
201+
# Since there are multiple workflows, uncomment next line to ignore bower_components
202+
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
203+
#bower_components/
204+
205+
# RIA/Silverlight projects
206+
Generated_Code/
207+
208+
# Backup & report files from converting an old project file
209+
# to a newer Visual Studio version. Backup files are not needed,
210+
# because we have git ;-)
211+
_UpgradeReport_Files/
212+
Backup*/
213+
UpgradeLog*.XML
214+
UpgradeLog*.htm
215+
216+
# SQL Server files
217+
*.mdf
218+
*.ldf
219+
220+
# Business Intelligence projects
221+
*.rdl.data
222+
*.bim.layout
223+
*.bim_*.settings
224+
225+
# Microsoft Fakes
226+
FakesAssemblies/
227+
228+
# GhostDoc plugin setting file
229+
*.GhostDoc.xml
230+
231+
# Node.js Tools for Visual Studio
232+
.ntvs_analysis.dat
233+
234+
# Visual Studio 6 build log
235+
*.plg
236+
237+
# Visual Studio 6 workspace options file
238+
*.opt
239+
240+
# Visual Studio LightSwitch build output
241+
**/*.HTMLClient/GeneratedArtifacts
242+
**/*.DesktopClient/GeneratedArtifacts
243+
**/*.DesktopClient/ModelManifest.xml
244+
**/*.Server/GeneratedArtifacts
245+
**/*.Server/ModelManifest.xml
246+
_Pvt_Extensions
247+
248+
# Paket dependency manager
249+
.paket/paket.exe
250+
paket-files/
251+
252+
# FAKE - F# Make
253+
.fake/
254+
255+
# JetBrains Rider
256+
.idea/
257+
*.sln.iml
258+
259+
# CodeRush
260+
.cr/
261+
262+
# Python Tools for Visual Studio (PTVS)
263+
__pycache__/
264+
*.pyc
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
<PropertyGroup>
3+
<TargetFramework>net6.0</TargetFramework>
4+
<AzureFunctionsVersion>v4</AzureFunctionsVersion>
5+
<UserSecretsId>51dc0b9d-8e74-45ec-aebc-1d3d6934faf5</UserSecretsId>
6+
</PropertyGroup>
7+
<ItemGroup>
8+
<PackageReference Include="Microsoft.Azure.Functions.Extensions" Version="1.1.0" />
9+
<PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="5.0.0" />
10+
<PackageReference Include="Microsoft.NET.Sdk.Functions" Version="4.0.1" />
11+
</ItemGroup>
12+
<ItemGroup>
13+
<ProjectReference Include="..\..\src\DarkLoop.Azure.Functions.Authorize\DarkLoop.Azure.Functions.Authorize.csproj" />
14+
</ItemGroup>
15+
<ItemGroup>
16+
<None Update="host.json">
17+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
18+
</None>
19+
<None Update="local.settings.json">
20+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
21+
<CopyToPublishDirectory>Never</CopyToPublishDirectory>
22+
</None>
23+
</ItemGroup>
24+
</Project>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
using System;
2+
using System.IO;
3+
using System.Threading.Tasks;
4+
using Microsoft.AspNetCore.Mvc;
5+
using Microsoft.Azure.WebJobs;
6+
using Microsoft.Azure.WebJobs.Extensions.Http;
7+
using Microsoft.AspNetCore.Http;
8+
using Microsoft.Extensions.Logging;
9+
using Newtonsoft.Json;
10+
using DarkLoop.Azure.Functions.Authorize;
11+
using Microsoft.AspNetCore.Authentication;
12+
using Microsoft.Extensions.DependencyInjection;
13+
using System.Reflection;
14+
using System.Text;
15+
16+
namespace Darkloop.Azure.Functions.Authorize.SampleFunctions.V4
17+
{
18+
public static class TestFunction
19+
{
20+
[FunctionName("TestFunction")]
21+
[FunctionAuthorize]
22+
public static async Task<IActionResult> Run(
23+
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
24+
ILogger log)
25+
{
26+
var provider = req.HttpContext.RequestServices;
27+
var schProvider = provider.GetService<IAuthenticationSchemeProvider>();
28+
29+
var sb = new StringBuilder();
30+
foreach (var scheme in await schProvider.GetAllSchemesAsync())
31+
sb.AppendLine($"{scheme.Name} -> {scheme.HandlerType}");
32+
33+
sb.AppendLine();
34+
sb.AppendLine(Assembly.GetEntryAssembly().FullName);
35+
36+
return new OkObjectResult(sb.ToString());
37+
}
38+
}
39+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"dependencies": {
3+
"appInsights1": {
4+
"type": "appInsights"
5+
},
6+
"storage1": {
7+
"type": "storage",
8+
"connectionId": "AzureWebJobsStorage"
9+
}
10+
}
11+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"dependencies": {
3+
"appInsights1": {
4+
"type": "appInsights.sdk"
5+
},
6+
"storage1": {
7+
"type": "storage.emulator",
8+
"connectionId": "AzureWebJobsStorage"
9+
}
10+
}
11+
}

0 commit comments

Comments
 (0)